2

我正在研究一个机器学习问题,其中我有一个多标签目标,其中每个标签都是一个概率。过去我曾处理过多标签问题,但每个标签都是二进制的。例如,如果目标是一系列书籍主题('Python'、'Machine Learning'、'Fairy Tales'、'Cooking'),则基于 Python scikit learn 的机器学习书籍的目标是 [1, 1, 0, 0]。

现在,对于我要解决的问题,我的目标不是二进制的。目标本身是一系列概率,如 [0.75, 0.25, 0, 0]。我认为目标是以众包方式产生的,这些概率反映了人们判断的可变性。因此,除非我想在类中存储概率(即 p<0.5 ->0,p>=0.5 ->1),否则我会遇到一个回归问题,即目标需要限制在 0 和 1 之间。任何想法我可以尝试哪种算法?我正在使用 Python 的 scikit learn。

谢谢!

4

2 回答 2

2

一种选择是使用多层感知器,因为它不需要二进制目标值并且可以轻松处理限制在 [0, 1] 范围内的目标值(即,当使用 sigmoid 或 tanh 激活函数时)。您还可以标准化输出以确保多个类的概率总和为单位。

有关其他信息,网络上有大量资源(尝试搜索术语“多层感知器概率输出”),但您可以从此处此处开始。

于 2013-11-06T21:14:03.617 回答
2

您可以将这些众包概率视为标签权重吗?然后您可以考虑可以考虑标签权重的训练算法,例如线性分类器或提升算法。

例如,如果使用朴素贝叶斯分类器,我们曾经处理每个标签的标签权重为 1,现在每个标签都有一个相关的分数标签权重。如果这是文档分类的应用,我们可能有一组用于两个训练实例的真实标签,如下所示:

1. {News: 0.8, Sports: 0.5}
2. {News: 0.1, Sports: 0.8}

假设您有一个单词w1在第一个实例中出现 5 次,在第二个实例中出现 2 次。

当您计算w1给定类别标签的单词的概率时,您执行:

P(w1 | News) = (5*0.8 + 2*0.1) / (#of weighted occurrences of all words in all your News docs)
P(w1 | Sports) = (5*0.5 + 2*0.8) / (# weighted occurrences of all words in all your Sports docs)

请注意在学习模型时如何考虑标签权重。本质上,一个词出现的次数获得了折扣信用。

于 2013-11-06T22:17:56.807 回答