一、朴素贝叶斯是什么?
1.1贝叶斯公式:P(Y|X) =(X表示某个测试数据Y表示某个类别)
机器学习的视角理解公式:具有某个特征的数据X属于类别Y的概率 = 属于某类Y的概率 )* (属于某类Y且具有某个特征X的概率)
1.2实现原理:对于某一条测试数据,计算其属于每个分类的概率,选取其中最大概率所对应的类别作为测试数据的类别。
1.3贝叶斯假设:朴素贝叶斯假设特征空间之间是独立的(互不影响)
假设数据X由X1,X2,X3.....,Xn组成,则由贝叶斯假设可得出 P(X|Y) = P(X1|Y)*P(X2|Y)*......*P(Xn|Y) 得出朴素贝叶斯公式为
其中p(Y)称为先验概率,P(X|Y) = P(X1|Y)*P(X2|Y)*......*P(Xn|Y)称为条件概率,P(Y|X)称为后验概率(要求的概率)
1.4 实现步骤
A.划分数据集
将获取到的数据集按照一定比例划分成 测试集(用于测试经过训练算法的正确率)和训练集(训练算法的数据)
B.模型训练
输入:训练数据集
a.统计训练集中类别(垃圾/非垃圾信息)的样本数量(便于计算先验概率) => P(Y);
b.统计训练集中所有数据(垃圾和非垃圾信息)的特征向量集合(不重复)(便于计算概率时进行平滑处理);
c.统计训练集中各个类别(垃圾/非垃圾信息)数据中出现的特征向量集合(垃圾信息单词集合/非垃圾信息单词集合);
d.统计训练集中各个类别特征向量集合中每个向量出现的次数====>存储在CountMap<String,Integer>(单词,训练集中对应的数量)(便于计算条件概率) => P(X|Y)
将不同类别的CountMap<String,Integer>和类别的先验概率封装成分类器对象作为结果返回(Classification)。
输出:分类器Classification对象
C.模型测试
输入:测试数据集
(计算概率)对于测试集中的每一个测试样本,根据朴素贝叶斯公式计算其属于训练集中某个类别的概率;
(做决策)比较计算出概率的大小,选取最大概率的类别作为预测结果;
(求正确率)如果预测结果与真实结果一致,将预测正确数量+1,计算正确率
1.5 平滑处理:如果测试数据中存在训练集中不存在的数据时应该对其概率进行处理,有两种不同模型(伯努利模型和多项式模型),其处理原理(在增加未出现词概率的同时,减少已出现词语的概率)
假设测试数据中存在“出现”这个词
伯努利模型:P("出现"|Y) = (出现“出现”词语的训练数据个数+1)/(类别Y训练集中单词个数+2)
多项式模型:P("出现"|Y) = (出现“出现”词语的训练数据个数+1)/(类别Y训练集中单词个数+训练集中不重复单词的个数)
1.6 处理流程图
......初学阶段,还有诸多不足之处,望多多指正!!!