zoukankan      html  css  js  c++  java
  • Logistic回归分析

    【原创帖!转载请注明出处:http://www.cnblogs.com/LaplaceAkuir/p/7484796.html】

    Logistic回归分析

    (qquad Logistic回归为概率型非线性回归模型,机器学习常用的二分类分类器,其表达式为:)

    (quad quad z=w_{1}*x_{1}+w_{2}*x_{2}+cdots +w_{n}*x_{n}+b=sum_{i=0}^n w_{i}x_{i} (其中 b等于w_{0},x_{0}等于1)则:)

    [f(x) = frac{1}{1+exp(-z)} ]

    (quad quad)即对于二分类,如果(f(x)ge{0.5}),则(x)属于第一类,即预测(y=1),反之(x)属于第二类,预测(y=0);样本的分布如下,其中,(C_1)表示第一个类别,(C_2)表示第二个类别,样本个数为(n)

    [trainingData quad\, x^1 quad\, x^2 quad\, x^3 quad\,cdots quad\, x^n ]

    [labels quad C_{1} quad C_{1} quad C_{2} quad cdots quad C_{1} ]

    (qquad)我们的目的是:对于类别为(1)的正样本(f_{w,b}(x)) 尽可能大,而类别为(2)的负样本(f_{w,b}(x)) 尽可能小,则我们需要最大化:(L(w,b)=f_{w,b}(x^1)f_{w,b}(x^2)(1-f_{w,b}(x^3))cdots f_{w,b}(x^n))来寻找最佳的(w)(b)

    [w^{*},b^{*} = argmaxlimits_{w,b}(L(w,b))Longrightarrow w^{*},b^{*} = argminlimits_{w,b}(-ln{L(w,b)}) ]

    随机梯度下降法

    (qquad 我们需要优化的函数:-ln{L(w,b)} = -{ln{f_{w,b}(x^1)}+lnf_{w,b}(x^2)+ln(1-f_{w,b}(x^3))+cdots lnf_{w,b}(x^n)}quad \)

    [qquad 假设: egin{cases} hat{y} = 1 qquad xin1 \ \ hat{y} = 0 qquad xin0 end{cases} qquad 已知\,f(x) = frac{1}{1+exp(-z)}quad z = sum_{i=0}^n w_{i}x_{i} 则 ]

    (qquad 我们需要优化的函数简化为:ln{L(w,b)} =sum_{j=1}^{n}{hat{y}^j\,lnf_{w,b}(x^j)+(1-hat{y}^j)\,ln(1-f_{w,b}(x^j))} \)

    (qquad 当\,\,hat{y}=1时quad hat{y}\,lnf_{w,b}(x)+(1-hat y)\,ln(1-f_{w,b}(x)) = lnf_{w,b}(x) \)
    (qquad 当\,\,hat{y}=0时quad hat{y}\,lnf_{w,b}(x)+(1-hat y)\,ln(1-f_{w,b}(x)) = ln(1-f_{w,b}(x)) qquad \)
    (qquad 即均满足上式 , 因此:)

    (qquad qquad quad frac{partial lnL(w,b)}{partial w_i}=sum_{j=1}^{n}hat{y}^jfrac{ partial lnf_{w,b}(x^j) }{partial w_i}+(1-hat{y}^j)frac{partial (1-lnf_{w,b}(x^j))}{partial w_i} \)

    (qquad quad quad 而 \, frac{partial lnf_{w,b}(x)}{partial w_i}=frac{partial lnf_{w,b}(x)}{partial z}*frac{partial z}{partial w_i} \)

    (qquad qquad qquad qquad quad=frac{1}{f_{w,b}(x)}* frac{partial f_{w,b}(x)}{partial z}*x_i \)

    (qquad qquad qquad qquad quad=frac{1}{f_{w,b}(x)}*f_{w,b}(x)*(1-f_{w,b}(x))*x_i \)

    (qquad qquad qquad qquad quad=(1-f_{w,b}(x))*x_i \)

    (quad quad 同理 quad frac{partial (1-lnf_{w,b}(x))}{partial w_i}=f_{w,b}(x)*x_i qquad 则化简后:\)
    (qquad quad\,\, qquad frac{partial lnL(w,b)}{partial w_i}=sum_{j=1}^{n}hat{y}^jfrac{ partial lnf_{w,b}(x^j) }{partial w_i}+(1-hat{y}^j)frac{partial (1-lnf_{w,b}(x^j))}{partial w_i} \)

    (qquad qquad qquad quad qquad = sum_{j=1}^{n}{hat{y}^j(1-f_{w,b}(x^j))x^j_i+(1-hat{y}^j)*f_{w,b}(x^j)x^j_i} \)

    (qquad qquad quadqquad qquad = sum_{j=1}^{n}(hat{y}^j -f_{w,b}(x^j))x^j_i \)

    (qquad b的推导与w的相似,可以得到w的更新迭代过程:w_{i} leftarrow w_{i}-alpha*sum_{j=0}^{n}(hat{y}^j-f_{w,b}(x^j))x^j_i \)

    思考题

    1. 为什么选用(crossEntropy)损失函数,而不用L2损失函数

    (答:logistic不像linear \,\, regression使用L2损失函数的原因,主要是由于logistic的funcion的形式,\)
    (由于sigmoid函数的存在,如果logistic采取L2 loss时,损失函数为:\)

    [frac{partial (f_{w,b}(x)-hat{y})^2}{partial w_i}=2(f_{w,b}(x)-hat{y})f_{w,b}(x)(1-f_{w,b}(x))x_i ]

    (则当\,hat{y}=1, f_{w,b}(x) = 1 quad 预测为1 ,即预测完全正确时 quad loss=0 quad \)
    (但是当\,hat{y}=1,f_{w,b}(x) = 0 quad 预测为0 ,即预测完全错误时 quad loss却依然为0 quad显然不对 \)

    2. (logistic \,\,regression)的分类概率为什么选取了(sigmoid)函数

    (答: 我们假设样本的分布服从二次高斯分布,即\)

    (f_{mu,Sigma}(x) = frac{1}{(2pi)^{D/2}}frac{1}{|Sigma|^{1/2}}exp{-frac{1}{2}(x-mu)^T|Sigma|^{-1}(x-mu)},其中mu为均值,Sigma为协方差矩阵 \)

    (输入为x,输出f_{mu,Sigma}(x)为样本x的概率密度,高斯分布的形状分布取决于均值mu和协方差矩阵Sigma, \)
    (因此需要求取最佳的高斯分布来满足样本的分布 \)

    [Maximum Likelihood : L(mu,Sigma) = f_{mu,Sigma}(x^1)f_{mu,Sigma}(x^2)f_{mu,Sigma}(x^3)cdotscdots f_{mu,Sigma}(x^{N}) ]

    [mu^{*},Sigma^{*} = argmaxlimits_{mu,Sigma}L(mu,Sigma) ]

    [mu^{*} = frac{1}{N}sum_{i=0}^{N}{x^i} ]

    [Sigma^{*} = frac{1}{N}sum_{i=0}^{N}{(x^i-mu^{*})(x^i-mu^{*})^T} ]

    (对于一个二分类,我们假设类别1的样本高斯分布的均值为mu^1,类别2的样本的高斯分布均值为mu^2,他们具有相同的协方差Sigma \)

    [mu^1 = sum_{i=1}^{n_1} x_iqquad (x_i in C_1) quad ;quad mu^2 = sum_{i=1}^{n_2} x_iquad(x_i in C_2) ]

    [Sigma^1 = sum_{i=1}^{n_1}(x_i-u^1)(x_i-u^1)^T ;quad Sigma^2 = sum_{i=1}^{n_2}(x_i-u^2)(x_i-u^2)^T ;quad Sigma=frac{n_1}{n_1+n_2}Sigma^1+frac{n_1}{n_1+n_2}Sigma^2 ]

    (对于样本x,如果属于C_1则有:\)

    (qquad qquadqquad qquad P(C_{1}|x) \,\,= frac{P(C_{1},x)}{P(x)} \)

    (qquad qquadqquad qquad qquad qquad =frac{P(x|C_{1})*P(C_{1})}{P(x|C_{1})*P(C_{1})+P(x|C_{2})*P(C_{2})} \)

    (qquad qquadqquad qquad qquad qquad =frac{1}{1+frac{P(x|C_{2})P(C_{2})}{P(x|C_{1})P(C_{1})}} \)

    (qquad qquadqquad qquad qquad qquad =frac{1}{1+exp(-alpha)} \)

    (其中\,\, alpha= ln(frac{P(x|C_{1})*P(C_{1})}{P(x|C_{2})*P(C_{2})}))

    (将P(x|C_i)带入高斯分布的公式:\)

    [P(C_1)=frac{n_1}{n_1+n_2}quad , quad P(C_2)=frac{n_2}{n_1+n_2} ]

    [P(x|C_1) = frac{1}{(2pi)^{D/2}}frac{1}{|Sigma|^{1/2}}exp{-frac{1}{2}(x-mu^1)^T|Sigma|^{-1}(x-mu^1)} ]

    [P(x|C_2) = frac{1}{(2pi)^{D/2}}frac{1}{|Sigma|^{1/2}}exp{-frac{1}{2}(x-mu^2)^T|Sigma|^{-1}(x-mu^2)} ]

    (alpha= lnP(x|C_1)-lnP(x|C_2)+lnfrac{P(C_1)}{P(C_2)} \)
    (quad =-frac{1}{2}(x-mu^1)^T|Sigma|^{-1}(x-mu^1)-(-frac{1}{2}(x-mu^2)^T|Sigma|^{-1}(x-mu^2))+lnfrac{n_1}{n_2}\)
    (quad =-frac{1}{2}x^T(Sigma)^{-1}x+(u^1)^T(Sigma)^{-1}x-frac{1}{2}(u^1)^T(Sigma)^{-1}u^1+frac{1}{2}x^T(Sigma)^{-1}x-(u^2)^T(Sigma)^{-1}x+frac{1}{2}(u^2)^T(Sigma)^{-1}u^2+lnfrac{n_1}{n_2}\)
    (quad = (u^1-u^2)^T(Sigma)^{-1}x-frac{1}{2}(u^1)^T(Sigma)^{-1}u^1+frac{1}{2}(u^2)^T(Sigma)^{-1}u^2+lnfrac{n_1}{n_2}\)
    (quad = wx+b\)
    (quad w = (u^1-u^2)^T(Sigma)^{-1} quad ; quad b=-frac{1}{2}(u^1)^T(Sigma)^{-1}u^1+frac{1}{2}(u^2)^T(Sigma)^{-1}u^2+lnfrac{n_1}{n_2}\)
    (quad 因此可以得到对于满足猜想的二次高斯分布的datasets,生成模型的分类表达式与logistic是一致的 \)

    生成model与判别model对比

    生成模型

    (基于现有的样本,对样本分布做了一个猜测(极大似然),因此当数据集较少,或者有噪声的时候 \)
    (都能达到一个较好的结果(不过分依赖于实际样本),并且可以根据不同的概率model完成样本分布的gauss \)

    判别模型

    (基于决策的方式(判别式),通过优化方法(sgd)寻找最优参数,对样本的依赖大,样本充足时,其 \)
    (效果一般比生成模型好(基于事实 not 基于猜测) \)

    小扩展

    多分类

    (基于先验概率得出的每个类别的后验概率为softmax函数,即: \)
    (qquad qquad qquad qquad \, P(C_i|x) = frac{P(x|C_i)P(C_i)}{sum_{j=1}^{n}P(x|C_j)P(C_j)}\)

    (qquad qquad qquad qquad qquad qquad = frac{exp(a_k)}{sum_{j=1}^{n}a_j}\)

    待续

    (未完待续)

  • 相关阅读:
    LVS的持久连接、会话保持和高可用介绍
    lvs整理
    ubuntu 12.04 下LVS的一些搭建心得和资料整理
    Ubuntu下配置LVS【h】
    关于vector push_back()与其他方式读取数据的效率对比(转)
    强大的vim配置文件,让编程更随意(转)
    E492: Not an editor command: ^M
    Building Vim from source(转)
    误删 libc.so.6的解决方法(转)
    CentOS安装glibc-2.14(转)
  • 原文地址:https://www.cnblogs.com/LaplaceAkuir/p/7484796.html
Copyright © 2011-2022 走看看