是否有监督学习算法将标签作为输入,并产生概率作为输出?

时间:2011-04-28 04:02:31

标签: artificial-intelligence machine-learning data-mining

假设我想根据哪些标签存在或不存在来确定我将在SO上提出问题的可能性。

让我们想象一下,我有很多关于我做过或未做过的过去问题的数据。

是否有机器学习算法可以获取此历史数据,对其进行训练,然后能够预测我未来问题的推荐概率?请注意,它必须是概率,而不仅仅是一些任意分数。

让我们假设最多有7个标签与任何给定的问题相关联,这些标签是从成千上万的超集中提取的。

我希望它能够在标签之间建立非常复杂的连接,而不是每个标签只是以“线性”方式对最终结果做出贡献(就像贝叶斯垃圾邮件过滤器中的单词一样)。

因此,例如,可能是“java”这个词增加了我的upvote概率,除非它与“数据库”一起出现,但是“数据库”可能会增加我在“ruby”时出现的upvote概率。

哦,这应该是计算上合理的(在数百万个问题上训练一两个小时)。

我应该在这里研究哪些方法?

2 个答案:

答案 0 :(得分:4)

鉴于每条消息的标签可能不多,您可以创建“n-gram”标签并应用朴素贝叶斯。回归树也会在叶节点处产生经验概率,使用+1表示upvote,0表示没有upvote。有关可读的讲义和http://www.stat.cmu.edu/~cshalizi/350-2006/lecture-10.pdf,请参阅http://sites.google.com/site/rtranking/

答案 1 :(得分:1)

您可以尝试多种方法(线性回归,SMV,神经网络)。输入向量应包含所有可能的标记,其中每个标记代表一个维度。

然后,训练集中的每个记录必须根据标记转换为输入向量。例如,假设你在训练集(php,ruby,ms,sql)中有4个标签的不同组合,你定义了一个未加权的输入向量[php,ruby,ms,sql]。假设你有以下3个转换为加权输入向量的记录:

php,sql - > [1,0,0,1]

红宝石 - > [0,1,0,0]

ms,sql - > [0,0,1,1]

如果您使用线性回归,请使用以下公式

y = k * X

其中y代表你的案例中的答案(upvote / downvote)并插入已知值(X加权输入向量)。

如果你使用线性回归计算权重,你可以阅读here,但重点是创建二进制输入向量,其大小相等(或者如果你考虑其他一些变量,则更大)到数字在所有标签中,然后为每个记录设置每个标签的权重(如果不包括,则为0,否则为1)。