需要帮助将 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
大约是 100
,k
大约是 15
,可供我用于训练和测试的样本总数大约是 100,000
。
谢谢
【问题讨论】:
【参考方案1】:鉴于 k 很小,我会手动执行此操作。对于每个所需的类,训练您的个人(一个与其他)分类器,查看精确召回曲线,然后选择提供所需精度的阈值。
【讨论】:
以上是关于需要帮助将 scikit-learn 应用于这个不平衡的文本分类任务的主要内容,如果未能解决你的问题,请参考以下文章