logistic回归和最大熵

回顾发现,李航的《统计学习方法》有些章节还没看完,为了记录,特意再水一文。

0 - logistic分布

如《统计学习方法》书上,设X是连续随机变量,X服从logistic分布是指X具有以下分布函数和密度函数:

[F(x) = P(X leq x)=frac{1}{1+e^{-(x-mu)/gamma}} ]

[f(x) = F'(x) = frac{e^{-(x-mu)/gamma}}{1+e^{-(x-mu)/gamma}} ]

其中(mu)是位置参数,(gamma)是形状参数,logistic分布函数是一条S形曲线,该曲线以点((mu,frac{1}{2}))为中心对称,即:

[F(-x+mu)-frac{1}{2} = -F(x-mu)+frac{1}{2} ]

(gamma)参数越小,那么该曲线越往中间缩,则中心附近增长越快

图0.1 logistic 密度函数和分布函数

1 - 二项logistic回归

我们通常所说的逻辑回归就是这里的二项logistic回归,它有如下的式子:

[h_ heta(f x)=g( heta^Tf x) = frac{1}{1+e^{- heta^Tf x }} ]

这个函数叫做logistic函数,也被称为sigmoid函数,其中(x_iin{f R}^n,y_iin{0,1})且有如下式子:
(P(y=1|f x; heta) = h_ heta(f x))
(P(y=0|f x; heta) =1- h_ heta(f x))
(logfrac{P(y=1|f x; heta) }{1-P(y=1|f x; heta) }= heta^Tf x)
即紧凑的写法为:

[p(y|f x; heta) = (h_ heta(x))^y(1-h_ heta(f x))^{1-y} ]

基于(m)个训练样本,通过极大似然函数来求解该模型的参数:

[egin{eqnarray}L( heta) &=&prod_{i=1}^mp(y^{(i)}|x^{(i)}; heta)\ &=&prod_{i=1}^m(h_ heta(x^{(i)}))^{y^{(i)}}(1-h_ heta(f x^{(i)}))^{1-y^{(i)}} end{eqnarray}]

将其转换成log最大似然:
$$egin{eqnarray}it l(	heta)
	&=&log L(	heta)\
	&=&sum_{i=1}^my^{(i)}log h(x^{(i)})+(1-y^{(i)})log (1-h(x^{(i)}))
end{eqnarray}$$
而该sigmoid函数的导数为:$g'(z) = g(z)(1-g(z))$,假设$m=1$(即随机梯度下降法),将上述式子对关于$	heta_j$求导得:


ps:上述式子是单样本下梯度更新过程,且基于第(j)个参数(标量)进行求导,即涉及到输入样本(x)的第(j)个元素(x_j)
而关于参数( heta)的更新为:( heta:= heta+alpha abla_ hetait l( heta))
ps:上面式子是加号而不是减号,是因为这里是为了最大化,而不是最小化
通过多次迭代,使得模型收敛,并得到最后的模型参数。

2 - 多项logistic回归

假设离散型随机变量(Y)的取值集合为({1,2,...,K}),那么多项logistic回归模型为:

[P(Y=k|x) = frac{e^{( heta_k* f x)}}{1+sum_{k=1}^{K-1}e^{( heta_k* f x)}},k=1,2,...K-1 ]

而第(K)个概率为:

[P(Y=K|x) = frac{1}{1+sum_{k=1}^{K-1}e^{( heta_k* f x)}} ]

这里(xin{f R}^{n+1}, heta_kin {f R}^{n+1}),即引入偏置。

3 - softmax

logistic回归模型的代价函数为:

[J( heta) = -frac{1}{m}left[sum_{i=1}^{m} y^{(i)}log h_ heta({f x}^{(i)})+(1-y^{(i)})log (1-h_ heta({f x}^{(i)})) ight] ]

而softmax是当多分类问题,即(y^{(i)}in {1,2,...,K})。对于给定的样本向量(f x),模型对每个类别都会输出一个概率值(p(y=j|f x)),则如下图:

其中( heta_1, heta_2,... heta_k in R^{n+1})都是模型的参数,其中分母是为了归一化使得所有概率之和为1.
从而softmax的代价函数为:

[egin{eqnarray}J( heta) &=& -frac{1}{m}left[sum_{i=1}^{m} sum_{j=1}^K1{y^{(i)}=j}log frac{e^{ heta_j^T{f x}^{(i)}}}{sum_{l=1}^Ke^{ heta_l^T{f x}^{(i)}}} ight]\ &=& -frac{1}{m}left[sum_{i=1}^{m} sum_{j=1}^K1{y^{(i)}=j}left[log {e^{ heta_j^T{f x}^{(i)}}}-log{sum_{l=1}^Ke^{ heta_l^T{f x}^{(i)}}} ight] ight] end{eqnarray}]

其中,(p(y^{(i)}=j|{f x}^{(i)}; heta)=frac{e^{ heta_j^T{f x}^{(i)}}}{sum_{l=1}^Ke^{ heta_l^T{f x}^{(i)}}})该代价函数关于第j个参数的导数为:

[egin{eqnarray} abla_{ heta_j}J( heta) &=&-frac{1}{m}sum_{i=1}^{m}1{y^{(i)}=j}left[frac{e^{ heta_j^T{f x}^{(i)}}* {f x}^{(i)}}{e^{ heta_j^T{f x}^{(i)}}}-frac{e^{ heta_j^T{f x}^{(i)}}* {f x}^{(i)}}{sum_{l=1}^Ke^{ heta_l^T{f x}^{(i)}}} ight]\ &=&-frac{1}{m}sum_{i=1}^{m}1{y^{(i)}=j}left[{f x}^{(i)}-frac{e^{ heta_j^T{f x}^{(i)}}* {f x}^{(i)}}{sum_{l=1}^Ke^{ heta_l^T{f x}^{(i)}}} ight]\ &=&-frac{1}{m}sum_{i=1}^{m}{f x}^{(i)}left(1{y^{(i)}=j}-frac{e^{ heta_j^T{f x}^{(i)}}}{sum_{l=1}^Ke^{ heta_l^T{f x}^{(i)}}} ight)\ &=&-frac{1}{m}sum_{i=1}^{m}{f x}^{(i)}left[1{y^{(i)}=j} - p(y^{(i)}=j|{f x}^{(i)}; heta) ight] end{eqnarray}]

ps:因为在关于( heta_j)求导的时候,其他非( heta_j)引起的函数对该导数为0。所以(sum_{j=1}^K)中省去了其他部分
ps:这里的( heta_j)不同于逻辑回归部分,这里是一个向量;

4 - softmax与logistic的关系

将逻辑回归写成如下形式:

[egin{eqnarray}J( heta) &=& -frac{1}{m}left[sum_{i=1}^{m} y^{(i)}log h_ heta({f x}^{(i)})+(1-y^{(i)})log (1-h_ heta({f x}^{(i)})) ight]\ &=& -frac{1}{m}left[sum_{i=1}^{m} sum_{j=0}^11{y^{(i)}=j}log p(y^{(i)}=j|{f x}^{(i)}; heta) ight] end{eqnarray}]

可以看出当k=2的时候,softmax就是逻辑回归模型

参考资料:
[] 李航,统计学习方法
[] 周志华,机器学习
[] CS229 Lecture notes Andrew Ng
[] ufldl
[] Foundations of Machine Learning

原文地址:https://www.cnblogs.com/shouhuxianjian/p/9773335.html