机器学习的一个重要应用就是文档的自动分类。在文档分类中,整个文档(比如电子邮件)是实例,而电子邮件中的某些元素则构成特征。虽然电子邮件是一种会不断增加的文本,但我们同样也可以对新闻报道、用户流言、公文等其他任意类型的文本进行分类。我们可以观察文档中出现的词,并把每个词的出现或者不出现作为一个特征,这样得到的特征数目就会跟词汇表中的词目一样多。朴素贝叶斯是贝叶斯分类器的一个扩展,适用于文档分类的常用算法。
使用每个词作为特征并观察他们是否出现,这样得到的特征数目会非常非常多。据估计,仅在英语中,单词总数就有500000之多,为了进行英文阅读,估计需要掌握数千单词。
朴素贝叶斯的一般过程:
1、收集数据
2、准备数据:需要数值型或者布尔型数据
3、分析数据:有大量特征时,绘制特征作用不大,此时使用直方图效果更好
4、训练算法
5、测试算法
6、使用算法:一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使用朴素贝叶斯分类器,不一定非要是文本。
假设词汇表中有1000个单词。要得到好的概率分布,就需要足够的数据样本,假定样本数为N。由统计学知,如果每个特征需要N个样本,那么对于10个特征将需要个样本,对于包含1000个特征的词汇表将需要个样本。可以看到,所需要的样本数会随着特征数目增大而迅速增长。
如果特征之间相互独立,那么样本数就可以从减少到1000*N。所谓独立指的是统计意义上的独立,即一个特征或单词出现的可能性与它和其他单词相邻没有关系。举个例子,假设单词bacon出现在unhealthy后面与出现在delicious后面的概率相同。当然,我们知道这种假设并不成立,bacon尝尝出现在delicious附近,很少出现在unhealthy附近,这个假设正式朴素贝叶斯中朴素一词的含义。朴素贝叶斯分类器中的另一个假设是:每个特征同等重要。其实这个假设也有问题。
如果要判断留言板的留言是否得当,那么可能不需要看完所有1000个单词,而只需要看10~20个特征就足可以做出判断了。尽管上述假设存在一些小的瑕疵,但朴素贝叶斯的实际效果很好。