什么是极大似然估计
最大似然估计就是通过已知结果去反推最大概率导致该结果的参数。
- 极大似然估计是概率论在统计学中的应用。它提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。
- 举个栗子,已知你面前站着一个非洲兄弟,你判断他是黑皮肤,而不是黄皮肤,因为非洲人是黑皮肤的概率最高。这就是一种最大似然估计的思想。这里面,非洲人,就是已知的结果;黑皮肤,就是要推导的参数;而你根据黑皮肤的人中非洲人出现的概率最大去反推面前这个非洲人应该是黑皮肤,就是最大似然估计。
- 可是它跟机器学习有什么关系?因为,逻辑回归是一种监督式学习,是有标签y_train的,按上面的意思来说,就是有已知结果的,那么我们就可以从这个已知结果入手,去推导能最大概率导致该结果的参数
θ,只要我们得出了这个优秀的
θ,那我们的模型自然可以很准确的预测未知的数据了。
P(X∣Θ)=L(Θ∣X)
什么是逻辑回归Logistic Regression
为什么是sigmoid
- 逻辑回归虽然名字中有回归,但其实区别于线性回归,是一种分类算法。当我们想要通过连续的x得到离散的y值的时候,一种方法是使用阶跃函数,但阶跃函数并不连续,会影响到微分的计算。所以我们用一个数学特性更优秀的函数,sigmoid函数来处理分类问题。
- 主要的原理是在线性回归z的基础上加上了一层sigmoid函数
g(z)=1+e−z1 (
z=θTX),将负无穷到正无穷的y值映射到从0到1的区间,从而表示一个事情发生的概率,当
g(z)>0.5时,我们就认为这是预测结果为正向,反之为反向。
如何定义损失函数
为什么不用最小二乘法
- 损失函数是机器学习中绕不开的一个概念,何为损失函数呢,放我们把所有y的预测值与真实值之间的偏离程度,伴随着参数
θ变化,画出来一条曲线,这条曲线所对应的数学公式就是损失函数。损失函数的最小值所对应的
θ,就是我们想求的那个最优秀的
θ。所以搞清楚我们的模型原理,很大程度上就是搞清楚我们的损失函数。
- 在线性回归中,我们采取了一种计算方式叫做最小二乘法,但是这个方法并不适用于逻辑回归。sigmoid的加入让我们的损失函数变成一种非凸函数,中间有非常多的局部最小值,简单来说,就是不能像坐滑梯一样顺利的滑到全局最低点,而是会中途掉进某个坑里。
J(θ)=∑21(g(z)(i)−y(i))2
试试极大似然呢
- 既然最小二乘法行不通,那我们尝试一下回到开头提到的极大似然估计,看看能不能从这个角度解决我们当前的问题。 提醒:前方高能,开始推公式啦!!
- 首先,在逻辑回归中从0-1的
g(z)代表了我们的预测值,这个值越趋近于1,则是正向样本的预测确信度就越高。所以我们就把
g(z)视为正类的后验概率,自然
1−g(z)就是负类的后验概率。
P(y=1∣x;θ)=g(z)=g(θTx)=1+e−θTx1
P(y=0∣x;θ)=1−g(z)=1−g(θTx)=1−1+e−θTx1
- 因为y值非0即1,所以我们用指数的方式将这两个公式合并成一个公式
P(y∣x;θ)=g(z)y⋅(1−g(z))1−y
- 由此,我们就可以写出似然函数啦
L(θ)=i=1∏nP(y(i)∣x(i);θ)=i=1∏ng(z(i))y(i)⋅(1−g(z(i)))1−y(i)
- 为了简化运算,我们对等式两边取对数
l(θ)=lnL(θ)=lni=1∏nP(y(i)∣x(i);θ)=i=1∑ny(i)ln(g(z(i)))+(1−y(i))(1−g(z(i)))
- 等等,既然我们想要最大化似然函数,同时又想要最小化损失函数,所以让我们的损失函数等于负的似然函数,不就好了嘛!所以我们的损失函数可以写成
J(θ)=−l(θ)=−(i=1∑ny(i)ln(g(z(i)))+(1−y(i))ln(1−g(z(i))))
- 看着很头晕是不是,我们试着简化一下它,这次我们只考虑一个样本,这样就去掉了烦人的标记(i)
J(θ)=−(ylng(z)+(1−y)ln(1−g(z)))
- 因为y的值是非0即1的,所以这个公式注定有一半会因为前面的系数y=0或者y-1=0而消失,我们进一步将其拆分成可能的两种情况。
J(θ)=−lng(z)ify=1
J(θ)=−ln(1−g(z))ify=0
- 看一下函数图像,当y真实值等于1时,也就是图上蓝线的情况,是不是当我们预测的值越接近1,损失函数的值就越小,越远离1损失函数的值就越大? 甚至,当我们做出完美的预测——预测值为1时,此时损失函数的值为0,完全符合我们直觉上的认识。
知道了损失函数以后呢
现在,我们已经搞清楚了我们的损失函数是什么了,同时也知道了此时的损失函数是一个凸函数了,我们的大部分目的都已经达到,剩下的就是运用梯度下降法来更新参数
θ就好了。(:=代表赋值,
α代表学习速率,
x(0)是
θ0所对应的特殊情况,令其为1)
θj:=θj−α∂θj∂J(θ)
θj:=θj−αm1i=1∑m(h(x(i))−y(i))⋅x(i)
当按照公式上的方式不断的更新
θj的时候,就会看到损失函数的值会逐渐下降,当其慢慢下降到最小值附近开始收敛以后,我们就得到了我们想要的棒棒的逻辑回归预测模型啦!!结束!!OVER!!搞定收工!!
小结
逻辑回归做为机器学习中非常基础也是非常重要的模型,搞清楚它的原理对于我们今后的学习有很大的帮助,笔者刚开始学习MachineLearning的时候,在达叔的斯坦福课程中或许是为了减小学习的难度,达叔并没有直接提及最大似然这个概念,希望这篇文章能够对不了解它的人有所帮助!
Hello, Machine Learning !