【机器学习算法推导】逻辑回归

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hemk340200600/article/details/85162547

逻辑回归(logistic regression)是分类算法的一种,通过形成决策边界,达到对数据进行分类的效果。

算法思想

逻辑回归中,以二分类为例,最终预测得到的是一个分类,也就是0或者1。若目标函数 h θ = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n h_θ=θ_0+θ_1x_1+θ_2x_2+...+θ_nx_n ,最终得到的值,往往不可能刚好是0或者1,因此我们需要做一个映射,使得目标分数在刚好映射到0和1。这里用到一个新的函数 g ( z ) = 1 1 + e z g(z)=\frac{1}{1+e^{-z}} ,该函数为Sigmoid函数,它的图像如下:
在这里插入图片描述
可以发现,该函数在x无穷大时,函数值趋近于1,x无穷小时,函数值趋近于0,这符合我们的模型。并且,函数在x=0时,函数值为0.5,我们恰好可以x=0为界,将x大于0的输入值预测为1,将x小于0的输入值预测为0。
g ( z ) = d d z 1 1 + e z = e z ( 1 + e z ) 2 = 1 ( 1 + e z ) ( 1 1 1 + e z ) = g ( z ) ( 1 g ( z ) ) \begin{aligned}g^{'}(z) &=\frac{d}{dz}\frac{1}{1+e^{-z}}\\ &=\frac{e^{-z}}{(1+e^{-z})^2}\\ &=\frac{1}{(1+e^{-z})}(1-\frac{1}{1+e^{-z}})\\ &=g(z)(1-g(z)) \end{aligned}

因此,我们的目标函数变为 h θ ( x ) = g ( θ T x ) = 1 1 + e θ T x h_θ(x)=g(θ^Tx)=\frac{1}{1+e^{-θ^Tx}} ,此时的 h θ ( x ) h_θ(x) 相当于对于新输入样本预测为1的概率。当一组θ确定时,其函数图像也能够确定下来,此时的函数图像被称为“决策边界”,比如 h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_θ(x)=θ_0+θ_1x_1+θ_2x_2 的一个决策边界可能是 x 1 + 2 x 2 = 0 x_1+2x_2=0 ,这时候决策边界大于0的一边,也就是输入新样本使得 x 1 + 2 x 2 0 x_1+2x_2\geq 0 被划分为分类“1”, x 1 + 2 x 2 < 0 x_1+2x_2<0 的一边被划分为分类“0”。
那么如何确定合适的θ来确定生成决策边界呢?我们选取合适的损失函数
c o s t ( h θ ( x ) , y ) = { l o g ( h θ ( x ) ) y = 1 l o g ( 1 h θ ( x ) ) y = 0 cost(h_θ(x),y)=\begin{cases} -log(h_θ(x)) & y=1 \\ -log(1-h_θ(x)) & y=0 \end{cases}
l o g ( h θ ( x ) ) -log(h_θ(x)) 的函数图像如下:
在这里插入图片描述
l o g ( 1 h θ ( x ) ) -log(1-h_θ(x)) 的函数图像如下:
在这里插入图片描述
对于y=1的情况,从图像上可以发现,当我们的预测值为1的代价为0,当我们的预测值接近0时,被赋予极高的代价惩罚。
对于y=0的情况,从图像上可以发现,当我们的预测值为0的代价为0,当我们的预测值接近1时,被赋予极高的代价惩罚。
这符合我们的对损失函数的直观感受,并且为了方便计算,我们进一步将损失函数统一合并成以下的形式:
c o s t ( h θ ( x ) , y ) = y l o g ( h θ ( x ) ) ( 1 y ) l o g ( 1 h θ ( x ) ) cost(h_θ(x),y)=-ylog(h_θ(x))-(1-y)log(1-h_θ(x))
因此对于整个函数的损失函数,我们定义为
J ( θ ) = 1 m [ i = 1 m y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 y ( i ) ) l o g ( 1 h θ ( x ( i ) ) ) ] J(θ)=-\frac{1}{m}[\sum_{i=1}^my^{(i)}log(h_θ(x^{(i)}))+(1-y^{(i)})log(1-h_θ(x^{(i)}))]
最后使用我们的老朋友——梯度下降算法求解该损失函数,就可以求出最佳的θ使得代价最小,从而得到我们想要的决策边界。

损失函数推导

输入x分类结果为类别1的概率为 P ( y = 1 x ; θ ) = h θ ( x ) P(y=1|x;\theta)=h_\theta(x)
输入x分类结果为类别0的概率为 P ( y = 0 x ; θ ) = 1 h θ ( x ) P(y=0|x;\theta)=1-h_\theta(x)
两个表达式合并为 P ( y x ; θ ) = ( h θ ( x ) ) y ( 1 h θ ( x ) ) 1 y P(y|x;\theta)=(h_\theta(x))^y(1-h_\theta(x))^{1-y}

极大似然估计

极大似然估计目的是利用已知的样本结果,反推出导致当前结果的最大概率的参数值。极大似然估计基于这样一种现象:假如有两个箱子,一个箱子里面有1颗黑球999颗白球,另一个箱子里面有999颗黑球1颗白球,并告诉你现在取出一颗黑球,问黑球是从哪个箱子取出来的。从第一印象来判断,我们肯定会觉得是有999颗黑球的箱子取出来的可能性比较大,并且也符合我们的经验事实。这便是“极大似然”的由来。
构造似然函数 L ( θ ) \mathcal{L} (\theta) ,求解使得样本概率最大的 θ \theta 值:
L ( θ ) = p ( y X ; θ ) = i = 1 m p ( y ( i ) x ( i ) ; θ ) = i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ( 1 h θ ( x ( i ) ) ) 1 y ( i ) \begin{aligned}\mathcal{L} (\theta) &=p(\vec y|X;\theta)\\ &=\prod_{i=1}^mp(y^{(i)}|x^{(i)};\theta)\\ &=\prod_{i=1}^m(h_\theta(x^{(i)}))^{y^{(i)}}(1-h_\theta(x^{(i)}))^{1-y^{(i)}} \end{aligned}
L ( θ ) L(\theta) 取对数得
l ( θ ) = l o g L ( θ ) = i = 1 m y ( i ) l o g h ( x ( i ) ) + ( 1 y ( i ) ) l o g ( 1 h ( x ( i ) ) ) \begin{aligned} \mathcal{l}(\theta) &=log\mathcal{L}(\theta) \\ & = \sum_{i=1}^my^{(i)}logh(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)})) \end{aligned}
对取得的 l ( θ ) \mathcal{l}(\theta) 求偏导,得
θ j l ( θ ) = ( y 1 g ( θ T x ) ( 1 y ) 1 1 g ( θ T x ) ) θ j g ( θ T x ) = ( y 1 g ( θ T x ) ( 1 y ) 1 1 g ( θ T x ) ) g ( θ T x ) ( 1 g ( θ T x ) ) θ j θ T x = ( y ( 1 g ( θ T x ) ) ( 1 y ) g ( θ T x ) ) x j = ( y h θ ( x ) ) x j \begin{aligned} \frac{∂}{∂\theta_j}\mathcal{l}(\theta) &=(y\frac{1}{g(\theta^Tx)}-(1-y)\frac{1}{1-g(\theta^Tx)})\frac{∂}{∂\theta_j}g(\theta^Tx) \\ &=(y\frac{1}{g(\theta^Tx)}-(1-y)\frac{1}{1-g(\theta^Tx)})g(\theta^Tx) (1-g(\theta^Tx))\frac{∂}{∂\theta_j}\theta^Tx\\ &=(y(1-g(\theta^Tx))-(1-y)g(\theta^Tx))x_j\\ &=(y-h_\theta(x))x_j \end{aligned}
对于似然函数,本来我们应该是使用梯度上升的方法求出似然函数的最大值,但是我们可以对其做一点处理,将其变为梯度下降,用梯度下降的方法来求解。
定义损失函数 J ( θ ) = 1 m l ( θ ) J(\theta)=-\frac{1}{m}\mathcal{l}(\theta) ,得
θ j J ( θ ) = 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x ( i ) \frac{∂}{∂\theta_j}J(\theta)=\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}
最终得到 θ \theta 的迭代公式为
θ j : = θ j α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x ( i ) \theta_j:=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}

多分类问题

对于多分类问题,如何使用逻辑回归来解决呢?实际上,我们可以将其看成是多个二分类任务,我们可以构造这样的分类器,他们分别划分分类i和非分类i,因此对于一个三分类任务来说,就有4个这样的分类器,每个分类器识别出其中1种类型,而将其他三种类型视为同一种。这样的话,我们只需要训练4个分类器,并在新样本到来的时候,将4个分类器运行一遍,将其中预测值最大的那个分类器对应的分类作为我们的预测值即可。

猜你喜欢

转载自blog.csdn.net/Hemk340200600/article/details/85162547