极大似然估计、贝叶斯分类器

贝叶斯分类器解决的是分类问题。

假设模型的输入特征为x,输出结果为y。首先我们需要弄明白几个概念:

  • 先验概率:p(y)
  • 后验概率:p(y|x)
  • 似然函数:p(x|y)
  • 证据因子:p(x)

极大似然估计

极大似然估计可以看做是一个训练贝叶斯分类器的方法。

首先我们需要了解贝叶斯公式:
p ( y i ∣ x ) = p ( x ∣ y i ) p ( y i ) ∑ m j = 1 p ( x ∣ y j ) p ( y j ) {p{ \left( {y\mathop{ {} } \nolimits_{ {i} } \left| x\right. } \right) } =\frac{ {p{ \left( {x \left| y\mathop{ {} } \nolimits_{ {i} } \right. } \right) } p{ \left( {y\mathop{ {} } \nolimits_{ {i} } } \right) } } } { { {\mathop{ \sum } \nolimits_{ {m} } ^{ {j=1} } {p{ \left( {x \left| y\mathop{ {} } \nolimits_{ {j} } \right. } \right) } p{ \left( {y\mathop{ {} } \nolimits_{ {j} } } \right) } } } } } } p(yix)=mj=1p(xyj)p(yj)p(xyi)p(yi)
其中,m为输出的分类类别个数。由于分母项:
∑ m j = 1 p ( x ∣ y j ) p ( y j ) = p ( x ) { {\mathop{ \sum } \nolimits_{ {m} } ^{ {j=1} } {p{ \left( {x \left| y\mathop{ {} } \nolimits_{ {j} } \right. } \right) } p{ \left( {y\mathop{ {} } \nolimits_{ {j} } } \right) } } } =p{ \left( {x} \right) } } mj=1p(xyj)p(yj)=p(x)
不随着输出的不同而改变,先验概率也是一个确定的值。所以想最大化预测的准确率p(yi|x),即在输入第i类的x的情况下,输出的yi逼近于1,仅仅需要最大化似然函数p(x|yi)。

如何用已知的数据最大化似然函数呢?我们将输出结果为yi的输入x归为一个集合Di。我们假设,似然函数p(x|yi)具有确定的分布(可以先假设为正态分布),我们要用Di去估计这个分布的一些特定的参数,设这个分布的参数向量为θi。现在对于数据集Di关于θi的似然函数为:
p ( D i ∣ θ i ) = ∏ x ∈ D i p ( x ∣ θ i ) {p{ \left( {D\mathop{ {} } \nolimits_{ {i} } \left| \theta \mathop{ {} } \nolimits_{ {i} } \right. } \right) } ={\mathop{ \prod } \limits_{ {x \in D\mathop{ {} } \nolimits_{ {i} } } } {p{ \left( {x \left| \theta \mathop{ {} } \nolimits_{ {i} } \right. } \right) } } } } p(Diθi)=xDip(xθi)
由于概率的取值为[0,1],所以Di内的元素个数较大时,上式的连乘操作在计算机运算中容易下溢出,所以我们常常将上式去log,这样既不会造成下溢,也不改变其单调性。故极大似然估计可以写为:
a r g m a x θ i ∑ x ∈ D i l o g ( p ( x ∣ θ i ) ) {\mathop{ {argmax} } \limits_{ { \theta \mathop{ {} } \nolimits_{ {i} } } } {\mathop{ \sum } \limits_{ {x \in D\mathop{ {} } \nolimits_{ {i} } } } {log{ \left( {p{ \left( {x \left| \theta \mathop{ {} } \nolimits_{ {i} } \right. } \right) } } \right) } } } } θiargmaxxDilog(p(xθi))

朴素贝叶斯分类器

我们继续看贝叶斯公式:
p ( y i ∣ x ) = p ( y i ) p ( x ∣ y i ) p ( x ) {p{ \left( {y\mathop{ {} } \nolimits_{ {i} } \left| x\right. } \right) } =\frac{ {p{ \left( {y\mathop{ {} } \nolimits_{ {i} } } \right) } p{ \left( {x \left| y\mathop{ {} } \nolimits_{ {i} } \right. } \right) } } } { {p{ \left( {x} \right) } } } } p(yix)=p(x)p(yi)p(xyi)
p(yi|x)表示在输入是x的条件下,输出是i类的概率。

朴素贝叶斯分类器的思想是将输入x的每一维看成是独立的,所以:
p ( x ∣ y i ) = ∏ k = 1 d p ( x k ∣ y i ) { {p{ \left( {x \left| y\mathop{ {} } \nolimits_{ {i} } \right. } \right) } =} {\mathop{ \prod } \limits_{ {k=1} } ^{ {d} } {p{ \left( {x\mathop{ {} } \nolimits_{ {k} } \left| y\mathop{ {} } \nolimits_{ {i} } \right. } \right) } } } } p(xyi)=k=1dp(xkyi)
其中d为输入数据的特征个数。

这样就可以通过极大似然估计算出每个似然函数的参数,比较贝叶斯公式分子上的值,哪个类最大就可以作为输出。从而可以通过贝叶斯公式求解分类问题。

局限性

  • 似然函数的分布不好确定,需要根据分类任务具体情况来决定,有时难以描述。
  • 输入特征之间不一定相互独立。

你可能感兴趣的:(机器学习,机器学习,朴素贝叶斯,贝叶斯分类,极大似然估计,概率论)