机器学习笔记(一)对数几率回归模型(Logistic Regression)


前言

本篇文章是笔者在学习周志华老师《机器学习》第三章节对数几率回归部分过程中,结合各方参考资料,记录下的对数几率回归模型的重点知识与内容,并加以自己的理解详细讲述。


以下是本篇文章正文内容

一、对数几率回归模型

在线性回归模型中,预测值y往往是一个具体的实值,而在分类预测场景当中,一个具体的预测实值不足以形成最终的分类预测。因此我们可以考虑将线性回归模型产生的预测实值,转换为0/1等分类值。

单位阶跃函数(unit-step function)就是一种比较理想的分类函数:
y = { 0 , z < 0 0.5 , z = 0 1 , z > 0 (1.1) y = \left\{\begin{aligned}0,z<0 \\0.5,z=0\\1,z>0\end{aligned}\right. \tag{1.1} y=0,z<00.5,z=01,z>0(1.1)

单位阶跃函数图像如图所示:
在这里插入图片描述

单位阶跃函数即表示当预测值z大于零就判为正例,小于零则判为反例,预测值为临界值零则可任意判别。但是由于单位阶跃函数不连续,不能作为广义线性回归模型的联系函数
y = g − 1 ( ω T x + b ) (1.2) y = g^{-1}(\omega^{T}x+b) \tag{1.2} y=g1(ωTx+b)(1.2)

g ( ⋅ ) g(·) g()函数的连续性需与 ω T x + b \omega^{T}x+b ωTx+b保持一致

在这里考虑用一个无限接近单位近阶跃函数的连续函数来代替单位阶跃函数,并希望它单调可微(与线性回归模型保持一致)。而对数几率函数(logistic function)正是这样一个常用的替代函数。
y = 1 1 + e − z (1.3) y = \frac{1}{1+e^{-z}} \tag{1.3} y=1+ez1(1.3)

对数几率函数图像如图所示:
对数几率函数
对数几率函数是一种Sigmoid函数,它将z值转化为一个接近0或者1的y值。将对数几率函数代入广义线性模型得到
y = 1 1 + e − ( ω T x + b ) (1.4) y = \frac{1}{1+e^{-(\omega^Tx+b)}} \tag{1.4} y=1+e(ωTx+b)1(1.4)
该式可变化为
l n y 1 − y = ω T x + b (1.5) ln\frac{y}{1-y}= \omega^Tx+b \tag{1.5} ln1yy=ωTx+b(1.5)
若将y视为样本作为正例的可能性,则1-y是其反例的可能性,两者的比值称为“几率”,反映了样本作为正例的相对可能性.
y 1 − y (1.6) \frac{y}{1-y} \tag{1.6} 1yy(1.6)
对几率取对数则可得到“对数几率”
l n y 1 − y (1.7) ln\frac{y}{1-y} \tag{1.7} ln1yy(1.7)
对数几率回归实际上是在用线性回归模型的预测结果去逼近真实标记的对数几率,特别需要注意到,虽然它的名字是“回归”,但实际上是一种分类学习方法。对数回归求解的目标函数是任意阶可导的凸函数。

要确定线性回归模型中的 ω \omega ω b b b,将式(1.5)中的y视为后验概率估计 p ( y = 1 ∣ x ) p(y=1 | x) p(y=1x), 即式子可重写为
l n p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) = ω T x + b (1.8) ln\frac{p(y=1|x)}{p(y=0|x)}=\omega^{T}x + b\tag{1.8} lnp(y=0x)p(y=1x)=ωTx+b(1.8)
后验概率在这里可以理解为已知样本x,其为正例或者反例的概率

对式子1.8进行变式
e l n p ( y = 1 ∣ x ) 1 − p ( y = 1 ∣ x ) = e ω T x + b p ( y = 1 ∣ x ) 1 − p ( y = 1 ∣ x ) = e ω T x + b \begin{aligned} e^{ln\frac{p(y=1|x)}{1-p(y=1|x)}}&=e^{\omega^{T}x+b}\\ \frac{p(y = 1| x)}{1-p(y=1|x)}&=e^{\omega^Tx+b} \end{aligned} eln1p(y=1x)p(y=1x)1p(y=1x)p(y=1x)=eωTx+b=eωTx+b
最终得到
p ( y = 1 ∣ x ) = e ω T x + b 1 + e ω T x + b (1.9) \begin{aligned} p(y=1|x)&=\frac{e^{\omega^{T}x+b}}{1+e^{\omega^{T}x+b}} \tag{1.9} \end{aligned} p(y=1x)=1+eωTx+beωTx+b(1.9)
p ( y = 0 ∣ x ) = 1 1 + e ω T x + b (1.10) \begin{aligned} p(y=0|x)&=\frac{1}{1+e^{\omega^{T}x+b}} \tag{1.10} \end{aligned} p(y=0x)=1+eωTx+b1(1.10)

二、对率回归模型最大化“对数似然”

最大似然估计的基本思想为:在已知实验结果以及模型分布的情况下,找出让该实验结果发生概率最大时的参数值。

应用到对率回归模型中,给定的数据集即为已知的实验结果,而每一个样本发生的概率也由式1.9和式1.10给出,对该对率回归模型作最大化似然估计,其中m为数据集中样本的个数:
l ( ω , b ) = ∑ i = 1 m p ( y i ∣ x i ; ω , b ) (2.1) l(\omega,b)=\sum_{i=1}^{m}p(y_i|x_i;\omega,b)\tag{2.1} l(ω,b)=i=1mp(yixi;ω,b)(2.1)
式1.9和式1.10中涉及指数运算,为了让运算过程变得简单且不影响其单调性,对最大似然函数取对数,实现“对数似然”
l ( ω , b ) = ∑ i = 1 m ln ⁡ p ( y i ∣ x i ; ω , b ) (2.2) l(\omega,b)=\sum_{i=1}^{m}\ln p(y_i|x_i;\omega,b)\tag{2.2} l(ω,b)=i=1mlnp(yixi;ω,b)(2.2)
对率回归模型中的参数 ω \omega ω b b b的取值要使式2.2中的值达到最大值,即令每个样本属于其真实标记的概率越大越好

为了便于讨论,令 β = ( ω ; b ) \beta=(\omega;b) β=(ω;b), x ^ = ( x ; 1 ) \hat{x}=\left(x;1\right) x^=(x;1),则 ω x + b \omega x+b ωx+b可简写为 β T x ^ \beta^{T}\hat{x} βTx^. 再令 p 1 ( x ^ ; β ) = p ( y = 1 ∣ x ^ ; β ) p_{1}\left(\hat{x};\beta\right)=p(y=1|\hat{x};\beta) p1(x^;β)=p(y=1x^;β) p 0 ( x ^ ; β ) = 1 − p ( y = 1 ∣ x ^ ; β ) p_{0}\left(\hat{x};\beta\right)=1 - p(y=1|\hat{x};\beta) p0(x^;β)=1p(y=1x^;β),则式2.2中的似然项可重写为
p ( y i ∣ x i ; ω , b ) = y i p 1 ( x ^ i ; β ) + ( 1 − y i ) p 0 ( x ^ i ; β ) (2.3) p(y_i|x_i;\omega,b)=y_{i}p_{1}(\hat{x}_{i};\beta) + (1-y_{i})p_{0}(\hat{x}_{i};\beta)\tag{2.3} p(yixi;ω,b)=yip1(x^i;β)+(1yi)p0(x^i;β)(2.3)

将式2.3代入式2.2,并根据式1.9和式1.10,推导出演算过程
ln ⁡ p ( y i ∣ x i ; ω , b ) = l n ( y i ⋅ e β T x 1 + e β T x ^ + ( 1 − y i ) ⋅ 1 1 + e β T x ^ ) = l n ( y i ⋅ e β T x ^ + ( 1 − y i ) 1 + e β T x ^ ) = y i ⋅ l n ( e β T x ^ ) − l n ( 1 + e β T x ^ ) = y i ⋅ β T x ^ − l n ( 1 + e β T x ^ ) (2.4) \begin{aligned} \ln p(y_i|x_i;\omega,b)&=ln(\frac{y_{i}\cdot e^{\beta^{T}x}}{1+e^{\beta^{T}\hat{x}}}+(1-y_{i})\cdot\frac{1}{1+e^{\beta^{T}\hat{x}}})\\ &=ln(\frac{y_{i}\cdot e^{\beta^{T}\hat{x}}+(1-y_{i})}{1+e^{\beta^{T}\hat{x}}})\\ &=y_{i}\cdot ln(e^{\beta^{T}\hat{x}}) - ln(1+e^{\beta^{T}\hat{x}})\\ &=y_{i}\cdot\beta^{T}\hat{x} - ln(1+e^{\beta^{T}\hat{x}})\tag{2.4} \end{aligned} lnp(yixi;ω,b)=ln(1+eβTx^yieβTx+(1yi)1+eβTx^1)=ln(1+eβTx^yieβTx^+(1yi))=yiln(eβTx^)ln(1+eβTx^)=yiβTx^ln(1+eβTx^)(2.4)
需要对演算过程中注意的是对 1 − y i 1-y_{i} 1yi的化简,对 y i y_{i} yi考虑两种情况分别为0和1
y i = 1 y_{i}=1 yi=1时, 1 − y i = 0 1-y_{i}=0 1yi=0
y i ⋅ e β T x ^ + ( 1 − y i ) = y i ⋅ e β T x ^ (2.5) y_{i}\cdot e^{\beta^{T}\hat{x}}+(1-y_{i})=y_{i}\cdot e^{\beta^{T}\hat{x}}\tag{2.5} yieβTx^+(1yi)=yieβTx^(2.5)
y i = 0 y_{i}=0 yi=0时, y i ⋅ e β T x ^ + ( 1 − y i ) y_{i}\cdot e^{\beta^{T}\hat{x}}+(1-y_{i}) yieβTx^+(1yi)项整体为0, 即式2.5成立

已知求最大值即求其相反数的最小值,对算式2.4取相反数并代入式2.2可得:
l ( β ) = ∑ 1 m − y i ⋅ β T x ^ + l n ( 1 + e β T x ^ ) (2.6) l(\beta)=\sum_{1}^{m}-y_{i}\cdot\beta^{T}\hat{x} + ln(1+e^{\beta^{T}\hat{x}})\tag{2.6} l(β)=1myiβTx^+ln(1+eβTx^)(2.6)
式2.6是关于 β \beta β的高阶可导连续凸函数,根据凸优化理论,经典的数值优化算法如梯度下降、牛顿法等都可求得其最优解。梯度下降法求解其最优值详看文章机器学习笔记(二)梯度下降法实现对数几率回归(Logistic Regression)

总结

本篇文章重点记录了对数几率回归(Logistic Regression)模型的主要内容和知识,其中包含笔者对该模型的主观认知和理解,若有错误之处,望读者指出。

参考文献

机器学习-周志华
单位阶跃函数-维基百科
Sigmoid函数-维基百科
对数几率函数(logistic function)-维基百科

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对数几率回归Logistic Regression)是一种常用的分类算法,可以用于解决二分类问题。在Python中,可以使用scikit-learn库来实现对数几率回归模型。 以下是Python实现对数几率回归模型的步骤: 1. 导入所需的库: ```python from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score ``` 2. 准备数据集: 首先,需要准备一个包含特征和标签的数据集。特征是用于预测的输入变量,标签是对应的分类结果。 3. 划分训练集和测试集: 将数据集划分为训练集和测试集,用于模型的训练和评估。 ```python X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) ``` 其中,features是特征数据,labels是对应的标签数据,test_size表示测试集占总数据集的比例,random_state是随机种子,用于保证每次划分的结果一致。 4. 创建并训练模型: ```python model = LogisticRegression() model.fit(X_train, y_train) ``` 创建LogisticRegression对象,并使用fit方法对模型进行训练。 5. 进行预测: ```python y_pred = model.predict(X_test) ``` 使用训练好的模型对测试集进行预测。 6. 评估模型: ```python accuracy = accuracy_score(y_test, y_pred) ``` 使用accuracy_score函数计算模型的准确率。 以上就是Python实现对数几率回归模型的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值