贝叶斯理论

例子-正向几率

仍是拿质检员的例子来作分析,假如我是一个质检员,如今接到了三箱零件须要检验,其中第一箱有10个零件,第二箱有20个零件,第三箱有15个。半小时过去了,检验的结果出炉,第一箱有1个不合格,第二箱有3个不合格,第三箱2个不合格。html

箱子 总零件个数 不合格
A 10 1
B 20 3
C 15 2

那如今我从这三个箱子中随便拿取一个零件,这个零件是合格的几率是多少呢?咱们假设事件D:零件合格,则:算法

\begin{equation*}
\begin{split}
P(D)&=P(A)*P(D| A) + P(B) *P(D| B) + P(C)*P(D | C) \\
&=(1/3) * (9/10) + (1/3) * (17/20) + (1/3) * (13/15)  \\
&= 0.872
\end{split}
\end{equation*}

像这样得出一个零件是合格的几率就计算出来了,可是在机器学习领域中,可能咱们更想知道,给你一个样本,这个样本属于哪一个类目的问题,这也叫分类问题,这就涉及到反向几率的问题。网络

反向几率-朴素贝叶斯理论

如今咱们假设这样一个场景:你拿到了一个零件,这个零件是属于哪一个箱子?这个问题在机器学习中就是类比为:给你一个样本,这个样本有不少特征,机器模型输出该样本属于哪一个类别。这样咱们来理解贝叶斯理论。机器学习

条件几率

P(A|B) = \frac{P(AB)}{P(B)}

P(A|B)表示事件B已经发生的前提下,事件A发生的几率,叫作事件B发生下事件A的条件几率,P(AB)表示事件A、事件B共同发生的几率,P(B)表示事件B发生的几率,这样就计算就是一个条件几率。 咱们结合上面零件合格这个场景继续思考,若是咱们知道了这件零件是合格的,那么它是来自A、B、C三类中具体哪一个类中?具体哪一个类目咱们确定是不知道的,由于三个类目都有合格的零件,可是咱们能够知道这件合格的零件来自每一个类目的几率是多少,也就是求P(A|D)P(B|D)P(C|D),其中D表示这件零件是合格的几率,由条件几率知道:学习

\begin{equation*}
\begin{split}
P(A|D) = \frac{P(A*D)}{P(D)} \\
P(B|D) = \frac{P(B*D)}{P(D)} \\
P(C|D) = \frac{P(C*D)}{P(D)} 
\end{split}
\end{equation*}

其中 P(D) 已经在上面计算出来了, P(D)=0.872P(A*D) 表示这件零件来自A箱子,而且是正品的几率,两个条件是独立的,因此咱们计算为:测试

\begin{equation*}
\begin{split}
P(A*D) &=P(A)*P(D|A)\\
&= (1/3) * (9/10)  \\
&=0.3
\end{split}
\end{equation*}

因而咱们能够计算合格商品来自每一个箱子的几率:code

\begin{equation*}
\begin{split}
P(A|D) &= \frac{P(A*D)}{P(D)} \\
&=0.3/0.872 \\
&=0.344 \\
\\
P(B|D) &= \frac{P(B*D)}{P(D)} \\
&=0.283 /0.872\\
&=0.324 \\
\\
P(C|D) &= \frac{P(C*D)}{P(D)} \\
&=0.289/0.872 \\
&=0.332
\end{split}
\end{equation*}

从而知道了合格的零件最可能来自箱子A,由于来自箱子A的几率最高,达到了0.344。从这个例子中咱们能够引出贝叶斯理论:htm

咱们假设事件D发生了,求事件D发生是由于事件A的几率,求逆向几率,怎么理解?看下面: 一、假设事件A致使事件D发生的条件几率是:blog

P(D|A) = \frac{P(D*A)}{P(A)}

因此$$P(D*A)=P(D|A)*P(A)$$ 二、如今事件D发生了,多是事件A致使的,也多是事件B致使,或者其余事件致使的,咱们想知道,是事件A致使的几率,因此,事件D发生是由于事件A致使的条件几率,公式以下:事件

P(A|D) = \frac{P(D*A)}{P(D)}

将1步骤中的P(D*A)=P(D|A)*P(A) 代入到本公式中,替换分子P(D*A)获得:

P(A|D) = \frac{P(D|A)*P(A)}{P(D)}

公式推导如上,通过上述两个步骤后,咱们能够获得最终的贝叶斯公式:

P(A|D) = \frac{P(D|A)*P(A)}{P(D)}

可能有人问:咱们这么转换公式是为了什么?其实推导工程也就用了两次条件几率,正好两次条件几率公式的分子是同样的,用来替换一下,其实这是由于在咱们平常中,咱们比较容易知道结果,就像你带着眼罩从箱子里随便拿到一个零件,这个零件合格或不合格是容易判断的,可是你怎么知道它是来自哪一个箱子的?因而咱们的问题就变成了:从三个箱子中拿出一个零件,这个零件是属于某一个箱子的几率,问题角度变了,咱们再也不关注它是合格仍是不合格,合格或不合格很容易知道,但它属于哪一个箱子就不容易知道,贝叶斯的提出就是解决这个问题

类比到机器学习领域

好了,咱们知道了贝叶斯理论,那么对应到机器学习领域,这个思惟怎么转换?类比到机器学习就是:给你一条样本,这个样本的特征给出来了,每一个特征的具体数值也给你了,如今请你告诉我它属于哪一个类目?固然,这确定是一条测试集,由于在训练集中,每一条记录都被标记告终果,也就是被打上标签,在二分类任务中,样本属于A类就被标记1,不属于A类就被标记0,形式化描述就是以下:

输入:训练集X_{train}=\{{x_1},{x_2},{x_3},...,{x_n}\} ,测试集 X_{test}=\{{x_1},{x_2},{x_3},...,{x_m}\} 其中x_1=\{{t_1},{t_2},{t_3},...,{t_h}\},每个样本又h个特征,训练集中每个样本还有一个label标注结果。

这是比较形式化的一个描述,但又比较抽象,咱们能够这么理解,给你测试集的一个样本,这个样本的每一个特征数值告诉你了,这至关于告诉你这个零件是合格的仍是不合格,而后你来告诉我这个样本是属于哪一个类目,也就是 样本中的特征数值 就是上述箱子例子中零件合格这个结果,同时由于训练集有特征数值、每一个样本有类目结果,咱们能够从训练集入手,比较轻松的计算贝叶斯公式中某些几率,下一节,咱们将具体计算。

机器学习中的贝叶斯理论

咱们继续将贝叶斯理论结合到机器学习领域,咱们假设场景:

背景条件:训练集X_{train}=\{{x_1},{x_2},{x_3},...,{x_n}\},分类结果是C=\{C_1,C_2,...,C_i\},每一条训练集记录对饮一个分类结果 输入:给你一个测试集样本x_1=\{{t_1},{t_2},{t_3},...,{t_h}\} 输出:给出这个样本属于哪一个类目

首先思考,一共有i个分类结果,咱们能够计算这个样本属于每一个分类结果的几率,选取几率大的分类结果做为这条样本的类目,那针对这条样本咱们知道每一个特征的数值,咱们认为这些特征是从训练集中挑选的,每一个训练集样本有一个分类结果,因而咱们将特征类比为合格,那么这个合格样原本自那个类目?思考以下:

一、样本数据是x_1=\{{t_1},{t_2},{t_3},...,{t_h}\},先取一个特征分析,咱们假设取的特征是t_h,根据贝叶斯理论咱们知道P(C_i|t_h)公式定义以下:

P(C_i|t_h)= \frac{P(t_h|C_i)*P(C_i)}{P(t_h)}

二、咱们针对1中的公式来拆解分析:

  • (1)$P(t_h|C_i)$表示在$C_i$分类中$t_h$出现的几率,咱们能够利用训练集中来计算,由于训练集中有这个特征数值,能够计算这个特征数值出如今$C_i$类目样本中的几率
  • (2)$P(C_i)$表示类目$C_i$出现的几率,这个直接计算训练集中$C_i$类目样本占总样本的比例
  • (3)$P(t_h)$表示特征$t_h$出现的几率,计算相似从箱子中取一个合格零件的几率,这里就是从各个类目中抽取这个特征数值的几率

    经过上述的三个步骤就能够计算出特征t_h属于类目C_i的几率。咱们继续推广,一个样本记录有多个特征,因此咱们假设:

    假设:样本中每一个特征之间是互相独立、互不影响的。

    这条假设很重要,由于接下来咱们要计算一个样本属于某个类目的几率了。

    P(C_i|x_i),由上述的假设,每一个特征都是独立的,则:

    (1)P(x|C_i)=P(t_1|C_i)*P(t_2|C_i)*P(t_3|C_i)...P(t_h|C_i)=\prod_{j=0}^hP(t_j|C_i) (2)P(x)=P(t_1)*P(t_2)*P(t_3)... P(t_h)=\prod_{j=0}^hP(t_j) 因此P(C_i|t_h)公式为:

    P(C_i|x)= \frac{P(x|C_i)*P(C_i)}{P(x)}= \frac{\prod_{j=0}^hP(t_j|C_i)*P(C_i)}{\prod_{j=0}^hP(t_j)}

    这样根据公式P(C_i|x),咱们就能够计算出:P(C_1|x)、P(C_1|x)、P(C_i|x)等分类的几率,经过比较大小,咱们就能够知道这个这个样本属于哪一个类目了,重点是比较几率大小,因此在计算的时候也能够不计算分子,由于分子P(x)对于多有分类结果来讲都是同样的,因此直接计算分子比较几率大小。

    P(t_h|C_i)计算

    上文中咱们研究了贝叶斯理论实现对样本的分类,可是其中P(t_h|C_i)的计算会有一个问题:若是特征都是离散值,这就能够直接求离散值的占比状况就能够,可是若是特征是连续值,就很差计算了, 一般当特征属性为连续值时,咱们假定其值是服从高斯分布(也称正态分布)。即:

    g(x,\sigma,\mu)=\frac{1}{\sqrt{{2\pi}}\times\sigma}e^{\frac{1}{2}(\frac{x-\mu}{\sigma})^2}
    P(t_h|C_i)=g(t_h,\sigma_{C_i},\mu_{C_i})

    所以只要计算出训练集中各个类别中此特征项划分的各均值和标准差,代入上述公式便可获得须要的估计值。另外一个须要讨论的问题就是当P(t_h|C_i)=0怎么办,当某个类别下某个特征项划分没有出现时,就是产生这种现象,这会令分类器质量大大下降。为了解决这个问题,咱们引入Laplace校准,它的思想很是简单,就是对每类别下全部特征出现的计数加1,这样若是训练样本集数量充分大时,并不会对结果产生影响,而且解决了上述频率为0的尴尬局面。

    总结

    这不少都是自我理解的东西,有些概念、标题可能不是那么准确,也就是拍脑壳想起来的,总结不到位的地方但愿你们指出。下回我将讲解贝叶斯理论如何结合实际场景,总之感谢网络上大牛的博客,让我学到了不少内容,此文是本身思考理解的,但愿对你们有帮助。

    参考博客

    机器学习:说说贝叶斯分类 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)

  • 相关文章
    相关标签/搜索