zoukankan      html  css  js  c++  java
  • 广义线性模型的理解

    世界中(大部分的)各种现象背后,都存在着可以解释这些现象的规律。机器学习要做的,就是通过训练模型,发现数据背后隐藏的规律,从而对新的数据做出合理的判断。

    虽然机器学习能够自动地帮我们完成很多事情(比如训练模型的参数),但有一些基本的事情还是需要我们自己完成的,例如概率分布模型的选择。比如我们需要判断一封邮件是否为垃圾邮件,由于这是一个二分类问题,在众多概率分布模型之中,伯努利分布($P(y=1)=phi$,$P(y=0)=1-phi$ 的分布)似乎是一个较好的选择。

    但还有一个问题需要解决:$phi$ 和特征 $X$ 以及模型参数 $ heta$ 之间的关系是什么。我们可以取 $phi = X^T heta$ (虽然这样看起来就非常不合理,因为 $phi$ 的取值可能会超出 0 ~ 1),可以取 $phi = egin{cases} 1 & (X^T heta ge 0) \ 0 & (X^T heta < 0) end{cases}$ ,还可以有很多很多种选择。

    广义线性模型就是众多选择中的一种,它为 $phi$、$X$ 与 $ heta$ 之间的关系问题提供了一个合理(?)的解决方案(虽然我并不知道广义线性模型比起其它模型有哪些优势- -)。广义线性模型为各个变量之间的关系做出了以下三个限定:

    1. 问题的概率模型属于指数族分布;

    (exponential family,该分布要求给定参数 $eta$ 的情况下,$y$ 的概率分布 $p(y;eta) = b(y) ext{exp}(eta^TT(y)-a(eta))$)

    2. 指数族分布公式中的 $eta = X^T heta$;

    3. 模型需要输出给定 $X$ 和 $ heta$ 的情况下,$T(y)$ 的期望。

    这样,我们只需要将我们选择的概率分布写成指数族分布的形式,就能求出 $T(y)$ 的期望与 $eta$ 的关系,再由第 2 个限定就能得出模型的输出值与 $X$ 和 $ heta$ 的关系。

    我们将伯努利分布写成指数族分布的形式,看看能发现什么。首先,伯努利分布的概率分布:$$p(y) = phi^y(1-phi)^{1-y}$$ 为了得到 exp 的形式,我们对式子取对数再取指数:$$p(y) = ext{exp}(y ext{log}(phi) + (1-y) ext{log}(1-phi)) = ext{exp}(y ext{log}(frac{phi}{1-phi})+ ext{log}(1-phi))$$ 我们就能发现指数族分布的形式 $$T(y)=y$$ $$b(y)=1$$ $$eta = ext{log}(frac{phi}{1-phi})$$ $$a(eta)=- ext{log}(1-phi)$$ 移项有 $$phi=frac{e^eta}{1+e^eta}=frac{1}{1+e^{-eta}}$$ 根据伯努利分布的定义,我们有 $$E(T(y)) = E(y) = 0 imes P(y=0) + 1 imes P(y=1)$$ $$= phi = frac{1}{1+e^{-eta}}$$ 再利用第 2 条限定有 $$E(y) = frac{1}{1+e^{-X^T heta}}$$ 我们发现,这个模型要输出的结果,就是 sigmoid 函数。这也是 logistic regression 中 sigmoid 函数的推导过程。也就是说,使用了 logistic regression,我们就需要假定数据符合属于指数族分布的伯努利分布。

  • 相关阅读:
    Excel 用row()函数 在Excel中自动添加序号,
    sql server数据导入
    Excel导入sq server后数据列以科学计数法显示
    left join 和 left outer join 的区别
    多点求值与暴力插值
    生成函数

    洲阁筛 学习笔记
    「NOI2017」游戏 解题报告
    CF 1045 H. Self-exploration 解题报告
  • 原文地址:https://www.cnblogs.com/tsreaper/p/glm.html
Copyright © 2011-2022 走看看