【问题标题】:Machine Learning Multi-label target is a series of probabilities机器学习多标签目标是一系列概率
【发布时间】:2013-11-18 05:23:27
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 如果您只有一个具有概率的目标,我认为您 像您建议的那样卡住了分桶值。当然,逻辑回归确实适用于概率,但我不确定它是否完全适合您正在做的事情。
  • 是否有来自众包标签的一小部分概率?人们倾向于评估接近整数的概率,例如您的 0.75、0.25、0、0 示例。如果您只看到使用了少量唯一概率,您可以有效地将它们视为标记者使用的任意词,并且“忘记”它们是概率。这对您的应用程序来说可能已经足够了。另一方面,如果您需要一种“预测” 4 向量的方法,以便条目在 4 个元素上形成有效的离散概率分布,那就更难了。
  • 某种基于带标签的训练数据的狄利克雷先验贝叶斯方法在后一种情况下会更好。
  • 根据我的经验,如果这些概率确实是基于判断的,则可以选择分桶,因为这些数据中的噪声量往往很大。但它也可以是一些 ML 生成的概率,来自 NN 或 LDA 或类似的东西。在后一种情况下,由您决定成本函数,因为 0.10.2 不同,0.80.9 的方式不同
  • @EMS:不,这些概率无处不在。

标签: python machine-learning scikit-learn


【解决方案1】:

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

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

【讨论】:

  • 谢谢,这很有帮助。不过我暂时受限于 Python scikit,不支持神经网络。
  • sklearn 确实提供了Perceptron,尽管它似乎只支持单层。
  • 基本感知器(单个单元)几乎不能被视为神经“网络”。但是有一个 ongoing pull request 可以将 MLP 实现添加到 scikit-learn。
【解决方案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)

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

【讨论】:

  • 我可以,并且确实想过。我只是还没有在 Python 的 sklearn 中找到一种方法......
  • 那么这是一个不同的问题。也许根据你选择的算法自己修改sklearn的源代码?
  • 谢谢,我试试看!
  • 加权观察会得到相同的最终结果吗?
  • 你的意思是特征值是加权的?肯定是线性分类器。在同一个文档分类示例中,您可以将出现的 # 替换为 tf-idf 分数,这是加权特征的一个示例。
猜你喜欢
  • 2020-10-08
  • 2013-11-21
  • 2020-03-09
  • 2021-04-15
  • 2019-12-09
  • 2017-08-18
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
相关资源
最近更新 更多