第3.4节 逻辑回归(目标函数推导)
各位朋友大家好,欢迎来到月来客栈,我是掌柜空字符。
本期推送内容目录如下,如果你觉得本期内容对你所有帮助欢迎点个赞、关个注、下回更新不迷路。
所有示例代码均可从该仓库获取:https://github.com/moon-hotel/MachineLearningWithMe
3.4 目标函数推导 3.4.1 映射函数 3.4.2 概率表示 3.4.3 极大似然估计 3.4.4 求解梯度 3.4.5 从零实现二分类逻辑回归 3.4.6 从零实现多分类逻辑回归 3.4.7 小结
3.4 目标函数推导
在前面3节的内容中,笔者详细地介绍了什么是逻辑回归、如何进行多分类及分类任务对应的评价指标等,即完成了前面阶段一的学习,但是到目前为止仍旧有一些问题没有解决,映射函数 是什么样的?逻辑回归的目标函数是怎么来的?如何自己求解并实现逻辑回归?只有在这3个问题得到解决后,整个逻辑回归算法的主要内容才算学习完了。
3.4.1 映射函数
前面笔者只是介绍了通过一个函数将特征的线性组合映射到区间,那么这个是什么样的呢?如图3-9所示,这便是的函数图形,其也被称为Sigmoid()函数。
Sigmoid()函数的数学定义如下
其中,而之所以选择Sigmoid()的原因在于:①其连续光滑且处处可导;②Sigmoid()函数关于点(0,0.5)中心对称;③Sigmoid()函数的求导过程简单,其最后的求导结果为。
根据式(3.8)可以得出其实现代码如下:
def g(z):
return 1 / (1 + np.exp(-z))
可以看到对于Sigmoid()的实现也非常简单,1行代码就能完成。
3.4.2 概率表示
在介绍完Sigmoid()函数后就需要弄清楚逻辑回归中的目标函数到底是怎么得来的。此时,可以设
其中和均为一个列向量,的含义为当给定参数和时,样本属于这个类别的概率为。此时可以发现,对于每个样本来讲都需要前面两个等式来衡量每个样本所属类别的概率,为了更加方便地表示每个样本所属类别的概率,可以改写为如下形式:
这样一来,不管样本属于哪个类别,都可以通过式(3.10)进行概率计算。
进一步,我们知道在机器学习中是通过给定训练集,即来求得其中的未知参数和。换句话说,对于每个给定的,我们已经知道了其所属的类别,即的这样一个分布结果我们是知道的。那么什么样的参数和能够使已知的这样一个结果(分布)最容易出现呢?也就是说给定什么样的参数和,使当输入这个样本时,最能够产生已知类别标签这一结果呢?
3.4.3 极大似然估计
上面绕来绕去说了这么多,其目的只有一个,即为什么要用似然函数进行下一步计算。由3.4.2节内容分析可知,为了能够使这样一个结果最容易出现,应该最大化如下似然函数 [1]
对式(3.11)两边同时取自然对数有
注意:
由于我们的目标是最大化式(3.11),也就等价于最大化式(3.12),因此当式(3.12)取得最大值时,其所对应的参数和就是逻辑回归模型所需要求解的参数。由此便得到了逻辑回归算法的目标函数
从式(3.13)可以发现我们在前面加了一个负号,因此求解逻辑回归的最终目的就变成了最小化式(3.13)。
3.4.4 求解梯度
在求解线性回归中,笔者首次引入并讲解了梯度下降算法,知道可以通过梯度下降算法来最小化某个目标函数。当目标函数取得(或接近)其函数最小值时,我们便得到了目标函数中对应的未知参数。由此可知,欲通过梯度下降算法来最小化函数式(3.13),则必须先计算并得到其关于各个参数的梯度,所以接下来就需要求解并得到目标函数关于各个参数的梯度。目标函数对的梯度为