本文主要简单研究一下朴素贝叶斯算法是如何对文本进行分类的。html
贝叶斯方法把计算“具备某特征的条件下属于某类”的几率转换成须要计算“属于某类的条件下具备某特征”的几率,属于有监督学习。算法
后验几率 = 先验几率 x 调整因子
这就是贝叶斯推断的含义。咱们先预估一个"先验几率",而后加入实验结果,看这个实验究竟是加强仍是削弱了"先验几率",由此获得更接近事实的"后验几率"。机器学习
p(yi|x) = p(yi) * p(x|yi) / p(x)
p(所属类别yi|某种特征x) = p(所属类别yi) * p(某种特征x|所属类别yi) /p(某种特征x)
根据公式就能够把计算“具备某种特征的条件下属于某个类别”的几率转换为:“属于某种类别的条件下,具备某种特征”的几率。函数
其中p(yi)称为先验几率,即在x事件发生以前,发生yi事件的几率学习
p(yi|x)称为后验几率,即在x事件发生以后,发生yi事件的几率,属于可观测的值ui
p(x|yi)/p(x)为调整因子,也成为可能性函数(Likelyhood
),使得预估几率更接近真实几率code
朴素贝叶斯理论源于随机变量的独立性:就文本分类而言,从朴素贝叶斯的角度来看,句子中的两两词之间的关系是相互独立的,即一个对象的特征向量中每一个维度都是相互独立的。这是朴素贝叶斯理论的思想基础。其流程以下htm
- 第一阶段,训练数据生成训练样本集:TF-IDF。 - 第二阶段,对每一个类别计算P(yi)。 - 第三阶段,对每一个特征属性计算全部类别下的条件几率p(ai|yi)。 - 第四阶段,对每一个类别计算p(x|yi)p(yi)。 - 第五阶段,以p(x|yi)p(yi)的最大项做为x的所属类别。
假设x是一个待分类文本,其特征为{a1,a2,...,am};已知类别集合{y1,y2,...yn};求x所属的类别对象
若是p(yi|x) = max{p(y1|x),p(y2|x),p(y3|x),...,p(yn|x)},则x属于yi类别
利用贝叶斯公式blog
p(yi|x) = p(x|yi)*p(yi) / p(x)
问题转换为对每一个类别计算p(x|yi) p(yi),以p(x|yi)p(yi)的最大项做为x的所属类别
因为朴素贝叶斯假定各个特征是相互独立的,所以
p(x|yi) = p(a1|yi)*p(a2|yi)...*p(am|yi)
p(x|yi)/p(x)为调整因子
而p(ai|yi)则能够经过训练集(已经分好类
),统计各个类别下面各类特征的条件几率p(ai|yi)获得。
自此求x所属的类别p(yi|x)被一步步化解,能够经过计算训练集中每一个类别下各类特征的条件几率p(ai|yi)来求解获得。
而训练的过程则是根据训练集去计算调整因子的影响因素p(x|yi)=p(a1|yi)p(a2|yi)...p(am|yi),所以训练集的好坏直接影响预测结果的准确性。
TF-IDF( term frequency–inverse document frequency )是一种用于信息检索与数据挖掘的经常使用加权方法。
TF-IDF = TF * IDF
TF-IDF的主要思想是:若是某个词或短语在一篇文章中出现的频率 TF 高,而且在其余文章中不多出现(IDF值大),则认为此词或者短语具备很好的类别区分能力,适合用来分类。
意思是词频( Term Frequency ),即某个词在文件中出现的频率
TFi = Ndti / Ndt1..n
即该词在文档中出现的次数/该文档全部词出现的次数之和
意思是逆向文件频率( Inverse Document Frequency ),它是一个词语重要性的调整系数,衡量一个词是否是常见词。若是某个词比较少见,可是它在这篇文章中屡次出现,那么它极可能就反映了这篇文章的特性,正是咱们所须要的关键词。
某一特定词语的IDF,能够由总文件数目除以包含该词语之文件的数目,再将获得的商取对数获得
IDF = log(Nd/Ndt)
Nd为总文件数,Ndt为包含该词语的文件数目
若是一个词很是经常使用则Ndt变大,则IDF值会变小,于是TF-IDF值也会变小,这样就很好地削弱了经常使用词的特征性。
朴素贝叶斯算法将问题一步步化解,最后经过训练集求解,值得好好学习推敲。