本文以Kaggle泰坦尼克号问题中的一个Kernel 以及李航博士的《统计学习方法》为基础来对逻辑斯谛回归进行描述
本文绝大大部分算法皆来自李航博士的《统计学习方法》第六章逻辑斯蒂回归模型与最大熵模型,只再此基础上增加了一点个人理解
Kaggle入门中一个经典的例子便是–泰坦尼克号问题 ,很多时候选择的第一个模型便是逻辑斯谛回归模型
二项逻辑斯谛回归模型 对于Kaggle中的泰坦尼克号问题,要预测的是乘客的生存问题,只有生存或者死亡两种结果,因此可以采用二项逻辑斯谛回归模型 。
P ( Y = 1 | x ) = exp ( w ∗ x + b ) 1 + e x p ( w ∗ x + b ) P ( Y = 1 | x ) = exp ( w ∗ x + b ) 1 + e x p ( w ∗ x + b )
P ( Y = 0 | x ) = 1 1 + e x p ( w ∗ x + b ) P ( Y = 0 | x ) = 1 1 + e x p ( w ∗ x + b )
对于这两个公式而言:
x ∈ R n x ∈ R n
是输入,可以看一下输入的数据是什么样的
相对于输入,输出为
y ∈ { 0 , 1 } y ∈ { 0 , 1 }
即对于一个输入实例x可以通过二项逻辑斯谛回归模型的条件概率分布来计算x的生存或者死亡概率,取概率比较大的来作为预测值 可以观察一下二项逻辑斯谛回归模型,输入为x已知,未知量有
ω ω 以及
b b 为了简化起见,可以舍去未知量b,这时候
二项逻辑斯谛回归模型 为
P ( Y = 1 | x ) = exp ( w ∗ x ) 1 + e x p ( w ∗ x ) P ( Y = 1 | x ) = exp ( w ∗ x ) 1 + e x p ( w ∗ x )
P ( Y = 0 | x ) = 1 1 + e x p ( w ∗ x ) P ( Y = 0 | x ) = 1 1 + e x p ( w ∗ x )
这时候只有一个未知量
ω ω ,要做的事情很简单就是找到一个参数
ω ω 使得它对所有的输入x都能有一个合理的预测
实质上在整个学习过程中要做的事情很简单,就是找到一个合理的参数w使得对于给定的输入x有一个合理的预测y,判断是否合理,可以采用训练数据集里面的数据来进行判断
模型参数估计 对于给定的训练数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) … } T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) … }
注意
x i ∈ R n 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 = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i ∏ i = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i
对数似然函数为
L ( w ) = ∑ i = 1 N [ y i l o g π ( x i ) − ( 1 − y i ) l o g ( 1 − π ( x i ) ) ] L ( w ) = ∑ i = 1 N [ y i l o g π ( x i ) − ( 1 − y i ) l o g ( 1 − π ( x i ) ) ]
= ∑ i = 1 N [ y i log π ( x i ) 1 − π ( x i ) + l o g ( 1 − π ( x i ) ) ] = ∑ i = 1 N [ y i log π ( x i ) 1 − π ( x i ) + l o g ( 1 − π ( x i ) ) ]
= ∑ i = 1 N [ y i ( w ∗ x i ) − l o g ( 1 + e x p ( w ∗ x i ) ] = ∑ 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 ( x 1 , x 2 , … x n ; θ 1 , θ 2 … θ k ) = ∏ i = 1 h f ( x i , θ 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 ( x 1 , x 2 , … x n ; θ 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 ( x 1 , x 2 , … x n ; θ 1 , θ 2 … θ k ) = ∏ i = 1 h f ( x i , θ 1 , θ 2 … θ k ) L ( x 1 , x 2 , … x n ; θ 1 , θ 2 … θ k ) = ∏ i = 1 h f ( x i , θ 1 , θ 2 … θ k )
就可以转换为
∏ i = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i ∏ i = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i
可以观察到此式实质上为概率的乘积
可以取两个值带入,假设yi为0
则
[ π ( x i ) ] y i = 1 [ π ( x i ) ] y i = 1
假设yi为1
则
[ 1 − π ( x i ) ] 1 − y i = 1 [ 1 − π ( x i ) ] 1 − y i = 1
进一步转换为
∑ i = 1 N [ y i ( w ∗ x i ) − l o g ( 1 + e x p ( w ∗ x i ) ] ∑ 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 = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i ∏ i = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i
最大,即对于所有的x对应的概率乘积最大,类似于通解的一种情况
梯度下降算法 假设f(x)是R n R n 上具有一阶连续偏导数的函数,要求解的无约束最优化问题是
min x ∈ R n f ( x ) min x ∈ R n f ( x )
x ∗ x ∗ 表示目标函数f(x)的极小点
对于极大似然函数,要求的是极大值,可以增加一个负号,这样就等价于求极小值
min x ∈ R n − L ( ω ) 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 ) ∈ R n x ( 0 ) ∈ R n ,置k = 0 k = 0 2.计算f ( x ( k ) ) f ( x ( k ) ) 3.计算梯度g k = g ( x ( k ) ) g k = g ( x ( k ) ) ,当∥ g k ∥ < ε ‖ g k ‖ < ε 时,停止迭代,令X ∗ = X ( k ) X ∗ = X ( k ) ;否则,令p k = − g ( x ( k ) ) p k = − g ( x ( k ) ) ,求λ k λ k ,使
f ( x ( k ) + λ k p k ) = min λ ≥ 0 f ( x ( k ) + λ p k ) f ( x ( k ) + λ k p k ) = min λ ≥ 0 f ( x ( k ) + λ p k )
4.置
x ( k + 1 ) = x ( k ) + λ k p k 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 ) = 1 1 + exp ( w ˆ x ) P ( Y = 1 | x ) = 1 1 + exp ( w ^ x )
这样对于测试的实例x就可以求得其生存或者死亡概率
参考资料 [1] 李航. 逻辑斯谛回归与最大熵模型. 统计学习方法. 2012 [2] Kaggle Kernels [3] 概率论与数理统计(第四版)