我正在研究一个机器学习问题,其中我有一个多标签目标,其中每个标签都是一个概率。过去,我处理过多标签问题,但每个标签都是二进制的。例如,如果目标是一系列书籍主题("Python","机器学习","童话","烹饪"),则基于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。
谢谢!
你能把这些众包概率视为标签权重吗?然后,您可以考虑可以考虑标签权重的训练算法,例如线性分类器或提升算法。
例如,如果使用朴素贝叶斯分类器,我们过去将标签权重为 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)
请注意,当我们学习模型时,标签权重是如何考虑的。从本质上讲,一个单词出现的次数会获得折扣积分。
一种选择是使用多层感知器,因为它不需要二进制目标值,并且可以轻松处理限制在范围 [0, 1] 的目标值(即,当使用 sigmoid 或 tanh 激活函数时)。您还可以对输出进行归一化,以确保多个类的概率总和为统一。
有关其他信息,网络上有许多资源(尝试搜索术语"多层感知器概率输出"),但您可以从此处或此处开始。