Logistic Regression原理及Python实现

1. 问题引入

相信大家都接触过分类问题,尤其是二元分类。例如现在有一些患者(训练集)的身体情况以及是否患有心脏病的数据,要求我们根据这些数据来预测其他患者(测试集)是否患有心脏病。这是比较简单的一个二元分类问题,使用线性分类器或许会取得不错的效果。但在实际生活中,我们感兴趣的往往不是其他患者是否会犯病,而是他犯心脏病的概率是多少。很直观的想法是收集患者犯病的概率,然后利用回归模型进行概率预测。但是我们并不能直接收集到患者犯病的概率,只能知到患者最后到底犯没犯病。也就是说,我们输入的标签是离散的类别型数据,但是期望得到数值型的概率。在机器学习中,这叫做“软性二元分类”(Soft Binary Classification),这类问题与普通的分类问题所要的数据相同,但是会得到不同的目标函数。接下来,我们就介绍一种可以解决“软性二元分类”问题的算法,那就是Logistic Regression(后文译为“对数几率回归)。

2. Logistic Regression

继续我们上面的预测患者是否会犯心脏病的问题。为了最终的预测,我们可以对患者的身体状况 x = ( x 0 , x 1 , x 2 ⋯   , x d ) \mathbf{x} =(x_0,x_1,x_2\cdots,x_d) x=(x0,x1,x2,xd)按照不同的权重打分:

s = ∑ i = 0 d w i x i s = \sum_{i = 0}^{d} w_i x_i s=i=0dwixi

然后用对数几率函数 θ ( s ) \theta(s) θ(s)将分数转化成一个概率估计。对数几率函数的形式为:

θ ( s ) = e s 1 + e s = 1 1 + e − s \theta(s) = \frac {e^s} {1 + e^s} = \frac {1} {1 + e^{-s}} θ(s)=1+eses=1+es1

也就是说,对数几率回归通过 h ( x ) = 1 1 + exp ⁡ ( − w T x ) h(\mathbf{x}) = \frac {1} {1 + \exp(-\mathbf{w}^T\mathbf{x})} h(x)=1+exp(wTx)1来逼近目标函数 f ( x ) = P ( + 1 ∣ x ) f(\mathbf{x}) = P(+1 | \mathbf{x}) f(x)=P(+1x),显然有:

P ( y = 1 ∣ x ) = f ( x ) P ( y = 0 ∣ x ) = 1 − f ( x ) P(y = 1 | \mathbf{x}) = f(\mathbf{x}) \\ P(y = 0 | \mathbf{x}) = 1 - f(\mathbf{x}) P(y=1x)=f(x)P(y=0x)=1f(x)

现在我们要面临的问题是如何对 w \mathbf{w} w进行估计。在线性回归模型中,我们可以通过最小化均方误差来估计回归系数。但是在这里,好像并没有什么可以衡量误差的东西,所以我们要另辟蹊径。下面我们使用极大似然估计(Maximum Likelihood Estimation,简称MLE)来估计最优的回归系数,它是根据数据采样来估计概率分布参数的经典方法。

假设现在有一个数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y n ) } D = \{ (\mathbf{x}_1, y_1),(\mathbf{x}_2,y_2),\cdots,(\mathbf{x}_N,y_n) \} D={ (x1,y1),(x2,y2),,(xN

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值