朴素贝叶斯分类器
朴素贝叶斯分类器是使用概率论来进行分类的方法,
- 优点:在数据较少的情况下仍然有效,可以处理多类别问题。
- 缺点:对于输入数据的准备方式较为敏感。
- 适用数据类型:标称型数据。
贝叶斯决策理论
假设现在我们有一个数据集,它由两类数据组成,数据分布下图所示
用P1(x,y)表示数据点(x,y)属于类别1(以图中用圆点表示的类别)的概率
用P2(x,y)表示数据点(x,y)属于类别2(以图中用三角表示的类别)的概率
那么对于一个新的数据点(x0,y0)(未知类别),可以用下面的规则来判断其类别
- 如果P1(x0,y0)>p2(x0,y0),那么该点的类别为1
- 如果P1(x0,y0)<p2(x0,y0),那么该点的类别为2
这就是贝叶斯决策理论的核心思想,即选择具有最高概率的决策。
概率比较方法
如上图,贝叶斯决策涉及到对数据点进行分类。这时,前面的KNN算法和决策树都有自己的缺点。
- KNN算法:计算量太大
- 决策树:沿X,Y轴划分数据,效果不会太明显。
这里用概率比较的方法来对数据进行分类(依据条件概率)。
使用条件概率进行分类
贝叶斯分类准则:
- 如果P(C1|x,y)>P(C2|x,y) 那么属于类别C1
- 如果P(C1|x,y)>P(C2|x,y) 那么属于类别C2
使用贝叶斯准则,可以通过巳知的三个概率值来计算未知的概率值
使用朴素贝叶斯估计进行文档分类(例子)
朴素贝叶斯的一般过程
- 收集数据:可以使用任何方法。本章使用RSS源。
- 准备数据:需要数值型或者布尔型数据。
- 分析数据:有大量特征时,绘制特征作用不大,此时使用直方图效果更好
- 训练算法:计算不同的独立特征的条件概率
- 测试算法:计算错误率
- 使用算法:一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使用朴素贝叶斯命类器,不一定非要是文本。
文本分类
def loadDataSet():
postingList = [['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'],
['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'],
['my', 'dalmation', 'is', 'so', 'cute', 'I', 'love', 'him'],
['stop', 'posting', 'stupid', 'worthless', 'garbage'],
['mr', 'licks', 'ate', 'my', 'steak', 'how'