需要帮助将 scikit-learn 应用于这个不平衡的文本分类任务

Posted

技术标签:

【中文标题】需要帮助将 scikit-learn 应用于这个不平衡的文本分类任务【英文标题】:Need help applying scikit-learn to this unbalanced text categorization task 【发布时间】:2016-01-15 07:25:50 【问题描述】:

我有一个多类文本分类/分类问题。我有一组具有K 不同互斥类的基本事实数据。这是一个两方面的不平衡问题。首先,有些课程比其他课程更频繁。其次,我们对某些类别比其他类别更感兴趣(这些类别通常与其相对频率呈正相关,尽管有些感兴趣的类别相当罕见)。

我的目标是开发单个分类器或它们的集合,以便能够以高精度(至少 80%)对感兴趣的 k << K 类进行分类,同时保持合理的召回率(什么是“合理的”有点模糊)。

我使用的特征大多是典型的基于 unigram-/bigram 的特征,外加一些来自正在分类的传入文档元数据的二进制特征(例如,它们是通过电子邮件还是通过网络表单提交的)。

由于数据不平衡,我倾向于为每个重要类开发二元分类器,而不是像多类 SVM 这样的单一分类器。

scikit-learn 中实现的哪些 ML 学习算法(二进制或非二进制)允许将训练调整到精确度(例如召回或 F1),我需要为此设置哪些选项?

scikit-learn 中的哪些数据分析工具可用于特征选择,以缩小可能与特定类的面向精度的分类最相关的特征?

这并不是一个真正的“大数据”问题:K 大约是 100k 大约是 15,可供我用于训练和测试的样本总数大约是 100,000

谢谢

【问题讨论】:

【参考方案1】:

鉴于 k 很小,我会手动执行此操作。对于每个所需的类,训练您的个人(一个与其他)分类器,查看精确召回曲线,然后选择提供所需精度的阈值。

【讨论】:

以上是关于需要帮助将 scikit-learn 应用于这个不平衡的文本分类任务的主要内容,如果未能解决你的问题,请参考以下文章

设计模式:需要帮助理解这个概念以及它如何应用于我的项目

在将约束应用于 UIScrollView 时需要帮助

在适用于 iOS 的视频通话应用中需要帮助

如何在结构化查询中使用 scikit-learn 模型?

转载用Scikit-Learn构建K-近邻算法,分类MNIST数据集

回归数据的 Scikit-learn 特征选择