![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=1739282888-oLW8imxvpdX1Q87Jjh8NkZD10i0Xn12T-0-38f3cb802ba3c680746eb8a15c0bba29)
其中,为超平面的法向量,
为偏置。
超平面上方的点都满足:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P29_11212.jpg?sign=1739282888-6U9WqDItE1j4Vw8ifsxPCcGJGho05JAk-0-0c9fe49096469d764210f768d456d902)
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P30_11221.jpg?sign=1739282888-Kj9nSdsIgqY0p10luD4u2A5n2KyrfGwX-0-1623f44dbc6902b7d60aadd513fa2a3e)
图2-1
而超平面下方的点都满足:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P30_11225.jpg?sign=1739282888-B3YjXv66fQiXFQ1t0xlMNhiUA44MvOun-0-a5a0ab7882fb7a55497abcd2451ecdd6)
这意味着,我们可以根据以下的线性函数的值(与0的比较结果)判断实例的类别:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P30_11231.jpg?sign=1739282888-zpvtU5zpAMtmwhtl9ioXTZG5LKFusXox-0-ba97e09b6342c5372fa1cac8a7ae1ad2)
分类函数以为输入,输出预测的类别:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P30_11237.jpg?sign=1739282888-v0fbjlS4gmnHp7r4Wb7dG3o4VBiTCqO9-0-fc9e0add8a5ace1edc7c152c5753072b)
以上便是线性分类器的基本模型。
2.1.2 logistic函数
显然,最理想的分类函数为单位阶跃函数:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P30_11242.jpg?sign=1739282888-XXBRdY2oq3Zlx8TY103pmuikaHsmL3jV-0-fd75f3fbb1f88a35819b5cec74208d9f)
但单位阶跃函数作为分类函数有一个严重缺点:它不连续,所以不是处处可微,这使得一些算法不能得以应用(如梯度下降)。我们希望找到一个在输入输出特性上与单位阶跃函数类似,并且单调可微的函数来替代阶跃函数,logistic函数便是一种常用替代函数。
logistic回归函数定义为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P31_11257.jpg?sign=1739282888-cCRA7zwNSTUiiPc9INeWcDz6v5b9sZMW-0-524dcb8837bda7e149bfa1bf60a8a78f)
其函数图像如图2-2所示。
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P31_11260.jpg?sign=1739282888-sWnjVCPvMB1Q7FbuOyMUck7PPaQL2HOi-0-e2acb0a28835707072f66a57316137e0)
图2-2
logistic函数是一种Sigmoid函数(S型)。从图2-2可以看出,logistic函数的值域在(0, 1)之间连续,函数的输出可视为条件下实例为正例的条件概率,即:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P31_11267.jpg?sign=1739282888-ZcBBsFCVRFra8iwUddhOUdqhSIYu4pWi-0-954081777dfc895af15d6b25671712b9)
那么,条件下实例为负例的条件概率为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P31_11273.jpg?sign=1739282888-GcCRr8dk6705iDKuuvGJ3eTXKrFZQXrn-0-b42d4d42c31d20cd48b72bab5dd4737f)
以上概率的意义是什么呢?实际上,logistic函数是对数概率函数的反函数。一个事件的概率(odds)指该事件发生的概率与该事件不发生的概率
的比值。那么,对数概率为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P31_11282.jpg?sign=1739282888-kSPF6C0pFTMCMNt4uy4jRe13UgNx3o8q-0-7f816b89da7e65b4fcc7f273f73834cf)
对数概率大于0表明是正例的概率大,小于0表明是负例的概率大。
Logistic回归模型假设一个实例为正例的对数概率是输入的线性函数,即:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11293.jpg?sign=1739282888-FcBBfYNJ5qPYtuIfHJMGW2QDIVDpQlNQ-0-adbe923374265b07673cc5032c9295af)
反求上式中的便可得出:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11299.jpg?sign=1739282888-VAyd5zgh3CKwpOKz8XbflNySlSPuKxU1-0-6272c5839c16755e153064d7110f210e)
理解上述logistic函数概率的意义,是后面使用极大似然法的基础。
另外,logistic函数还有一个很好的数学特性,的一阶导数形式简单,并且是
的函数:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11308.jpg?sign=1739282888-hnPC9gX6ekh5ZsKTQ5zioD7rDncFIcW7-0-16b260731c9244f3bc6912bd3872cb21)
2.1.3 Logistic回归模型
Logistic回归模型假设函数为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11312.jpg?sign=1739282888-iGaVOEHSP8sYX8Z9XrdkFkv9BEF3aNRu-0-73e0c2fee154f0e50552c08d40d0aa6b)
为了方便,通常将纳入权向量
,作为
,同时为输入向量
添加一个常数1作为
:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11330.jpg?sign=1739282888-ZsJl046S49X0FfSG5o5W430feC3orucG-0-f614c635f5650308fb7e101decf5ce90)
此时:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11333.jpg?sign=1739282888-2m4Wbx1A2GV4zwSEcBcAQCPcpAJRQIPX-0-e5b7d335e44192acc3469a2020513549)
假设函数为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11336.jpg?sign=1739282888-mRIx6gHLjCf5HZf4bVzaZ3yDOvrGYuSK-0-1894c3c227cfe0900cb0dd2386db8980)
的输出是预测
为正例的概率,如果通过训练确定了模型参数
,便可构建二元分类函数:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P32_11346.jpg?sign=1739282888-ZebuZRWaX2LbluJrOaWtYH0n4RuIFsUx-0-a64a24f7efb86f85f9211d09bc1d66b4)
2.1.4 极大似然法估计参数
确定了假设函数,接下来训练模型参数。对于给定的包含m个样本的数据集
,可以使用极大似然估计法来估计
。
根据的概率意义,有:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P33_11372.jpg?sign=1739282888-q5vVbagJQHZVzf7lbTPDo2uwwdRZZnP1-0-1c3b88323c3292be3a663fcf2c9b20e3)
综合上述二式可得出,训练集中某样本
,模型将输入实例
预测为类别
的概率为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P33_11387.jpg?sign=1739282888-fIjPZyxh7ISB1vXvFNJISDtqYELVQCmW-0-ee689e949c33d694b097265cc916a62c)
训练集中各样本独立同分布,因此我们定义似然函数
来描述训练集中m个样本同时出现的概率为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P33_11396.jpg?sign=1739282888-1b5vE5RlNaECs15sAESMiRSvvfxautil-0-30a176481019865fe34fe59fa1cf7205)
极大似然法估计参数的核心思想是:选择参数
,使得当前已经观测到的数据(训练集中的m个样本)最有可能出现(概率最大),即:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P33_11405.jpg?sign=1739282888-gAiyX1jm8cG6ABlAULZBIZ7FjbXd3RhC-0-ac4643e5b10290eb4a7ed8de756bb434)
是一系列项之积,求导比较麻烦,不容易找出其最大值点(即求出最大值)。
函数是单调递增函数,因此可将问题转化为找出对数似然函数
的最大值点,即:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P33_11415.jpg?sign=1739282888-zWSqUvOar3qQ5XrxkZHYOa9qUg1eSB9g-0-b5a326d63bb9cd018af796da3f116bb0)
根据定义,对数似然函数为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P33_11418.jpg?sign=1739282888-yBS2kC6B2A429e8gVSL5ooZoERa5oOqY-0-4191162f3e23f9f31d0d298b9991fd64)
经观察可看出,以上对数似然函数是一系列项之和,求导简单,容易找到最大值点,即求出最大值。
2.1.5 梯度下降更新公式
习惯上,我们通常定义模型的损失函数,并求其最小值(找出最小值点)。对于Logistic回归模型,可以定义其损失函数为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P34_11427.jpg?sign=1739282888-PNcxYpvAfQCLDjQQS53Hpxhf8Hfa53tR-0-c9f0a671b664497776149b2ca79d7070)
此时,求出损失函数最小值与求出对数似然函数最大值等价。求损失函数最小值,依然可以使用梯度下降算法,最终估计出模型参数。
下面计算损失函数的梯度,从而推出梯度下降算法中
的更新公式。
计算对分量
的偏导数:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P34_11445.jpg?sign=1739282888-9tQJAVdWV2F5gCYH7SdLEMMQZTxr6LFa-0-6816443d5ecbc7a5d88a2566786b5565)
其中,可解释为模型预测
为正例的概率与其实际类别之间的误差。
由此可推出梯度计算公式为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P34_11457.jpg?sign=1739282888-tCl0xza3aydq9XTRumbRDqLUVE2JB2aF-0-f1c4d0f132b300827ba9189568a0dd9f)
对于随机梯度下降算法,每次只使用一个样本来计算梯度(m=1),相应梯度计算公式为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P34_11463.jpg?sign=1739282888-N2Uso15AkddNvaq6usQ3QYobG1bVv08X-0-7733150e89995ce37a2e1414de88847c)
假设梯度下降(或随机梯度下降)算法的学习率为,模型参数
的更新公式为:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P35_11475.jpg?sign=1739282888-rhVwiPI6QMWyctCKGbua7J6poYV0WYQ9-0-49f1f724f18a3b1742c5cb8f1d7f6c93)