2d95709ed97e88300916c44eeb6981a6.png

条件概率和贝叶斯准则

在讨论贝叶斯模型前,先来讨论一下条件概率和贝叶斯准则。

概率的概念来自对频率的认知,如果一件事情发生的频率很高,就说这件事发生的概率很高。而条件概率,顾名思义,也是属于概率范畴,不过有了些条件,科学的描述为,一件事在另一件事发生的前提下发生的概率。借助数学表达式,则有:

p(y | x)=p(xy)/p(x)

贝叶斯准则:

贝叶斯准则告诉我们如何交换条件概率中的条件与结果,即如果已知 P(x|y) ,要求 P(y|x) ,那么可以使用下面的计算方法:

p(y | x)=p(xy)/p(x)=p(y)p(x|y)/ p(x)

贝叶斯分类器

贝叶斯决策理论的核心思想:选择高概率对应的类别,即若P1(x)>p2(x) ,则为1类,反之,为2类。通常比较的是p(c1 | x) 和p(c2 | x)的大小。

应用贝叶斯准则求p(c1 | x):

p(c1 | x)=p(c1 x)/p(x)=p(x|c1)*p(c1) / p(x)

现在可有后面三个已知(可求解)的概率表示待求解概率

p(c1):训练集中1类数据占比

p(x|c1):假设x向量的所有特征互相独立,则有

p(x|c1) = p(x1.x2……|c1)

= p(x1|c1) X p(x2|c1) X……

继而可以求解训练集中1类数据各个特征出现的频率

p(x):同理。可以求解训练集中所有类别里各特征出现的频率

同理,p(c2 | x)可求。

在上面的描述中,隐含了一个建立贝叶斯模型的严格假设,即每个特征严格相互独立,由概率表示为:p(x|c1) = p(x1.x2……|c1)= p(x1|c1) X p(x2|c1) X……,可以说假设是相当的严格了。

贝叶斯分类的一般过程:

(1) 收集数据:可以使用任何方法。

(2) 准备数据:需要数值型或者布尔型数据。

(3) 分析数据:有大量特征时,绘制特征作用不大,此时使用直方图效果更好。

(4) 训练算法:计算不同的独立特征的条件概率。

(5) 测试算法:计算错误率。

(6) 使用算法:一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使用朴

素贝叶斯分类器,不一定非要是文本。

贝叶斯分类适用于标称型数据,在数据较少的情况下,依然有效,可以处理多类别问题。

sklearn 实现

import pandas as pd
import numpy as np
from sklearn import naive_bayes
x=np.array([[-1,-1], [-2, -1], [1, 1], [2, 1], [3, 2]])
y=np.array([1, 1, 2, 2, 2])
model=naive_bayes.GaussianNB()
fit=model.fit(x,y)

#查看查看训练集分类情况
fit.class_count_
array([2., 3.])

#预测
xtest=np.array([[-1,-2],[-2,-1], [-3, -1], [1, 3], [2, 2], [3, 1]])
fit.predict(xtest)
 array([2, 1, 1, 2, 2, 2])

#评估
ytarget=[2, 1, 2, 1, 2, 2]
from sklearn import metrics
print(metrics.classification_report(ytarget,prediction))
#打印评估指标
                precision    recall  f1-score   support

           1       0.50      0.50      0.50         2
           2       0.75      0.75      0.75         4

    accuracy                           0.67         6
   macro avg       0.62      0.62      0.62         6
weighted avg       0.67      0.67      0.67         6
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐