![Python机器学习算法: 原理、实现与案例](https://wfqqreader-1252317822.image.myqcloud.com/cover/317/27563317/b_27563317.jpg)
2.1 Logistic回归
2.1.1 线性模型
Logistic回归是一种广义线性模型,它使用线性判别式函数对实例进行分类。举一个例子,图2-1中有两种类别的实例,o表示正例,x表示负例。
我们可以找到一个超平面将两类实例分隔开,即正确分类,假设超平面方程为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P29_11203.jpg?sign=1739098084-3cOHgShdLCCQFF1Rrw0VZZ8EPvHSMkxh-0-5ad51668b6d97a345c14779544f237b1)
其中,为超平面的法向量,
为偏置。
超平面上方的点都满足:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P29_11212.jpg?sign=1739098084-Lzm7ndo3RP8FYTAfr111s8kHz2l0x4lr-0-4e582024949f8d13eee4b2dab61fc26d)
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P30_11221.jpg?sign=1739098084-9A3AbbDISymGvrzhzcKFOKVvozonNRwP-0-d585374b8ea0d3af20b439a7d583ab41)
图2-1
而超平面下方的点都满足:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P30_11225.jpg?sign=1739098084-XFDD8AgQS9sqsvTRFerbAO8eH9n5Kxly-0-998babc5ba140219427b5dad47c0235a)
这意味着,我们可以根据以下的线性函数的值(与0的比较结果)判断实例的类别:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P30_11231.jpg?sign=1739098084-CAJiTihf4Ctwfn3hRrKnCbVbz5LqOnrv-0-6f187d17cb5c4a0a7d0c4af1cee8daf5)
分类函数以为输入,输出预测的类别:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P30_11237.jpg?sign=1739098084-0fcLRIzZ1HOL1IKj6MTP0bC3cpXMr9k8-0-32c1548e90b42c141b8b1ee051cbf4d6)
以上便是线性分类器的基本模型。
2.1.2 logistic函数
显然,最理想的分类函数为单位阶跃函数:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P30_11242.jpg?sign=1739098084-glgIk0GYf8TWEhU9PQ7I7z3c3pG4UVWH-0-ab92b00aad0995c4b6ccccb10764d17e)
但单位阶跃函数作为分类函数有一个严重缺点:它不连续,所以不是处处可微,这使得一些算法不能得以应用(如梯度下降)。我们希望找到一个在输入输出特性上与单位阶跃函数类似,并且单调可微的函数来替代阶跃函数,logistic函数便是一种常用替代函数。
logistic回归函数定义为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P31_11257.jpg?sign=1739098084-gCNUOu1M9RFkTr0nmpimHdwqp5aMezwj-0-b1709633feca67b8f01a4f0993b944f4)
其函数图像如图2-2所示。
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P31_11260.jpg?sign=1739098084-HfPMtwUPYDo0EdPJRbsS825xowKRiocK-0-dbf3a879edbe7ac69064eea30c4e8b8e)
图2-2
logistic函数是一种Sigmoid函数(S型)。从图2-2可以看出,logistic函数的值域在(0, 1)之间连续,函数的输出可视为条件下实例为正例的条件概率,即:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P31_11267.jpg?sign=1739098084-sdX1T6FFAWAlAzmezve8zaJv07OneFhw-0-f70931fe49056020e8e28dcc2accec09)
那么,条件下实例为负例的条件概率为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P31_11273.jpg?sign=1739098084-Q2Ip3E6ls5hUudoQDgQJHSa7tcZYqC1h-0-b5955502f4de578fbdbd0ba155dedbf0)
以上概率的意义是什么呢?实际上,logistic函数是对数概率函数的反函数。一个事件的概率(odds)指该事件发生的概率与该事件不发生的概率
的比值。那么,对数概率为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P31_11282.jpg?sign=1739098084-K3AqWnTEheU23V1Upm45BvtCsedevSAe-0-fea11b8584fa67c20e148d591ccfb211)
对数概率大于0表明是正例的概率大,小于0表明是负例的概率大。
Logistic回归模型假设一个实例为正例的对数概率是输入的线性函数,即:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11293.jpg?sign=1739098084-iMvzQ7eis90lUHytFOOfG5miE88arNZb-0-792110961ace02410c7cb4a482618207)
反求上式中的便可得出:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11299.jpg?sign=1739098084-5B9hmKJFkAxMj5hy19N59xuykPXRYesP-0-441fa730c8925b5138e3e40a26b92996)
理解上述logistic函数概率的意义,是后面使用极大似然法的基础。
另外,logistic函数还有一个很好的数学特性,的一阶导数形式简单,并且是
的函数:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11308.jpg?sign=1739098084-jtnzXnEbzUfAR5O42F688RdgMXYoDyQO-0-c92e5b30aa6aa7a232f206ba3666d878)
2.1.3 Logistic回归模型
Logistic回归模型假设函数为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11312.jpg?sign=1739098084-MDU5FPTP5jmgggQHRwKEdKkq4J6LWYAG-0-acf385da16fd9b24570c0f3177813b86)
为了方便,通常将纳入权向量
,作为
,同时为输入向量
添加一个常数1作为
:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11330.jpg?sign=1739098084-IwHXdmtJV5uUtsn3WI6FkGUCcnOKcKNy-0-a34d981d8fe024487c808cfd172fff8c)
此时:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11333.jpg?sign=1739098084-kffG9KpBQ51wcc3OfdjEj7nLYz3heqS1-0-f2fb9f6c056368d0f7b50795c2ee64e5)
假设函数为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11336.jpg?sign=1739098084-mBdHM33vAOxERwCeEBsIIyX2B0At4bIz-0-cb6f090bbdd4d4b85e5ae70ab21ab9e8)
的输出是预测
为正例的概率,如果通过训练确定了模型参数
,便可构建二元分类函数:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11346.jpg?sign=1739098084-wukY88kp2qu0kTrPQbOLWtudw1CwJUEl-0-3be4c121b64ddc0335c4caa8707efeb2)
2.1.4 极大似然法估计参数
确定了假设函数,接下来训练模型参数。对于给定的包含m个样本的数据集
,可以使用极大似然估计法来估计
。
根据的概率意义,有:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P33_11372.jpg?sign=1739098084-swJzlzC4VnltTDwr2zIkHsT3JIsXDt7n-0-dff773b86ea0649b8b0bd9e936751e48)
综合上述二式可得出,训练集中某样本
,模型将输入实例
预测为类别
的概率为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P33_11387.jpg?sign=1739098084-hyCKnruCfIaR9X9ocIx3iqMlUcV2xuWj-0-2bb18412ef9470a1f78e03cfdb755f85)
训练集中各样本独立同分布,因此我们定义似然函数
来描述训练集中m个样本同时出现的概率为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P33_11396.jpg?sign=1739098084-3FEny1Y9Px6HUTRx0J3tPEYLLqxgJf7h-0-e287b8f08ea175f8b584b57c41612bcd)
极大似然法估计参数的核心思想是:选择参数
,使得当前已经观测到的数据(训练集中的m个样本)最有可能出现(概率最大),即:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P33_11405.jpg?sign=1739098084-vbD5Bzck9j85TyZG3LoHNU2F68vwcuQ6-0-713d82f0173cd6ab7c4b4064549f01bf)
是一系列项之积,求导比较麻烦,不容易找出其最大值点(即求出最大值)。
函数是单调递增函数,因此可将问题转化为找出对数似然函数
的最大值点,即:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P33_11415.jpg?sign=1739098084-FnGmy7tsYJeCnCV59E08PpGzlquN3T70-0-1737f80f911d7d51eace7fd220862aaa)
根据定义,对数似然函数为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P33_11418.jpg?sign=1739098084-33XvhjNuqHRFsn0cPWfVVLrVrJTDOhEh-0-d2d66d81136938a398e94b63cd8654b0)
经观察可看出,以上对数似然函数是一系列项之和,求导简单,容易找到最大值点,即求出最大值。
2.1.5 梯度下降更新公式
习惯上,我们通常定义模型的损失函数,并求其最小值(找出最小值点)。对于Logistic回归模型,可以定义其损失函数为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P34_11427.jpg?sign=1739098084-Jb2UPMGElKHqk1zjN9T4bZqFjJRTQysE-0-116b82ee35732ea834188050f38d674b)
此时,求出损失函数最小值与求出对数似然函数最大值等价。求损失函数最小值,依然可以使用梯度下降算法,最终估计出模型参数。
下面计算损失函数的梯度,从而推出梯度下降算法中
的更新公式。
计算对分量
的偏导数:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P34_11445.jpg?sign=1739098084-I2DFGKXZ83eALbnU0ulDt3cN74jnwrib-0-325ed4dd2717179d47a9aca1d81bf5a2)
其中,可解释为模型预测
为正例的概率与其实际类别之间的误差。
由此可推出梯度计算公式为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P34_11457.jpg?sign=1739098084-4eUx3XYMmunmZCfc2VAed56NB40zYNMI-0-10ad2214e46bd928deb1ca519010f2af)
对于随机梯度下降算法,每次只使用一个样本来计算梯度(m=1),相应梯度计算公式为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P34_11463.jpg?sign=1739098084-yCxgrP2Du1TxzEYLP6sl1k98m2O5wRHd-0-002740f64b792f4c2c0b9b31698e243e)
假设梯度下降(或随机梯度下降)算法的学习率为,模型参数
的更新公式为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P35_11475.jpg?sign=1739098084-Bxs3hso8BMMSrHnyr87k8EpADhbGRsGR-0-7a2713b6488adb4115acd60b429a4a11)