逻辑斯谛回归

本文以Kaggle泰坦尼克号问题中的一个Kernel 以及李航博士的《统计学习方法》为基础来对逻辑斯谛回归进行描述

本文绝大大部分算法皆来自李航博士的《统计学习方法》第六章逻辑斯蒂回归模型与最大熵模型,只再此基础上增加了一点个人理解

Kaggle入门中一个经典的例子便是–泰坦尼克号问题,很多时候选择的第一个模型便是逻辑斯谛回归模型

二项逻辑斯谛回归模型

对于Kaggle中的泰坦尼克号问题,要预测的是乘客的生存问题,只有生存或者死亡两种结果,因此可以采用二项逻辑斯谛回归模型

P(Y=1|x)=exp(wx+b)1+exp(wx+b) P ( Y = 1 | x ) = exp ⁡ ( w ∗ x + b ) 1 + e x p ( w ∗ x + b )

P(Y=0|x)=11+exp(wx+b) P ( Y = 0 | x ) = 1 1 + e x p ( w ∗ x + b )

对于这两个公式而言:
xRn x ∈ R n

是输入,可以看一下输入的数据是什么样的
这里写图片描述
相对于输入,输出为
y{0,1} y ∈ { 0 , 1 }

即对于一个输入实例x可以通过二项逻辑斯谛回归模型的条件概率分布来计算x的生存或者死亡概率,取概率比较大的来作为预测值
可以观察一下二项逻辑斯谛回归模型,输入为x已知,未知量有 ω ω 以及 b b
为了简化起见,可以舍去未知量b,这时候 二项逻辑斯谛回归模型
P(Y=1|x)=exp(wx)1+exp(wx) P ( Y = 1 | x ) = exp ⁡ ( w ∗ x ) 1 + e x p ( w ∗ x )

P(Y=0|x)=11+exp(wx) P ( Y = 0 | x ) = 1 1 + e x p ( w ∗ x )

这时候只有一个未知量 ω ω ,要做的事情很简单就是找到一个参数 ω ω 使得它对所有的输入x都能有一个合理的预测

实质上在整个学习过程中要做的事情很简单,就是找到一个合理的参数w使得对于给定的输入x有一个合理的预测y,判断是否合理,可以采用训练数据集里面的数据来进行判断

模型参数估计

对于给定的训练数据集

T={(x1,y1),(x2,y2)} T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) … }

注意
xiRn x i ∈ R n

可以应用极大似然估计法估计模型参数
设:
P(Y=1|x)=π(x) P ( Y = 1 | x ) = π ( x )

P(Y=0|x)=1π(x) P ( Y = 0 | x ) = 1 − π ( x )

似然函数为
i=1N[π(xi)]yi[1π(xi)]1yi ∏ i = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i

对数似然函数为
L(w)=i=1N[yilogπ(xi)(1yi)log(1π(xi))] L ( w ) = ∑ i = 1 N [ y i l o g π ( x i ) − ( 1 − y i ) l o g ( 1 − π ( x i ) ) ]

=i=1N[yilogπ(xi)1π(xi)+log(1π(xi))] = ∑ i = 1 N [ y i log ⁡ π ( x i ) 1 − π ( x i ) + l o g ( 1 − π ( x i ) ) ]

=i=1N[yi(wxi)log(1+exp(wxi)] = ∑ i = 1 N [ y i ( w ∗ x i ) − l o g ( 1 + e x p ( w ∗ x i ) ]

对L(w)求极大值,就可以得到w的估计值
问题就变成了以对数似然函数为目标函数的最优化问题,可以采用梯度下降法

极大似然估计

1.设总体x的概率分布为

f(x,θ1,θ2θk) f ( x , θ 1 , θ 2 … θ k )

其中
θ1,θ2,θk θ 1 , θ 2 , … θ k

为参数
2.设X1,X2,…Xn为一组样本,它们的联合概率密度为
L(x1,x2,xn;θ1,θ2θk)=i=1hf(xi,θ1,θ2θk) L ( x 1 , x 2 , … x n ; θ 1 , θ 2 … θ k ) = ∏ i = 1 h f ( x i , θ 1 , θ 2 … θ k )

3.设x1,x2,…xn是样本X1,X2,…Xn的一组观测值,使出现x1,x2,…xn最大可能的一组实数
θ1,θ2θk θ 1 ∗ , θ 2 ∗ … θ k ∗

引出了参数估计的一种方法

注:

L(x1,x2,xn;θ1,θ2θk) L ( x 1 , x 2 , … x n ; θ 1 , θ 2 … θ k )

实际上是概率的乘积,以二项逻辑斯谛回归模型为例
假设
w=θ1,θ2,θk w = θ 1 , θ 2 , … θ k

f(x)={π(x)1π(x) f ( x ) = { π ( x ) 1 − π ( x )

P(Y=1|x)=π(x) P ( Y = 1 | x ) = π ( x )

P(Y=0|x)=1π(x) P ( Y = 0 | x ) = 1 − π ( x )


L(x1,x2,xn;θ1,θ2θk)=i=1hf(xi,θ1,θ2θk) L ( x 1 , x 2 , … x n ; θ 1 , θ 2 … θ k ) = ∏ i = 1 h f ( x i , θ 1 , θ 2 … θ k )

就可以转换为
i=1N[π(xi)]yi[1π(xi)]1yi ∏ i = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i

可以观察到此式实质上为概率的乘积
可以取两个值带入,假设yi为0

[π(xi)]yi=1 [ π ( x i ) ] y i = 1

假设yi为1

[1π(xi)]1yi=1 [ 1 − π ( x i ) ] 1 − y i = 1

进一步转换为

i=1N[yi(wxi)log(1+exp(wxi)] ∑ i = 1 N [ y i ( w ∗ x i ) − l o g ( 1 + e x p ( w ∗ x i ) ]

即要求出一个
w=θ1,θ2θk w = θ 1 ∗ , θ 2 ∗ … θ k ∗

使得
i=1N[π(xi)]yi[1π(xi)]1yi ∏ i = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i

最大,即对于所有的x对应的概率乘积最大,类似于通解的一种情况

梯度下降算法

假设f(x)是 Rn R n 上具有一阶连续偏导数的函数,要求解的无约束最优化问题是

minxRnf(x) min x ∈ R n f ( x )

x x ∗ 表示目标函数f(x)的极小点
对于极大似然函数,要求的是极大值,可以增加一个负号,这样就等价于求极小值
minxRnL(ω) min x ∈ R n − L ( ω )

梯度下降法是一种迭代算法,取适当的初值 x(0) x ( 0 ) ,不断迭代,更新 x x 的值,进行目标函数的极小化,直至收敛

梯度下降法

输入:目标函数 f(x) f ( x ) ,梯度函数 g(x)=f(x) g ( x ) = ∇ f ( x ) ,计算精度 ε ε
输出: f(x) f ( x ) 的极小点 x x ∗
1.取初始值 x(0)Rn x ( 0 ) ∈ R n ,置 k=0 k = 0
2.计算 f(x(k)) f ( x ( k ) )
3.计算梯度 gk=g(x(k)) g k = g ( x ( k ) ) ,当 gk<ε ‖ g k ‖ < ε 时,停止迭代,令 X=X(k) X ∗ = X ( k ) ;否则,令 pk=g(x(k)) p k = − g ( x ( k ) ) ,求 λk λ k ,使

f(x(k)+λkpk)=minλ0f(x(k)+λpk) f ( x ( k ) + λ k p k ) = min λ ≥ 0 f ( x ( k ) + λ p k )

4.置 x(k+1)=x(k)+λkpk x ( k + 1 ) = x ( k ) + λ k p k ,计算 f(x(k+1)) f ( x ( k + 1 ) )
f(x(k+1))f(x(k))<ε ‖ f ( x ( k + 1 ) ) − f ( x ( k ) ) ‖ < ε x(k+1)x(k)<ε ‖ x ( k + 1 ) − x ( k ) ‖ < ε 时,停止迭代,令 x=x(k+1) x ∗ = x ( k + 1 )
5.否则,置 k=k+1 k = k + 1 转3

这样,经过梯度下降法就可以求得 wˆ w ^ ,那么学习到的逻辑斯谛回归模型为

P(Y=1|x)=exp(wˆx)1+exp(wˆx) P ( Y = 1 | x ) = exp ⁡ ( w ^ x ) 1 + exp ⁡ ( w ^ x )

P(Y=1|x)=11+exp(wˆx) P ( Y = 1 | x ) = 1 1 + exp ⁡ ( w ^ x )

这样对于测试的实例x就可以求得其生存或者死亡概率

参考资料

[1] 李航. 逻辑斯谛回归与最大熵模型. 统计学习方法. 2012
[2] Kaggle Kernels
[3] 概率论与数理统计(第四版)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值