涉及数字范围作为标签的多标签分类

Posted

技术标签:

【中文标题】涉及数字范围作为标签的多标签分类【英文标题】:Multi-label classification involving range of numbers as labels 【发布时间】:2014-12-31 00:09:12 【问题描述】:

我有一个分类问题,我的标签是等级,0 - 100,增量为 1(例如 1、2、3、4)。

我有一个数据集,其中每一行都有一个名称、文本语料库和一个评级 (0 - 100)。

我正在尝试从文本语料库中提取可以输入分类器的特征,该分类器将每行输出相应的评分 (0 - 100)。

对于特征选择,我正在考虑从基本的词袋开始。然而,我的问题在于分类算法。 sci-kit learn 中是否有支持此类问题的分类算法?

我正在阅读http://scikit-learn.org/stable/modules/multiclass.html,但所描述的算法似乎支持完全离散的标签,而我有一组连续标签。

编辑:我将我的收视率分类的情况如何?例如,我可以有 10 个标签,每个标签 1-10。

【问题讨论】:

如果你承认你的类是连续的,为什么不使用回归呢? 啊,我对回归不熟悉,似乎是这个问题的自然解决方案? 是的,当您的目标变量是某种连续值且偏差无关紧要时(可以预测 36 而不是 37,但预测 90 而不是 11 是不行的)。您真正想要做的是最小化预测错误值的概率,但预测远值的概率。这就是回归算法的用途。任何名称以 Regressor 结尾的算法都可以工作。 【参考方案1】:

您可以使用多变量回归而不是分类。 U 可以将文本语料库中的 n-gram 特征聚类成一个字典,并用它来形成一个特征集。使用此功能集,训练一个输出可以是连续值的回归模型。 U可以将输出的实数四舍五入得到1-100的离散标签

【讨论】:

啊,看来多元回归确实是一个更自然的解决方案。 scikit-learn 回归会解决这个问题吗?我假设逻辑回归是一种分类器算法,而不是您所指的。 是的,逻辑回归是一种分类算法。您可以尝试线性回归或岭回归或随机森林回归。 查看 scikit-learn.org/stable/modules/linear_model.html 以了解线性和多项式回归。您可能必须尝试使用​​不同的多项式模型来找出最适合您的模型。我认为你应该先从线性模型开始,然后再尝试其他多项式变体。如果这不能满足你的需要,其他建议也是寻找回归森林【参考方案2】:

您可以使用OneHotEncoder 预处理您的数据,将您的一个 1 到 100 特征转换为与区间 [1..100] 的每个值相对应的 100 个二进制特征。然后,您将拥有 100 个标签并学习多类分类器。

不过,我建议改用回归。

【讨论】:

应用 OneHotEncoder 会实现什么?您可以直接将 0-100 与 scikit-learn 中的任何分类器一起使用。

以上是关于涉及数字范围作为标签的多标签分类的主要内容,如果未能解决你的问题,请参考以下文章

Keras - 带权重的多标签分类

多标签文本分类《基于标签语义注意力的多标签文本分类》

多标签文本分类《基于标签语义注意力的多标签文本分类》

具有高度不平衡的多标签分类中的损失曲线

多标签分类及多输出分类

多标签文本分类《融合注意力与CorNet的多标签文本分类》