Logistic回归模型
二项Logistic回归模型(binomial logistic regression model)是一种分类模型,由条件概率分布P(Y∣X)表示,形式为参数化的logistic分布。
一、模型定义
模型是如下的条件概率分布:
P(Y=1∣X)=1+ew⋅x+bew⋅x+b
P(Y=0∣X)=1−P(Y=1∣X)=1+ew⋅x+b1
这里x∈Rn,Y∈0,1,w∈Rn和b∈R是参数,w称为权值,b称为偏置。
给定输入实例x计算得到P(Y=1∣x)和P(Y=0∣x),然后比较两个条件概率的大小,将实例x分到概率值较大的那一类。
为了方便,将权值向量和输入向量加以扩展,即令w0=b,x0=1,扩展为
w=(w0,w1,w2,...,wn)T
x=(x0,x1,x2,...,xn)T
这样,上面的模型变成:
P(Y=1∣X)=1+ew⋅xew⋅x
P(Y=0∣X)=1−P(Y=1∣X)=1+ew⋅x1
二、发生比
在统计和概率理论中,一个事件或者一个陈述的发生比(英语:Odds)是该事件发生和不发生的比率,公式为:
odds(p)=1−pp
其中p是该事件发生的概率,odds(p)是关于p的递增函数。
例如,如果一个人随机选择一星期7天中的一天,选择星期日的发生比是: 1−1/71/7=1/6。不选择星期日的发生比是 6/1。
对odds取对数(成为log of odds),也就是log1−pp,称为对数几率,这个在正式的数学文献中会记为logit(p),即:
logit(p)=log1−pp
该函数还是关于p的递增函数。
在Logistic回归中,对于某个实例x:
log1−pp=log1−P(Y=1∣x)P(Y=1∣x)=w⋅x
也就是实例x输出Y=1的对数几率是x的线性函数。
三、极大似然估计
给定训练数据集T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中,x(i)=(1,x1,x2,...,xn)T∈X=Rn+1,y(i)∈Y={0,1},应用极大似然估计发估计模型参数,从而得到Logistic回归模型。
设:P(Y=1∣x)=π(x)=1+ew⋅xew⋅x,P(Y=0∣x)=1−π(x)=1+ew⋅x1
则似然函数为:
i=1∏m[π(x(i))]y(i)[1−π(x(i))]1−y(i)
对数似然函数为:
L(w)=i=1∑m[y(i)lnπ(x(i))+(1−y(i))ln(1−π(x(i)))]
=i=1∑m[y(i)ln1−π(x(i))π(x(i))+ln(1−π(x(i)))]
=i=1∑m[y(i)(w⋅x(i))−ln(1+ew⋅x(i))]
该函数是高阶可导函数,对L(w)求极大值,即令每个样本的概率越大越好,得到w的估计值。
变换成求极小值:
wminL(w)=−i=1∑m[y(i)(w⋅x(i))−ln(1+ew⋅x(i))]
这样问题就变成了以对数似然函数为目标函数的最小值优化问题,Logistic回归学习中通常采用的方法是梯度下降和拟牛顿法。
计算梯度:
∂wj∂L(w)=−∂wj∂i=1∑m[y(i)(w⋅x(i))−ln(1+ew⋅x(i))]
=−i=1∑m(y(i)xj(i))+i=1∑m∂wj∂ln(1+ew⋅x(i))
=−i=1∑m(y(i)xj(i))+i=1∑m1+ew⋅x(i)1∂wj∂ew⋅x(i)
=−i=1∑my(i)xj(i)+i=1∑m1+ew⋅x(i)ew⋅x(i)xj(i)
=i=1∑m(1+ew⋅x(i)ew⋅x(i)−y(i))xj(i)
=i=1∑m(θ(w⋅x(i))−y(i))xj(i)
其中θ(x)=1+exex=1+e−x1,也称为sigmoid函数,然后得到:
∇L(w)=i=1∑m(θ(w⋅x(i))−y(i))x(i)
假定:
X=⎣⎢⎢⎢⎢⎡(x(1))T(x(2))T(x(3))T...(x(m))T⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡111...1x1(1)x1(2)x1(3)x1(m)x2(1)x2(2)x2(3)x2(m)............xn(1)xn(2)xn(3)xn(m)⎦⎥⎥⎥⎥⎥⎤,Y=⎣⎢⎢⎢⎢⎡y(1)y(2)y(3)...y(m)⎦⎥⎥⎥⎥⎤,w=⎣⎢⎢⎢⎢⎡w0w1w2...wn⎦⎥⎥⎥⎥⎤
则:
X⋅w=⎣⎢⎢⎢⎢⎢⎡111...1x1(1)x1(2)x1(3)x1(m)x2(1)x2(2)x2(3)x2(m)............xn(1)xn(2)xn(3)xn(m)⎦⎥⎥⎥⎥⎥⎤⋅⎣⎢⎢⎢⎢⎡w0w1w2...wn⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡(x(1))T⋅w(x(2))T⋅w(x(3))T⋅w...(x(m))T⋅w⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡wT⋅x(1)wT⋅x(2)wT⋅x(3)...wT⋅x(m)⎦⎥⎥⎥⎥⎤
θ(X⋅w)−Y=⎣⎢⎢⎢⎢⎡θ(wT⋅x(1))−y(1)θ(wT⋅x(2))−y(2)θ(wT⋅x(3))−y(3)...θ(wT⋅x(m))−y(m)⎦⎥⎥⎥⎥⎤
XT=[x(1)x(2)x(3)...x(m)]
XT⋅(θ(X⋅w)−Y)=i=1∑m(θ(w⋅x(i))−y(i))x(i)
最终得到:
∇L(w)=XT⋅(θ(X⋅w)−Y)
同时也可以得到:
L(w)=−i=1∑m[y(i)(w⋅x(i))−ln(1+ew⋅x(i))]=−(X⋅w)T⋅Y+ln(1+eX⋅w)⋅I
其中I为全1向量。
四、梯度下降法
1.批量梯度下降(Batch Gradient Descent)
输入:训练数据集T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中x(i)∈X=Rn,y(i)∈Y={0,1},i=1,2,...,m,学习率η(0<η⩽1);
输出:w,b,其中w=(w1,w2,...,wn)T,模型P(y=1∣x)=sigmoid(w⋅x+b)
1)将输入的每个x转换成x=(1,x1,x2,...xn),令w0=b,输出为w=(w0,w1,w2,...,wn)T
2)选取初始w(0)=(w0,w1,w2,...,wn)T
3)计算梯度XT⋅(θ(X⋅w(j))−Y),其中w(j)为第j次迭代的结果,则第j+1次为:
w(j+1)←w(j)−ηXT⋅(θ(X⋅w(j))−Y)
4)转到步骤(3),一直到L(w)满足一定条件,或者迭代到足够的次数。
在批量梯度下降算法中,每一步的迭代都需要计算所有样本,当样本数较大时,计算量会很大。
时间复杂度:
每次迭代更新X⋅w(j)=Y′的计算次数为m×n,θ(Y′)−Y=Z的计算次数为n次,XT⋅Z的计算次数为m×n,则每次迭代的时间复杂度为O(m×n),假定迭代次数为k次,则总时间复杂度为O(k×m×n)。
2.随机梯度下降(Stochastic Gradient Descent)
将上面的步骤(3)改为:
3)随机选取某个样本x(i),则:
w(j+1)←w(j)−η(θ(w(j)⋅x(i))−y(i))x(i)
一直到迭代到足够的次数。
时间复杂度:
每次迭代更新w(j)⋅x(i)=y′的计算次数为n,θ(y′)−y(i)=z的计算次数为1,zx(i)的计算次数为n,则每次迭代的时间复杂度为O(n),假设迭代次数为k,则总时间复杂度为O(k×n)。
参考:
https://zh.wikipedia.org/wiki/发生比
http://vividfree.github.io/机器学习/2015/12/13/understanding-logistic-regression-using-odds
http://blog.csdn.net/bitcarmanlee/article/details/51473567