机器学习-朴素贝叶斯分类器(大厨教你预测做的菜是否好吃)

来源:互联网 发布:东西方神仙大战 知乎 编辑:程序博客网 时间:2024/04/28 04:59

朴素贝叶斯定理推导:

由:P(AB) = P(A)P(B|A)=P(B)P(A|B)

整理得:P(A|B) = P(A)P(B|A) / P(B)

 

这个公式告诉我们,在B发生的情况下怎么去计算A发生的概率,具体的过程如下:

1.   假设现在有样本x=(tz 1, tz 2, tz 3,…tz n)这个待分类项,并认为tz是特征独立的,我们下面的例子特征有5种。

2.   再假设现在有分类目标Y={y1,y2,y3,y4..yn},我们下面例子是2类。

3.   那么分别计算P(y1|x),P(y2|x),P(y3|x)..P(yn|x),其中的最大者就是最终的分类类别,对应到下面的例子就是P(好吃|x)与P(不好吃|x)

4.   而P(yi|x)=p(x|yi)*P(yi)/P(x),其中因为x对于每个分类目标来说都一样,所以就是求max(P(x|yi)*p(yi))

5. P(x|yi)*p(yi)=p(yi)*PI(P(tz i | yi))(PI表示连乘)

6.   而具体的p( |yi)和p(yi)都是能从训练样本中统计出来
p( tz i  | yi)表示该类别下该特征出现的概率
p(yi)表示全部类别中这个这个类别出现的概率



  

0表示否定,1表示肯定,以上已经有了以往数据,新来一条数据x(心情不好,火候掌控优秀,调料不合理,食材新鲜。烹饪是合理的),那么即可用朴素贝叶斯分类器去预测。具体预测流程如下:

计算p(好吃|x)

1. x =(心情不好,火候掌控优秀,调料不合理,食材新鲜。烹饪是合理的)

2. p(好吃|x) = p(好吃)p(x|好吃)/ p(x)

3 .p(好吃) = 6/12 = 0.5

4 .p(x|好吃)= p(心情不好|好吃)* p(火候掌控优秀|好吃)* p(调料不合理|好吃)* p(食材新鲜|好吃)* p(烹饪是合理的|好吃)

=3/6 * 4/6 * 2/6 * 4/6 * 4/6 =0.049

5. p(好吃|x) = 0.5*0.049 / p(x) = 0.025/ p(x),(p(x)表示这个样本在以往数据中出现的概率,显然p(好吃|x)与p(步好吃|x)中p(x)是一样的)

 

 

同理计算p(不好吃|x)

1. x =(心情不好,火候掌控优秀,调料不合理,食材新鲜。烹饪是合理的)

2. p(不好吃|x) = p(不好吃)p(x|不好吃)/ p(x)

3.p(不好吃) = 6/12 = 0.5

4.p(x|不好吃)= p(心情不好|不好吃)* p(火候掌控优秀|不好吃)* p(调料不合理|步好吃)* p(食材新鲜|不好吃)* p(烹饪是合理的|不好吃)

=3/6  * 4/6 *  1/6 * 1/6  * 2/6 = 0.003

5.p(不好吃|x) = 0.5*0.049 / p(x) = 0.5*0.003/ p(x) =0.0015/ p(x)

 

结果:p(好吃|x) > p(不好吃|x),则x =(心情不好,火候掌控优秀,调料不合理,食材新鲜。烹饪是合理的)做出来的菜是好吃的。

 

这里需要注意的是:

当特征是离散的可根据古典概率学去直接计算概率,如本博客的例子。当特征值是连续时,就应该根据实际情况假定特征满足是高斯分布还是泊松分布,或是其他分布了。

 

 

 

原创粉丝点击