朴素贝叶斯是传统机器学习算法中的一种,因为使用简单而且效果不差而被广泛使用。基本上用到的数学原理就是贝叶斯公式和极大似然估计,原理上也是比较简单。但是它的简单是源于做了一个硬性的假设,假设在知道y的情况下,x中的所有feature出现的可能性是相互独立的,这个条件其实并不成立,但是这个假设大大简化了模型,不过这个模型也因为这个硬性假设而丧失了一些准确性。
这篇博文的内容是基于《统计学习方法》中第四章和cs229中第5课的学习和理解。这里的符号表示还是根据自己的习惯来,用上标表示样本数,用下标表示feature数,比如表示第i个样本中的第j个feature。
朴素贝叶斯
符号表示
现在假设我们有m组训练样本,我们需要根据这m组样本学习到x与y之间的隐藏联系,从而当给定一个x的数据时,能够预测出y的值。
假设y的取值范围有K类,分别是
同时假设每个的feature有n个,分别是,而每个feature的也就是第j个feature的取值一种有种,表示为
为了更好的理解符号表示,可以举一个例子,邮件自动分类问题。
比如我们希望邮箱可以自动将邮件分类为工作邮件(0),私人邮件(1),垃圾邮件(2)这样三类,分别用0,1,2表示,那么y的取值范围有,并且
x就是我们的邮件内容,使用单词表对邮件内容进行编码。编码方式是如果邮件中的某个字符出现在了单词表中,那么这个位置的值就为1,否则为0.
假如我们的单词表有50000个单词,而我们的邮件内容为...buy a toy, price...,那么我们根据单词表的编码为
,
所以x的feature n=50000,每个feature的取值有2中,