逻辑回归函数

逻辑回归需要将函数的取值落在 [0,1]这个区间上,那怎么样才能让这个函数取值落在 [0,1]之间呢?

逻辑(logistic)函数其实也就是经常说的 sigmoidsigmoid 函数,它的几何形状是一条S型曲线。

f(x)=11+exf(x)=\frac{1}{1+e^{-x}}

该函数具有如下的特性:当 xx 趋近于负无穷时,yy 趋近于0;当 xx 趋近于正无穷时,yy 趋近于1;当 x=0x= 0 时,y=0.5y=0.5

因此该函数非常适合用来作为逻辑回归模型的假设函数,原来的假设函数是:hθ(x)=θTxh_\theta(x)=\theta^Tx,通过 sigmoidsigmoid 函数进行变换之后,就能得到一个新的假设函数:

hθ(x)=11+eθTxh_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}

优点:

  1. SigmoidSigmoid 函数的输出映射在(0,1)之间,单调连续,输出范围有限,优化稳定,可以用作输出层。
  2. 求导容易。

缺点:

  1. 由于其软饱和性,容易产生梯度消失,导致训练出现问题。
  2. 其输出并不是以0为中心的。

决策边界

在假设函数中,我们取的值一般都是一个连续的值,但我们要分类的结果 yy 是离散的,不是0就是1。

因此通过以一个数值为界限,例如以0.5为界限,当 sigmoidsigmoid 函数取值大于等于0.5时取1,否则取0。

线性决策边界

假设在一个二维平面上有这样一堆点,平面上的所有点是由横坐标、纵坐标两个自变量确定的。如下图:

假设此时我们已经拟合好了参数 θ\theta ,值为 [311]\begin{bmatrix} -3 \\ 1 \\ 1 \end{bmatrix},画出该假设函数的图像,这条直线就是决策边界,分类器就是通过这个决策边界进行分类的。

非线性决策边界

假设这些点如下图所示,很明显这不能用一条直线来作为决策边界,因此就需要更加复杂的函数来进行拟合。

如:hθ(x)=g(θ0+θ1x1+θ2x2+θ3x12+θ4x22)如:h_{\theta}(x)=g(\theta_0 + \theta_1x_1 + \theta_2x_2 + \theta_3x_1^2 + \theta_4x_2^2)

通过拟合出参数 θ=[10011]\theta=\begin{bmatrix} -1\\0\\0\\1\\1 \end{bmatrix} 后,假设函数表示的图像就变成了一个圆,这个圆也就是我们的决策边界。

总结

通过逻辑回归寻找决策边界,而决策边界由函数的形式和函数的参数共同决定。

逻辑回归中的代价函数

代价函数

我们要想找到最合适的参数,就要有一个衡量参数好坏的标准,而这个标准我们就叫做代价函数(cost function)

假设有 mm 个训练样本:(x(1),y(1)),  (x(2),y(2)),  ,  (x(m),y(m))(x^{(1)},y^{(1)}),\;(x^{(2)},y^{(2)}),\;\ldots,\;(x^{(m)},y^{(m)}),每个 xx 都是一个向量:x[x0x1xn]x0=1x\in \begin{bmatrix} x_0\\x_1\\\ldots\\x_n \end{bmatrix}\quad x_0=1,对应的每一个 yyy{0,  1}y \in \{0,\;1\};假设函数如下:

hθ(x)=11+eθTxh_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}

那么应该如何为这个假设函数选择合适的 θ\theta 值呢?

之前的线性回归的代价函数为:J(θ)=1mi=1m12(hθ(x(i))y(i))2J\left(\theta\right)=\dfrac{1}{m}\sum ^{m}_{i=1} \frac{1}{2} \left( h_{\theta }\left( x^{\left( i\right) }\right) -y^{\left( i\right) }\right) ^{2},这个函数的意思是在 θ\theta 参数下的假设函数对自变量的预测值实际值之间的差距大小的一半,最后把 mm 个差距求和,其中的 cost(hθ(x),  y)=12(hθ(x(i))y(i))2cost(h_\theta(x),\;y)=\frac{1}{2}(h_{\theta}(x^{(i)})-y^{(i)})^{2} 就是第 ii 个样本所花费的代价。

但是在逻辑回归中,因为假设函数是非线性的,从而导致这个代价函数不是一个凸函数,它的图像大概长这样,在使用梯度下降法求解最小值时及其容易陷入局部最优,从而导致代价函数无法轻易收敛到全局最优。

因此我们需要将这个代价 cost(hθ(x),  y)cost(h_\theta(x),\;y) 进行改写:

cost(hθ(x),  y)={log(hθ(x)), if  y=1log(1hθ(x)),if  y=0cost(h_\theta(x),\;y)=\begin{cases}-\log( h_{\theta}(x)),\quad\quad\enspace\ if\;y=1 \\ -\log ( 1-h_\theta(x)),\quad if\;y=0 \end{cases}

然后将这两种情况进行合并即可得到:

cost(hθ(x),  y)=ylog(hθ(x))(1y)log(1hθ(x))cost(h_\theta(x),\;y)=-y\log(h_\theta(x))-(1-y)\log(1-h_\theta(x))

  • y=1y=1 时,hθ(x)h_\theta(x) 越接近1,代价越小;越接近0,代价越大
  • y=0y=0 时,hθ(x)h_\theta(x) 越接近1,代价越大;越接近0,代价越小

显然,这个函数明显符合我们的要求,并且该函数是一个单调函数,代入到代价函数中后得到的图像为一个凸函数,有利于梯度下降得到最小值。

参数拟合

有了上述的代价函数后,我们就可以对其中的 θ\theta 参数进行拟合了。

J(θ)=1m[i=1my(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]J(\theta)=-\frac{1}{m}[\sum_{i=1}^my^{(i)}\log(h_\theta(x^{(i)}))+(1-y^{(i)})\log(1-h_\theta(x^{(i)}))]

我们可以使用梯度下降法进行拟合,求出 minθJ(θ)\min\limits_{\theta}J(\theta) ,从而得到对应的参数值,和线性回归的求法一样,都是给出一个初始的参数 θ\theta ,然后往梯度下降的方向走 α\alpha 倍的一小步,不停的进行迭代,最后找到最低点。

多分类问题

上述我们解决的都是二分类问题,而面对多分类问题,数据集看起来是这样的:

对于上述多分类问题,我们要将其转换为3个独立的二分类问题,也称为“一对余”方法,这样就将这个三分类问题转换成了3个标准的逻辑回归二分类问题。

最后我们就拟合了3个假设函数作为分类器:

hθi(x)=P(y=ix;θ)(i=1,2,3)h_\theta^{i}(x)=P(y=i|x;\theta)\quad (i=1,2,3)

然后在给定 xx 后,得到的是属于第 ii 个分类的概率,这个时候只需要选择可信度最大的作为 xx 所属的分类即可,也就是求 maxihθi(x)\max\limits_ih_\theta^i(x)