机器学习多标签目标是一系列概率

时间:2013-11-06 19:32:59

标签: python machine-learning scikit-learn

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

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

谢谢!

2 个答案:

答案 0 :(得分:2)

一个选项是使用Multilayer Perceptron,因为它不需要二进制目标值,并且可以轻松处理约束到范围[0,1]的目标值(即,当使用sigmoid或tanh激活函数时) 。您还可以对输出进行标准化,以确保多个类的概率总和为一。

有关其他信息,网络上有大量资源(尝试搜索术语“多层感知概率输出”),但您可以启动herehere

答案 1 :(得分: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)

注意我们在学习模型时如何考虑标签权重。基本上,单词出现的次数会获得折扣优惠。