1. Naive Bayse基础
- 成立条件:条件独立假设
- 公式:C=P(S|(x1,x2,...,xn)=P(x1|S)P(x2|S)...P(xn|S)P(S)
2. Naive Bayse 三大模型
- GuassianNB: 解决分类问题,特征是连续值,默认每项特征符合正态分布,只需要统计均值和方差
- MultinormalNB: 特征是离散值(一条Doc的词频)
P(xi|y=A)=类别A中所有样本特征xi的离散值相加(类别A中单词xi出现总次数)+1类别A中所以样本特征离散值相加(类别A中所有单词出现总次数)+|V| - BernoulliNB: 特征是布尔型(一条Doc中单词是否出现),可看做多项式分布中离散值只能取1
P(xi|A)=类别A中存在特征xi的样本数+1类别A中所有特征出现的次数(特征不为0的总和)+2 - 混合模型:训练用Multinormal,预测用Bernoulli。
- . 多项式模型与伯努利模型选择:伯努利模型丢掉词频信息,在情感分类中有效,一句话的情感往往由一个形容词确定,在短文本中可能更有效。也可考虑混合模型,训练考虑特征多值(词频),测试用0/1(是否出现)
- 多项式与伯努利区别:
- 每个样本特征取值不同,多项式特征值是整数,伯努利特征值是0/1(多项式中特征值根据阈值判定),如文本分类中特征是词,多项式取值是词频,伯努利阈值是0 .
- 拉普拉斯平滑方式不同,多项式分母+特征维数,伯努利分母+2
3. trick:
- 取对数,在转换为权重,最后只保留权重表,测试时直接调用,减少计算量(以二分类为例,一张表)
logCC¯=logP(x1|S)P(x1|H)+logP(x2|S)P(x2|S)+...+logP(xn|S)P(xn|H)+logP(S)P(H) - 通过权重可找到较为重要的特征,只用topK特征进行判断,是否超过阈值
- 对于垃圾邮件分类中,可先进行分段操作,对每一段用上面的方法,一段超过阈值即判定为垃圾邮件(直观:垃圾邮件某些敏感词会在局部集中出现,普通邮件也可能出现较多敏感词,但距离较远)
- 文本分类,考虑位置权重,不同位置,影响度可能不同
4. Naive Bayse优缺点:
优点
1. 简单速度快。对待预测样本进行预测,过程简单速度快(想想邮件分类的问题,预测就是分词后进行概率乘积,在log域直接做加法更快)。对于多分类问题也同样很有效,复杂度也不会有大程度上升。
2. 在分布独立这个假设成立的情况下,贝叶斯分类器效果奇好,会略胜于逻辑回归,同时我们需要的样本量也更少一点。
3. 可调参数较少,可集中注意力在数据处理和特征选择
缺点
1. 测试类别未出现特征概率为0,需要进行平滑才能使用(或直接忽略)。
2. 算出的概率结果可比较大小,但无物理意义,trick后的权重有意义。
3. 以条件独立假设为前提,实际情况很难完全独立。
4. 做文本分类时没有考虑语序的影响
与logistic比较
- LR是求loss最优化迭代求出权重,NB是基于统计跳过loss最优化直接得到权重
- NB比LR多了一个条件独立假设,两者形式上相同,都是特征线性相加,log先验概率比值为偏置项。可通过权重大小来评估特征显著性
- LR是判别模型,NB是生成模型
应用场景
- 垃圾邮件分类、情感分析、文本分类:文本中条件独立假设基本成立,效果好
- 多分类实时预测:因为快
- 推荐系统中与协同过滤一起使用提高推荐的覆盖度和效果。协同过滤是强相关性,但泛化能力弱。
注意点
- 对样本和各种算法的观点:样本决定效果上限,各个算法都是尽量逼近这个上限
业务理解>样本>算法 - NB的Naive表现在:a. 使用条件独立假设简化计算;b. 不考虑顺序
- 条件独立假设很难成立,但效果好的直观解释:a. 该假设在各分类间的分布都是均匀的,所以不影响最后得到的似然相对大小;b. 该假设产生的积极影响和消极影响相互抵消
4 Naive Bayse与N-grame语言模型:Naive Bayse基于条件独立假设,如果词与词之前存在相互关系(共同出现),则是N-grame语言模型 - 平滑核心思想:增加未出现词概率的同时,减小已出现词概率。常用拉普拉斯平滑,古德图灵平滑,如果考虑对未出现的特征赋予不同概率,考虑组合估计平滑(线性差值法和Katz回退法)
- 贝叶斯方法和最大似然方法关系:是否考虑先验概率。贝叶斯范围更广,但关系是先验概率必须靠谱。频率学派有效的前提也是先验概率是经验统计的结果
- NB对样本处理注意点:a. 连续值不满足正态分布时不可用; b. 却掉相关特征,防止相同特征的影响被充分计算。
- NB用bagging效果不佳,因为NB是比较弱的分类器,泛化能力强。boosting?