在开始学习Andrew Ng 的机器学习的课程中,以为自己把最大似然估计,最大后验概率估计,以及logistic regression, 贝叶斯分类的关机搞的很清,但是上完了学校模式识别的课程之后,我的人生观就彻底颠覆了。。。。待我给大家娓娓道来。
先来说一下最大似然(MLE)和最大后验概率(MAP)这一对概念吧,这两个概念分别代表的是学术界两个派别,频率派和贝叶斯派的观点,最大似然估计(频率派)认为模型中的未知参数虽然未知,但是是一个常量(constant variable),而最大后验概率(贝叶斯派)认为模型中的未知参数是一个随机变量(random variable),也是服从某种分布的,只不过这种分布不被人所认知,这是需要我们去求解的。
下面开始整个的推理,先做一些铺垫,给定一组训练集, { x ( i ) , y ( i ) ) } , i = 1 , . . . , m \left \{ x^{(i)}, y^{(i))} \right \}, i=1,...,m {x(i),y(i))},i=1,...,m, 首先我们假设任意两个训练样本之间是独立的,而后所有的推理才能够成立,之后就开始分别描述MLE和MAP了,
对于MLE来说,模型中的未知参数是一个常量,上文说过,因而这里的在 x ( i ) x^{(i)} x(i)发生的情况下 y ( i ) y^{(i)} y(i) 发生的概率可以用 p ( y ( i ) ∣ x ( i ) ; θ ) p\left ( y^{(i)}|x^{(i)} ;\theta \right ) p(y(i)∣x(i);θ)来表示,这里用“;”的意思就是因为 θ \theta θ是一个常量,这就是Ng 所说的“parameterized by θ \theta θ”的意思,而后这些训练样本又是彼此独立的,因而整个训练集发生的概率,也就是所说的似然概率 L ( θ ) L(\theta) L(θ),是这些 p ( y ( i ) ∣ x ( i ) ; θ ) p\left ( y^{(i)}|x^{(i)} ;\theta \right ) p(y(i)∣x(i);θ)的乘积,即如下公式,
L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) L(\theta)= \prod_{i=1}^{m}p\left ( y^{(i)}|x^{(i)} ;\theta \right ) L(θ)=i=1∏mp(y(i)∣x(i);θ)
而如何确定 θ \theta θ呢,因为得到训练集这件事情已经发生了,因而让 L ( θ ) L(\theta) L(θ)最大的时候的那个 θ \theta θ才是真正的 θ \theta θ, 因而把 L ( θ ) L(\theta) L(θ)对 θ \theta θ进行求导,得到导数为0的那个 θ \theta θ就是我们需要求解的 θ \theta θ。
下面再来说一下MAP, 上文说了这个概念是基于模型的未知参量是一个随机变量(random variable)的这个假设的,因而我们这里的在 x ( i ) x^{(i)} x(i)发生的情况下 y ( i ) y^{(i)} y(i) 发生的概率可以用 p ( y ( i ) ∣ x ( i ) , θ ) p\left ( y^{(i)}|x^{(i)} ,\theta \right ) p(y(i)∣x(i),θ)来表示, 注意,与上文不同的地方在于这里用的是“,”,而不是“;”,就证明 y ( i ) y^{(i)} y(i)发生通用会受到 θ \theta θ的影响,因而这里的 L ( θ ) L(\theta) L(θ)就变为了如下公式,
L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) , θ ) ⋅ p ( θ ) L(\theta)= \prod_{i=1}^{m}p\left ( y^{(i)}|x^{(i)} ,\theta \right )\cdot p(\theta) L(θ)=i=1∏mp(y(i)∣x(i),θ)⋅p(θ)
希望大家能够明白我说的这一番话。 理解这一切之后我们再来一下较为实用的东西。 上文所说的这两个概念只是求解问题的一个步骤,只不过应用在不同的前提( θ \theta θ是否为常量还是变量)之下,而后我们真正需要的是求解回归和分类问题,只不过MLE和MAP是求解过程中的一个步骤而已,谨记这一点,不然的话会把所有的概念混为一谈。
下面来一下简要回归和分类的区别,回归是用来拟合曲线的,分类是用来做区分的,两个概念的不同就在于回归的输出是一个连续值,而分类的输出是一些离散的值,每个值代表这个输入所属的类, 因为本篇博客的重点不是这个,因而在这里就不再赘述了。
本文的第二个重点在于阐述logistic regression 和Bayes Classification 的区别,这两类方法都是用来做分类的,而应用的前提条件不一样,这个前提条件的不同会在下文阐述清楚。而下文的所有内容都是基于最大似然来做的,即这里的 θ \theta θ是一个常量,而对于最大后验概率, 碍于时间问题,就不介绍了。
对于logistic regeression 来说把两类的数据看成了一个分布,这个分布中 y y y的取值为0或者1, 即有如下公式,
P ( y = 1 ∣ x ; θ ) = h θ ( x ) P\left ( y=1|x;\theta \right )=h_{\theta }\left ( x \right ) P(y=1∣x;θ)=hθ(x)
P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) P\left ( y=0|x;\theta \right )=1-h_{\theta }\left ( x \right ) P(y=0∣x;θ)=1−hθ(x)
总体的 p ( y ∣ x ; θ ) p(y|x;\theta) p(y∣x;θ)的表达式可以写为如下公式,
p ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y p(y|x;\theta) = (h_{\theta }\left ( x \right ))^{y}(1-h_{\theta }\left ( x \right ))^{1-y} p(y∣x;θ)=(hθ(x))y(1−hθ(x))1−y
这里的 h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_{\theta }\left ( x \right )=g(\theta^{T}x)=\frac{1}{1+e^{-\theta^{T}x}} hθ(x)=g(θTx)=1+e−θTx1, 而 g ( z ) = 1 1 + e − z g(z)= \frac{1}{1+e^{-z}} g(z)=1+e−z1就是大名鼎鼎的logistic function , 而其图形表示为如下图(图来自于Ng的课件 )
而后再用最大似然估计的方法来解决后面的问题,如下,
L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) L(\theta)= \prod_{i=1}^{m}p\left ( y^{(i)}|x^{(i)} ;\theta \right ) L(θ)=i=1∏mp(y(i)∣x(i);θ)
之后就能够把 θ \theta θ求解出来了,之后真正测试的时候通过测试样本的 x x x求解出 h θ ( x ) h_{\theta}(x) hθ(x)来,大于等于0.5y的取值就是1,小于0.5的时候y的取值就是0。
下面来说一下贝叶斯分类,这个方法就是把这些训练数据看成两个分布,每一类数据( p ( x ∣ y = 0 ) p(x|y=0) p(x∣y=0)和 p ( x ∣ y = 1 ) p(x|y=1) p(x∣y=1))为一个分布,通过求解每一类的模型,来反推出 p ( y ∣ x ) p(y|x) p(y∣x),这就是鼎鼎大名的贝叶斯公式,公式如下所示,
p ( y ∣ x ) = p ( x ∣ y ) ⋅ p ( y ) p ( x ) p(y|x)=\frac{p(x|y)\cdot p(y)}{p(x)} p(y∣x)=p(x)p(x∣y)⋅p(y)
之后再通过对 L ( θ ) L(\theta) L(θ)的最大似然估计求解出我们想要的结果。
等到测试的时候,就把x最为输入,分别计算 p ( y = 1 ∣ x ) p(y=1|x) p(y=1∣x)和 p ( y = 0 ∣ x ) p(y=0|x) p(y=0∣x),哪个大就把x判断为哪个。
下面说一个小插曲,就是什么是事件的因,什么是事件的果,观察到的数据就是果,而数据本身的分类特性或者标签就是因,这个在我看来很容易搞混,而后验概率是由果推因就是所说的 p ( y ∣ x ) p(y|x) p(y∣x),而因的概率是先验概率即 p ( y ) p(y) p(y),希望大家能够谨记。
来个小结吧,本文总结了最大似然,最大后验概率估计的关系,以及logistic regression 和Bayes Classification 的关系,希望能够为大家的学习有所帮助。