随机森林——短文本分类

机器算法验证 机器学习 分类 随机森林
2022-04-22 01:38:48

我读过这篇文章,它比较了各种机器学习算法在 SMS 垃圾邮件检测方面的效果。我已经能够重现朴素贝叶斯的结果,现在我也想尝试随机森林。

使用朴素贝叶斯,这很简单。使用词袋模型,并使用拉普拉斯平滑处理缺失概率。只有 SMS 中出现的单词会针对 SPAM|HAM 类进行测试。但是,我不确定如何使用随机森林处理输入。

假设我有以下设置:

  • 训练集中 5000 个不同的词,在词干和停用词去除后
  • 要分类的文本很短,例如平均 10 个单词
  • CART 用作树模型
  • 随机森林选择特征的子集,例如 2*sqrt(5000) = 141 个单词,每个分割
  • 词频作为特征值(也可以是TF-IDF)

所以我的问题是:

  1. 一般来说,不管文章如何,在特征空间大的情况下,随机森林能否有效用于短文本分类? 在我看来,由于特征空间大,数据中只有少数特征需要分类,因此可能存在很多弱分类器。
  2. 如何使用随机森林处理看不见的单词(训练集中不存在)?应该简单地将它们从输入中剥离,还是应该使用类似于拉普拉斯平滑的一些技术
  3. 如果有人读过这篇短文,也许可以解释作者如何代表随机森林的特征
1个回答

一般来说,在机器学习方法中,无论其理论性能如何,都建议测试多个模型,因为它们的准确性取决于训练数据集。确实,出于各种原因,例如线性分离或维度灾难(参见本文),文本分类通常首选几种算法(SVM、朴素贝叶斯、多项回归)。但是,没有什么能阻止您尝试随机森林并检查其性能。

现在回答你的问题。

一般来说,不管文章如何,在特征空间很大的情况下,随机森林能否有效用于短文本分类?在我看来,由于特征空间大,数据中只有少数特征需要分类,因此可能存在很多弱分类器。

鉴于随机森林装袋决策树)的性质,您确实可能会想出一个相当弱的分类器,尤其是当只有几个特征对确定结果真正重要时。提升决策树例如 adaboost 或梯度提升)可能更适合于加权相关预测器。

但是,请记住,在文本分类的情况下,需要一个预处理阶段来获取您的 TF 或 TF-IDF 矩阵,通过它您已经选择了相关的特征潜在地,所有特征在这个矩阵中都是相关的,所以当你预测你的结果时,随机森林可能是有效的。

如何使用随机森林处理看不见的单词(训练集中不存在)?应该简单地将它们从输入中剥离,还是应该使用类似于拉普拉斯平滑的一些技术?

由于您使用词频作为特征,您已经定义了评估消息结果的网格。看不见的单词将在您的算法中被过滤和剥离,因为您将评估测试集中的单词在 TF 矩阵中是否存在/不存在。

如果有人读过这篇短文,也许可以解释作者如何代表随机森林的特征?

作者使用scikit-learn来自python. 我得出的结论是,该数据集很可能是一个数字数据框(分类值始终转换为 中的逻辑虚拟布尔值python)。据我了解,作者使用了以下功能:

  • 过滤的词,基于它们的频率(>5<500),更具体地说,如果它们在消息中不存在/存在。
  • 消息长度(消息中的字符数),后来转化为五个分类布尔值(消息长度40,60, ...)
  • 字符$的出现
  • 数字字符串的数量
  • 存在/不存在非字母字符