逻辑回归背后的数学原理
2018-08-15 本文已影响0人
海之瑶
什么是逻辑回归
逻辑回归用于分类问题。在分类问题中,我们尝试预测目前观测目标属于哪一类,它会产生一个离散的二元结果y∈{0,1}。而线性回归模型产生的预测值为z=θTx是实数值,于是我们引入一个新的模型,使输出变量z的值到始终在0和1之间,于是便找到了Sigmoid function。
Sigmoid function的图像是一条值在0-1之间的S形曲线,如图:
Sigmoid function
通常,我们把Sigmoid fuction计算得到的值大于等于0.5的归为类别1,小于0.5的归为类别0。从Sigmoid function图像可以看出,当z≥0时,g(z)≥0.5;当z<0时,g(z)<0.5。
合起来,我们得到逻辑回归模型的假设:
逻辑回归的代价函数
我们第一个想到的自然是模仿线性回归的做法,利用误差平方和来当代价函数:
但是问题在于,当我们将 带入到这样定义了的代价函数中时,我们得到的代价函数将是一个非凸函数(non-convex function)。这意味着我们的代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值。我们需要寻找一个凸函数作为代价函数。
那么我们不妨来换一个思路解决这个问题。前面说到,我们可以将hθ(x)视为y=1的后验概率估计,所以可以得到:
P(y=1|x;θ) = hθ(x) = g(θTx) = g(z)
P(y=0|x;θ) = 1- g(z)
将这两式写成一般形式:P(y|x;θ) = g(z)y(1- g(z))(1-y)
接下来我们就要用极大似然估计来根据给定的训练集估计出参数θ。
为了简化运算,我们对上面这个等式的两边都取一个对数 。 我们现在要求的是使得l(θ)最大的θ,而代价函数是求是J(θ)最小的θ。在l(θ)前加个负号,即可变为最小的,所以代价函数出现了,J(θ) = -l(θ)。
为了更好地理解代价函数,我们取一个样本来看:
J(g(z),y; θ)=− (y ln(g(z)) + (1−y) ln (1−g(z)))
也就是说:
代价函数图像为:
从图中不难看出,如果样本的值是1的话,估计值g(z)越接近1付出的代价就越小,反之越大;同理,如果样本的值是0的话,估计值g(z)越接近0付出的代价就越小,反之越大。
利用梯度下降法求参数
在得到这样一个代价函数以后,我们便可以用梯度下降算法来求得能使代价函数最小的参数了。算法为:Sigmoid function有一个性质:g'(z)=g(z)*(1-g(z)),在梯度下降过程中会用到。
所以,在使用梯度下降法更新权重时
注:虽然得到的梯度下降算法表面上看上去与线性回归的梯度下降算法一样, 但是这里的 hθ(x)=g(θTx)与线性回归中不同,所以实际上是不一样的。