(五)逻辑回归
定义:
当给定一个训练集(矩阵),如下:
| 年龄 | 工资 | 学历 | 逾期 |
|---|---|---|---|
| 20 | 4000 | 本科 | YES(Y=1) |
| 25 | 5000 | 专科 | NO(Y=0) |
| 22 | 6000 | 本科 | NO |
| 28 | 5000 | 专科 | YES |
| 27 | 8000 | 本科 |
我们需要去预测最后一个人是否会逾期,归根到底就是要学习从输入到输出的映射$$f:X \rightarrow Y$$
最后求出一个条件概率$P(Y|X)$,即$P(Y=1|27,8000,本科)$,其概率大则逾期可能性大,或者说就是比较$P(Y=1|27,8000,本科)$和$P(Y=0|27,8000,本科)$的大小。
那么能否用线性回归来表示呢?比如:$P(Y=1)=w^Tx+b$,观察过值域后会发现是不行的,概率不大于1,而右边值域为负无穷到正无穷,为了使得等号成立,则需要采用逻辑函数$\sigma$,$$\sigma(x)=\frac{1}{1+e^{-x}}$$

逻辑函数$\sigma(x)$的值域为$(0,1)$满足概率的值域范围,将$w^Tx+b$作为自变量替换即可,条件概率即为:
$$P(Y|X)=\frac{1}{1+e^{-(w^T+b)}}$$
对于二分类问题来说:
$$P(Y=1|X)=\frac{1}{1+e^{-w^T+b}}$$
$$P(Y=0|X)=\frac{e^{-w^T+b}}{1+e^{-w^T+b}}$$
两个式子可以合并为:
$P(y|x,w)=p(y=1|x,w)^y[1-p(y=1|x,w)]^{(1-y)}$
合并的式子可这样理解:当$y=1$时:$p(y=1|x,w)=p(y=1|x,w)\times1$
当$y=0$时:$p(y=0|x,w)=1-p(y=1|x,w)$
逻辑函数为线性分类器
证明如下:

这是感知机里面的图片,相同的,逻辑回归也是将平面上各种点进行了分类,为了证明逻辑回归是线性的分类器,我们将落在分离平面上的点组成的线方程给求出来,是直线则是线性分类,落在分离平面上的点有一个特点,它到两边的距离都差不多,也就是说它是$y=1$和$y=0$的概率相等:
$$P(Y=1|X)=P(Y=0|X)$$
$$\frac{1}{1+e^{-w^T+b}}=\frac{e^{-w^T+b}}{1+e^{-w^T+b}}$$
推导可得:
$$w^Tx+b=0$$
即:分离平面(边界)为线性分类器
逻辑回归的目标函数:
前面已经定义了合并后的:
$$P(y|x,w)=p(y=1|x,w)^y[1-p(y=1|x,w)]^{1-y}$$
下面我们要来由训练集训练出最好的权重$(w)$和偏置$(b)$,从而使得能够最好的拟合我们的数据集$(X)$,因此我们需要最大化:给定样本数据的$x_i,w,b$情况下,对应为label$(y_i)$的概率,也就是条件概率$p(y_i|x_i,w,b)$(最大似然),想让每一项都最大,那么每个样本条件概率相乘也就最大。
即最大化目标函数:
$$\hat{w},\hat{b}=armax_{w,b}\prod_{i=1}^{n}p(y_i|x_i,w,b)$$(寻找$w,b$使得连乘式最大化)
$armax_{w,b}\prod_{i=1}^{n}p(y_i|x_i,w,b)=argmax_{w,b}\log(\prod_{i=1}^{n}p(y_i|x_i,w,b))=argmax_{w,b}\sum_{i=1}^{n} \\log p(y_i|x_i,w,b)$
通常我们不喜欢去求最大值,而是转化为最小值求解,即:
$$argmin_{w,b}=-\sum_{i=1}^{n}\log{p(y_i|x_i,w)}$$
逻辑回归的梯度下降法:
$argmin_{w,b}-\sum_{i=1}^{n}\log{p(y_i|x_i,w)} \\ =argmin_{w,b}-\sum_{i=1}^{n}\log p(y_i=1|x,w)^{y_i}[1-p(y_i=1|x,w)]^{1-y_i} \\ =argmax_{w,b}-\sum_{i=1}^{n}y_i\log p(y_i=1|x,w)+(1-y_i)\log p(y_i=1|x,w)$
令$-\sum_{i=1}^{n}y_i\log \sigma (w^Tx+b)+(1-y_i)\log \sigma (w^Tx+b)$为$L(w,b)$
对权重$w$求导: 求导知识:$\begin{cases}\sigma(x)=\frac{1}{1+e^{-x}}\\sigma^{’}(x)=\sigma(x)[1-\sigma(x)]\\ (\log x)^{’} =\frac{1}{x} \end{cases}$
$\frac{\partial L(w,b)}{\partial w}=-\sum_{i=1}^{n}y_i\frac{\sigma(w^Tx+b)[1-\sigma(w^Tx+b)]}{\sigma(w^Tx+b)}x_i+(1-y_i)\frac{-\sigma(w^Tx+b)[1-\sigma(w^Tx+b)]}{1-\sigma(w^Tx+b)}x_i \\ =-\sum_{i=1}^{n}y_i[1-\sigma(w^Tx+b)]x_i+(y_i-1)\sigma(w^Tx+b)x_i \\ =-\sum_{i=1}^{n}[y_i-\sigma(w^Tx+b)]x_i \\ =\sum_{i=1}^{n}[\sigma(w^Tx+b)-y_i]x_i$
对偏置$b$求导:
$\frac{\partial L(w,b)}{\partial b}=\sum_{i=1}^{n}[\sigma(w^Tx+b)-y_i]$
(两者相比较,相差一个外部$x_i$相乘)
梯度下降:
初始化$w^1,b^1$
$For :t=1,2…$
$w^{t+1}=w^t-\eta \sum_{i=1}^{n}[\sigma(w^Tx+b)-y_i]x_i \\ b^{t+1}=b^t-\eta \sum_{i=1}^{n}[\sigma(w^Tx+b)-y_i]$
梯度下降方式又分为:$\begin{cases}1.标准梯度下降 \\ 2.随机梯度下降 \\ 3.Mini-batch梯度下降 \end{cases}$
标准梯度下降是在权值更新前对所有样例汇总误差,而随机梯度下降的权值是通过考查某个训练样例来更新的,而mini-batch则是两者的折中。
一般来说不管是机器学习还是深度学习算法,我们一般都常用mini-batch,其原因在于,假如我们每次将全部样本丢进去计算,此时的计算量(例如导数、w、b、激活值等等缓存值)占用内存相当之大!对于一般计算机而言承担不起,所以mini-batch的选择其实主要还是根据自身硬件水平,比如深度学习中用GPU时要考虑显卡大小,显卡越好,mini-batch可以越大(一般来说是这样)。
参考博客:
https://www.cnblogs.com/limitlessun/p/8611103.html
https://www.pkudodo.com


