5.Logistic回归
5 Logistic回归
分类
在二分类问题中,样本的标签通常是$y\in {0,1}$,其中0表示负类,1表示正类
当我们对分类问题使用线性回归时,这并不是一种好方法。当我们把阈值设为0.5时,即当$h_{\theta}(x)\ge0.5时,输出y=1$表示正类;当$h_{\theta}(x)<0.5时,输出y=0$表示负类。我们拟合的函数可能是图中蓝色线条,会将部分标签为1的预测成0。结果性能很差劲。

在二分类问题中,标签是0或1。但线性回归的输出$h_{\theta}(x)可能大于1或小于0$.在logistic回归中,$0\le h_{\theta}(x)\le1$。虽然名字叫做回归,但这是一种用于分类的算法。

假设函数
在线性回归中,我们的假设函数是$h_\theta(x)=\theta^Tx$,为了让输出介于0和1之间,我们可以在$\theta^Tx$上套一个g(z),这里$g(z)=\frac{1}{1+e^{-z}}$, 这里的g(z)称为sigmoid函数或logistic函数;所以我们的假设函数为$h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}$,接下来就是寻找合适的$\theta$去拟合数据

我们的输出$h_\theta(x)$解释为在特征向量为$x$的前提下,y=1(为正类)的可能性。eg,当$h_\theta(x)=0.7$时,表示该病人有0.7的可能性是恶性肿瘤。即我们的输出$h_\theta(x)=P(y=1|x;\theta)$.因为为二分类问题,所以$P(y=0|x;\theta)+P(y=1|x;\theta)=1$, 可得$P(y=0|x;\theta)=1-P(y=1|x;\theta).$

决策边界
当模型的预测为1的时候(或者说预测为1的可能性更大的时候$h_\theta(x)\ge0.5$),观察$g(z)$的图像可知,即当$\theta^Tx\ge0$时,预测为1;当$\theta^Tx<0$时,预测为0

假设我们的参数$\theta$为[-3; 1; 1]。预测为1时,即当$\theta^Tx\ge0$时($-3+x_1+x_2\ge0$),为图像中的右上半区域;同理左下半区域预测为0.
我们称$-3+x_1+x_2=0$为决策边界。当参数$\theta$确定后,决策边界就确定了下来,不依赖于数据集。

我们可以添加额外的高阶多项式项,来拟合更复杂的决策边界。
在图一中,假设参数$\theta=[-1;0;0;1;1]$,决策边界即为$x_1^2+x_2^2=1$,$x_1^2+x_2^2\ge1$时的区域决策为1.

代价函数
在logistic回归中,我们的假设函数为$h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}$, 如何去拟合参数$\theta$呢

若我们直接使用线性回归中的代价函数,由于假设函数是非线性的,代价函数可能是非凸函数(会有局部最小值),梯度下降不能保证找到全局最小值,如左图;线性回归中线性函数是线性的,代价函数是凸函数(只有全局最小值),梯度下降一定能找到全局最小值(若学习率合适的话),如右图。

我们换成交叉熵损失,当y=1时,由于$h_\theta(x)$的取值范围在0~1,$cost(h_\theta(x),y)$的图像如下.

当y=0时,由于$h_\theta(x)$的取值范围在0~1,$cost(h_\theta(x),y)$的图像如下.

使用交叉熵损失后,总体上代价函数$J(\theta)$是凸函数,只有一个全局最小值,可以使用梯度下降进行参数的拟合。
因为y的取值只有0和1,将以上的两个式子可以简化成下面的一个式子,即单个样本的损失函数$cost(h_\theta(x),y)=-ylog(h_\theta(x))-(1-y)log(1-h_\theta(x))$

梯度下降
对$J(\theta)$使用梯度下降算法,计算$J(\theta)$对$\theta_j$的偏导(下图中的绿框)。得到参数$\theta_j$的更新公式如下.可以用矢量化的方法进行参数的同步更新。
发现logistic回归和线性回归参数更新的公式是相同的。

高级优化算法
除梯度下降外,还有conjugate gradient(共轭梯度法),BFGS,L-BFGS等。这些高级算法的优点是:(1)不需要手动选择学习率$\alpha$(2)比梯度下降更快。缺点:更复杂
优化算法的步骤如下:

多元分类:一对多
当我们要进行3分类时,我们可以分别训练三个logistic回归模型。我们制作伪数据集,将第一类标记为正类,其余两类标记为负类,训练得到分类器1为$h_\theta^{(1)}(x)=P(y=1|x:\theta)$即当特征向量为x时,为第一类的可能性;同理训练$h_\theta^{(2)}(x)$和$h_\theta^{(3)}(x)$.

总结:对于n分类问题,我们训练n个分类器。第i个分类器$h_\theta^{(i)}(x)$表示$y=i$的可能性。当要预测新的输入$x$时,将$x$输入n个分类器,全部进行判别,选输出最大那个,表示预测的类别。
