斯坦福大学-自然语言处理入门 笔记 第六课 文本分类与朴素贝叶斯

一、文本分类任务概述

1、应用领域

  • 归类
  • 垃圾邮件识别
  • 作者识别
  • 性别/年龄识别
  • 等等

2、定义

  • 输入:一个文档d,一系列固定的类型C={c1,c2,…,cj}
  • 输出:预测类别c ∈ C

3、分类方法

  • 手工规则:很精确但是代价很高
  • 监督机器学习:
    • 输入:一个文档d,一系列固定的类型C={c1,c2,…,cj},一个训练集包含m个样本,每个样本是手工标记的文档(d1,c1)…(dm,cm)
    • 输出:γ:d→c
    • 可以使用的分类方法:朴素贝叶斯,逻辑回归,支持向量机,k近邻

二、朴素贝叶斯

  • 朴素贝叶斯的思想:基于贝叶斯规则的简单分类方法,分类的依据是文本的简单代表,词袋(bag of words)
  • 把文本抽象成一个个单词以及对应的次数的特征
  • 如下在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

三、定义朴素贝叶斯分类

1、应用于文档和类别的贝叶斯规则

  • 公式:
    在这里插入图片描述
  • 其中,d表示文档,c表示类别

2、朴素贝叶斯分类

  • 公式推导1:我们需要求的是使得P(c|d)最大的类别c。利用贝叶斯规则可以得到第二行的公式,因为第二行的分母对任何类别都是一样的,不影响argmax的计算。所以,可以忽略掉分母。
    在这里插入图片描述
  • 公式推导2:把d用x1,x2等特征表示
    在这里插入图片描述
  • 基于上述公式进行估计的话,需要估计的参数量级很大,因此对样本数量的要求会很高。
    • 参数量级
      在这里插入图片描述
  • 因此,我们需要进行一些假设来简化模型
    • 词袋(bag of words)假设:单词的文职不重要
    • 条件独立(conditional independence):对于特征而言,基于c的条件概率是相互独立的
    • 基于上述两点,上述公式可以推导为
      在这里插入图片描述

四、朴素贝叶斯的训练

1、极大似然估计

  • 朴素贝叶斯的训练的一个方法是极大似然估计,利用数据的频率进行计算
    在这里插入图片描述
  • 极大似然估计的问题:如果在训练集中没有出现单词的话这个单词的P(w|c)就是0,那么对应的基于下面公式的c也是0,就无法进行分类
    在这里插入图片描述
  • 基于上述的问题,我们就需要使用加一平滑也就是拉普拉斯平滑来解决,解决的公式是
    在这里插入图片描述
  • 对于一个训练语料库而言,训练公式如下
    在这里插入图片描述
  • 如果遇到未知(unknown)的单词的处理方法,公式如下
    在这里插入图片描述

五、朴素贝叶斯:和语言模型的关系

  • 朴素贝叶斯的每一个类别就是一个条件于类别的一元语言模型
    • 对每个单词而言,他们的概率是P(word|c)
    • 对每个句子而言,他们的概率是P(s|c)=∏ P(word|c)
    • 贝叶斯最后的结果而言,就是选择比较大的P(s|c)的类别
      在这里插入图片描述

六、关于多元朴素贝叶斯的例子

  • 实例:
    在这里插入图片描述
  • 在垃圾邮件检测领域,写有效的应用于贝叶斯的特征:
    在这里插入图片描述
  • 关于朴素贝叶斯的总结
    • 非常快,并且对内存的要求低
    • 对不相关的特征十分稳健
    • 在有很多同等重要的特征的时候表现得比较好
    • 如果独立假设存在的话是最好的
    • 是文本分类一个很好的可依靠的底线

七、precision,recall and f measure

  • 依据预测的结果(selected)与实际的分类(correct)可以将样本分为四类
    在这里插入图片描述
  • 因为准确率在估计样本不均衡的时候并不是有效的,所以需要引入下面的度量
    • precision:表示预测的结果是正确的百分比 tp/(tp+fp)
    • recall:表示实际分类中被预测到的百分比 tp/(tp+fn)
    • F值:是precision和recall的加权调和平均数,调和平均数会更加接近比较小的数
      在这里插入图片描述
      人们一般会使用f1值来估计,是上面的计算公式中β为1,α为1/2的度量
      在这里插入图片描述

八、文本分类评估

1、用于评估的数据集

在这里插入图片描述
在这里插入图片描述

2、混淆矩阵(confusion matrix)C

  • 对所有的类别建立混淆矩阵,列表示实际的类别,行表示预测的类别
    在这里插入图片描述
  • recall:在类别i中的文档被预测正确的比例
  • precision:被分为类别i的文档中实际为i分类的类别的比例
  • accuracy:被正确分类的文档比例
  • 当分类大于两类的时候,我们用下面两种方法把多个指标合并
    • 宏平均(macroaveraging):单独计算每个类别的度量,然后平均
    • 微平均(microaveraging):把每个类别的结果归入下面列联表中,然后计算
      在这里插入图片描述
    • 举例:
      在这里插入图片描述

3、发展测试集(development test set)与交叉检验

  • 一般会把数据分为三类,一类是训练集,一类是发展测试集,一类是测试集。
    在这里插入图片描述
  • 测试集:避免过拟合、估计更保守
  • 发展测试集:用来调整算法
  • 交叉检验:发展测试集的存在可能会导致测试集过小,所以我们可以使用交叉验证的方法来构造发展测试集。
    在这里插入图片描述

九、文本分类:实际中会遇到的问题

  • 没有训练数据怎么办?
    • 人工写规则:需要非常小心并且十分费时(两天一个类)
  • 数据很少怎么办?
    • 使用朴素贝叶斯:朴素贝叶斯是一个高误差(high-bias)的算法,不容易现过拟合问题
    • 获得更多的标记数据
    • 尝试半监督训练方法:bootstrapping或者是针对非标记文本的EM算法
  • 合理的数据量
    • 对更“聪明”的分类方法会更好:SVM,正则逻辑回归
    • 使用解释性更强的决策树
  • 有很多很多的数据
    • 可以得到很高的正确率
    • 代价是:svm的训练时间和knn的测试时间都会很长;正则逻辑回归可能会好一点
    • 朴素贝叶斯的速度在这种情况就是优势
  • 当数据足够的时候,算法就不重要了
    在这里插入图片描述
  • 其他的要点:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kunpen8944/article/details/83095725