1. 逻辑斯谛回归模型定义
在 Andrew NG 的 Machine Learning 课程和李航的统计学习方法中,都有对逻辑斯谛回归模型的介绍,然而二者却对模型有着不同的定义。
1.1 决策函数
Andrew NG 课程中,对二项逻辑回归模型的决策函数如下:
hθ(x)=g(θTx)hθ(x)=g(θTx)
g(z)g(z) 为Sigmoid函数:
g(z)=11+e−zg(z)=11+e−z
.
其中
θθ 为参数. 当
z≥0z≥0 时,
0.5≤y<10.5≤y<1; 当
z<0z<0 时,
0<y<0.50<y<0.5.
hθ(x)hθ(x) 的取值代表 y=1y=1 的可能性的大小,若 hh 大于0.5,那么就取1,如果小于0.5就取0.
1.2 条件概率分布
统计学习方法中,二项逻辑回归模型是如下函数定义的条件概率分布:
P(Y=1|x)=P(Y=0|x)=exp(w⋅x)1+exp(w⋅x)=11+e−w⋅x11+exp(w⋅x)P(Y=1|x)=exp(w⋅x)1+exp(w⋅x)=11+e−w⋅xP(Y=0|x)=11+exp(w⋅x)
这里, x∈Rnx∈Rn 是输入, Y∈{0,1}Y∈{0,1} 是输出, w∈Rnw∈Rn 是参数, 称为权值向量, bb 称为偏置, w⋅xw⋅x 为 ww和 xx 的内积. 比较两个条件概率值的大小,将实例 xx 分到概率值较大的那一类.
2. 模型参数估计
由于定义的模型存在差异,因此二者的参数估计的思路也不同。
2.1 误差之和极小化
Andrew NG 课程中对误差之和的计算方法如下:
J(θ)=1m∑i=1mCost(hθ(x(i)),y(i))Cost(hθ(x),y)={−log(hθ(x))ify=1−log(1−hθ(x))ify=0J(θ)=1m∑i=1mCost(hθ(x(i)),y(i))Cost(hθ(x),y)={−log(hθ(x))ify=1−log(1−hθ(x))ify=0
Cost函数通过极大似然估计得来,之所以不用原来线性回归的误差公式,是因为Sigmoid函数的存在会使J函数最终的结果不是凸函数,存在多个极值点。 Cost函数的图像如下:
Cost函数可统一成以下形式:
Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))
最终的误差函数如下:
J(θ)=1m∑i=1mCost(hθ(x(i)),y(i))=−1m[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]J(θ)=1m∑i=1mCost(hθ(x(i)),y(i))=−1m[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
求解误差函数的极小值,即可得到 θθ 的估计值.
2.2 似然函数极大化
设 P(Y=1|x)=π(x),P(Y=0|x)=1−π(x)P(Y=1|x)=π(x),P(Y=0|x)=1−π(x) ,似然函数为:
∏i=1N[π(xi)]yi[1−π(xi)]1−yi∏i=1N[π(xi)]yi[1−π(xi)]1−yi
对数似然函数为:
L(w)==∑i=1N[yilnπ(x)+(1−yi)ln(1−π(xi))]∑i=1N[yi(w⋅x)−ln(1+exp(w⋅x))]L(w)=∑i=1N[yilnπ(x)+(1−yi)ln(1−π(xi))]=∑i=1N[yi(w⋅x)−ln(1+exp(w⋅x))]
对 L(w)L(w) 求极大值,即可得到 ww 的估计值。
2.3 两种思路的分析比较
根据以上分析可见,虽然 Andrew NG 和 李航 分别定义了不同形式的逻辑斯谛回归模型,并且采用了不同的思路进行进行参数估计,但是最终二者的目标函数却完全等价。导致这个结果的根本原因在于二者都采用了极大似然估计法来进行参数估计,都是经验风险最小化原则在统计学习的应用。
3. 目标函数极值求解方法
常用梯度下降法或拟牛顿法来估计数值解。
下面以求极大似然函数极大值为例来说明算法步骤。
对数似然函数为:
L(w)=∑i=1N[yi(w⋅x)−ln(1+exp(w⋅x))]L(w)=∑i=1N[yi(w⋅x)−ln(1+exp(w⋅x))]
其梯度为:
∂L(w)∂w==∑i=1N(yi−exp(w⋅xi)1+log(1+exp(w⋅xi)))xi∑i=1N(yi−π(xi))xi∂L(w)∂w=∑i=1N(yi−exp(w⋅xi)1+log(1+exp(w⋅xi)))xi=∑i=1N(yi−π(xi))xi
值得一提的是,这里得出的梯度和线性回归中的梯度完全相同!
算法如下:
repeat{w=w−α∂L(w)∂w(simultaneouslyupdateallwi)}