from: http://www.hxxiaopei.com/?p=117
logistic regression是统计学习中经典的分类算法,属于对数线性模型。
给定一个数据集合 (x1,y1)(x2,y2)...(xn,yn) ,有监督学习构建模型,学习过程就是模型参数 θ 的学习过程。作为discrimination algorithm,对 P(Y|X;θ ) 建模,
针对二分类问题,我们选择logitic 分布来描述P(Y|X)的分布, g(x)=ex1+ex ,,这样logistic回归模型服从下面的条件概率:
P(y=1|x)=eθTx1+eθTx
P(y=0|x)=1−(P(y=1|x)=11+eθTx
在预测时,给定Input value x,分别计算 P(y=1|x),P(y=0|x) ,x属于概率大的那个类别。
关于为什么选择logistic函数,我理解(参考斯坦福视频 Ng的说法):
1.logistic函数形式比较简单,处理起来也比较简单
2.生成模型可以得到判别模型(反过来不成立),生成模型首先对数据建模,假设模型服从F(x)分布,也就是数据可以有F(x)生成,那么F(x)是二项分布、 γ 分布、gaussian分布等,对应的判别模型都是logistic分布(神奇,不过这个过程还不是很了解,需要对generative model和discriminative model进一步了解),而判别模型是不考虑数据分布的,所以选择logistic分布大多数情况下都是对的。
定义模型后,需要基于DataSet学习模型参数,也就是 θ ,使得数据的概率最大,我们可以用极大似然估计法估计模型参数。
为了方便计算,定义:
p(y=1|x;θ)=π(x),p(y=0|x;θ)=1−π(x)
则有:
p(y|x;θ)=π(x)y=1(1−π(x))y=0
定义参数的似然函数 L(θ)=P(Y|X;θ)=∏Ni=1p(yi|xi;θ) ,
对数似然函数:
l(θ) =∑Ni=1lnp(yi|xi;θ)
=∑Ni=1ln(π(xi)yi(1−π(xi))1−yi)
=∑Ni=1(yi)lnπ(xi)+(1−yi)ln(1−π(xi))
目前是求 l(θ) 的极大值。
采用的方法是梯度下降或者牛顿法。
之前对模型的推导不理解,也很好奇,所以尽可能的将推导过程写出来,检验一下。
dθjl(θ)
=∑Ni=1(yiπ(xi)−1dθjπ(xi)−(1−yi)(1−π(xi))−1dθjπ(xi))
其中
dθjπ(xi)
=(1+eθTxi)−2eθTxixji
=(1+eθTxi)−1eθTxi1+eθTxixji
=(1−π(xi))π(xi)xji
那么
dθjl(θ)
=∑Ni=1(yi(1−π(xi))xji−(1−yi)π(xi)xji)
=∑Ni=1yi−π(xi)xji
基于梯度下降方法,有
θj=θj+αdθjl(θ)
=>θj=θj+αsumNi=1(yi−π(xi)xji
进行迭代,求解参数。
这种做法每迭代纠结一个参数,需要遍历一遍数据,效率低。
Ng提到做随机梯度下降,只需要遍历一遍数据,但是不一定是最优解
for i to N {
for j to M;
θj=θj+α(yi−π(xi)x