1、公式
p( Y | X ) = P( X | Y) * P(Y) / P(X)
P(Y,X) = P(Y|X)*P(X) = p(X|Y)*P(Y)
P(Y):先验概率 P(Y|X):后验概率 P(Y,X):联合概率
机器学习中将X看作特征,Y看作类别,即求具有某特征的前提下,求出属于某类别的概率
例子:垃圾邮件识别
判断P(垃圾邮件|具有某特征)是否大于0.5?
训练样本:一万封正常邮件,一万封垃圾邮件
条件独立假设:P( x|c) = P(x1, x2,...,xn | c) = P(x1|c) * P(x2|c) * ... * P(xn|c)
加上条件独立假设的贝叶斯方法就是朴素贝叶斯方法
假设邮件内容为abc,先求P(垃圾邮件|abc)和P(正常邮件|abc)按照贝叶斯公式展开求比值,展开后分母相同,即求:
P(abc|垃圾邮件)* P(垃圾邮件)和P(abc|正常邮件)* P(正常邮件)的比值
根据条件独立假设:p(a|垃圾邮件),p(b|垃圾邮件),p(c|垃圾邮件)的乘积等于P(abc|垃圾邮件)
而p(a|垃圾邮件)只需要在训练样本中的垃圾邮件计算 单词a出现的次数/所有词的个数,p(垃圾邮件)= 训练样本中垃圾邮件的个数/训练样本中总邮件个数
朴素贝叶斯的三种模型
1、多项式模型
将重复的词语视为出现多次
2、伯努利模型
将重复出现的词语 视为只出现一次,模型简单,但是丢失词频,效果可能会差
3、混合模型
训练阶段不考虑单词出现次数,测试阶段考虑单词出现次数,模型简单,但是丢失词频,效果可能会差
平滑技术(关于测试集未出现词语概率增加,导致已出现词语概率降低,怎么权衡的问题)
拉普拉斯平滑
对于训练集没有出现过的单词。
多项式模型:p(a|垃圾邮件)= 每封垃圾邮件中出现“a”的次数总和+1 / (每封垃圾邮件中所有词出现次数之和+被统计的词语总和)
确保分子之和和分母相等。比如有词典里有1000个词,测试集出现了10个新词。那么分母就是训练样本中所有词的总和+1000+10。加1000是由于计算字典里出现的词时,分子也加1了。
伯努利模型:p(a|垃圾邮件)= 训练样本中出现“a”的样本数+1/(每个训练样本中所有词出现次数(重复只算1次)之和+2) (拉普拉斯平滑)
古德图灵平滑
线性插值法
回退法