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函数来进行计算分析。

  • 相关阅读:
    bzoj2595 / P4294 [WC2008]游览计划
    bzoj4698 / P2463 [SDOI2008]Sandy的卡片
    [bzoj3514]Codechef MARCH14 GERALD07加强版
    [bzoj2440][中山市选2011]完全平方数
    [bzoj2243][SDOI2011]染色
    [bzoj2589]Spoj 10707 Count on a tree II
    [bzoj1452] [JSOI2009]Count
    [bzoj2588][Spoj 10628] Count on a tree
    [bzoj2434][Noi2011]阿狸的打字机
    Codeforces Round #408(div.2)
  • 原文地址:https://www.cnblogs.com/SysoCjs/p/11601377.html
Copyright © 2011-2022 走看看