[学习笔记]分类算法之logistic 回归模型

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))1yi)

=Ni=1(yi)lnπ(xi)+(1yi)ln(1π(xi))

目前是求  l(θ) 的极大值。

采用的方法是梯度下降或者牛顿法。

之前对模型的推导不理解,也很好奇,所以尽可能的将推导过程写出来,检验一下。

dθjl(θ)

=Ni=1(yiπ(xi)1dθjπ(xi)(1yi)(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(1yi)π(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

你可能感兴趣的:(Algorithm,c,算法,input,dataset,分布式应用)