昨天睡觉时候突然思考了下朴素贝叶斯分类方法,发现之前理解不透,突然搞不明白怎么分类的了,今天又看了看,才算大概了解了,比如是垃圾邮件分类。
1.训练集:首先对垃圾邮件和非垃圾邮件进行分词,并记录邮件分类。此处词汇集合用来记录所有训练数据的所有词汇,然后对于每封邮件去判断集合中的词是否在当前邮件出现,形成一个矩阵。
2.分别计算垃圾邮件和非垃圾邮件中集合中的每个词分别出现次数,出现概率。训练阶段就算完成了。
3.测试数据:(其实此处的数据使用的是留存交叉验证法:即取垃圾邮件,非垃圾邮件中的少量数据作为测试数据,因为有明确的分类,可以检验测试效果)对于每条测试邮件数据,计算邮件中的每个词出现的次数及概率(此处的概率不进行取对数)。
分类时候使用的公式为:所有训练数据中每个单词出现在词汇集合的频率矩阵 叉乘 当前测试邮件的每个词在词汇集合出现的频率矩阵 再乘以把它预测为垃圾邮件(pAbuse)或者非垃圾邮件(1-pAbuse)的概率。
朴素贝叶斯分类认为,对于一条新的数据来说,如果把它预测为垃圾邮件的概率和非垃圾邮件的概率哪个较大,哪个就预测为最终的分类结果。
注:由于每个概率都特别小,相乘以后由于计算机运算特点,导致下溢出为0,此时对预测概率求对数,就会出现
这种公式,可以手动推导出来的。
4.最后进行对测试结果评估:因为测试数据是从训练数据中获取,因此有分类,将此分类与预测分类比较,计算预测正确的频率。
最后说一下之前决策树中的一个困惑,今天又回头看了下。是决策树对于一条数据当进行了所有的特征分类以后,仍然不能判断该数据具体属于哪条分类(即可以分到两类或者更多个分类中),书中说采取多数表决,当时没细看是怎么多数表决的,今天看了下:
其中当所有的特征都用完时,采用多数表决的方法来决定该叶子节点的分类,即该叶节点中属于某一类最多的样本数,那么我们就说该叶节点属于那一类!