zoukankan      html  css  js  c++  java
  • LR与Sigmod函数

            在使用LR时,经常用Sigmod函数来表示一个概率,为什么LR可以使用Sigmod函数呢?

            首先,LR的假设只有一个,就是两个类别的特征服从均值不等、方差相等的高斯分布。为什么假设它服从高斯分布?一方面,高斯分布容易理解;另一方面,从信息论的角度看,当均值和方差已知时,高斯分布是熵最大的分布。当熵分布最大时,可以平摊风险。就如二分查找法,每次都将中间作为查找点,目的就是为了平摊风险。

            自定义“风险”:

    R(y=0|x) = lambda _{00}P(y=0|x) + lambda _{01}P(y=1|x)

    R(y=1|x) = lambda _{10}P(y=0|x) + lambda _{11}P(y=1|x)

    式中,R(y=0|x)表示样本预测为0的风险,R(y=1|x)表示样本预测为1的风险,lambda _{ij}表示预测为i,实际为j所带来的风险。

            在LR算法中,它认为,预测正确不会带来风险,即lambda _{00}lambda _{11}都为0,另外,认为标签为0,而预测为1和认为标签为1,而预测为0,两者所带来的风险是一样的,所以lambda _{01}lambda _{10}统一用lambda来表示。

            上面的“风险”化简为:

    R(y=0|x) = lambda P(y=1|x)

    R(y=1|x) = lambda P(y=0|x)

            对于某一个样本,应该根据风险最小化来预测其类别,即比较两个条件概率,并把样本分配到概率最大的那个类中。

    如:frac{P(y=1|x)}{P(y=0|x)}

    将上式取对数,再利用朴素贝叶斯公式展开,得到:

    lg{frac{P(y=1|x)}{P(y=0|x)}}

    = lg(frac{P(x,y=1)}{P(x,y=0)})

    = lg {frac{P(x|y=1)P(y=1)}{P(x|y=0)P(y=0)}}

    =lg{frac{P(x|y=1)}{P(x|y=0)}} + lg {frac{P(y=1)}{P(y=0)}}

    由于P(y=1)P(y=0)是常数,可以用常数C_1代替,套入高斯公式,

    lg{frac{P(x|y=1)}{P(x|y=0)}} + lg {frac{P(y=1)}{P(y=0)}}

    = - frac{(x-mu _1)^2}{2sigma ^2} + frac{(x-mu _0)^2}{2sigma ^2} + C_1 = frac{mu _1 - mu _2}{sigma ^2}x + C_2 = wx

    两边取指数,得到:

    P(y=1|x) = frac{1}{1+exp(-wx)}

            综上,LR算法可以使用Sigmod函数来进行计算分析。

  • 相关阅读:
    comm---两个文件之间的比较
    fgrep---指定的输入文件中的匹配模式的行
    zip---解压缩文件
    unzip---解压缩“.zip”压缩包。
    tar---打包,解压缩linux的文件和目录
    scp---远程拷贝文件
    make---GNU编译工具
    gcc---C/C++ 编译器
    expr---计算工具
    curl -w 支持的参数
  • 原文地址:https://www.cnblogs.com/SysoCjs/p/11601377.html
Copyright © 2011-2022 走看看