zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    子元素margin带动父元素拖动
    SideBar---fixed定位
    身份证号码
    正则表达式
    关于encodeURIComponent的用法
    判断用户使用的浏览设备
    获取cookie值
    第五周学习总结
    第四周学习总结
    寻找你的黑客偶像
  • 原文地址:https://www.cnblogs.com/shouhuxianjian/p/9773335.html
Copyright © 2011-2022 走看看