排名算法

时间:2013-06-11 04:50:02

标签: algorithm math machine-learning ranking rank

我有大约4000篇博文。我想根据以下值对所有帖子进行排名

Upvote Count => P
Comments Recieved => C
Share Count => S
Created time in Epoch => E
Follower Count of Category which post belongs to => F (one post has one category)
User Weight => U (User with most number of post have biggest weight)

我期待在伪代码中回答。

2 个答案:

答案 0 :(得分:23)

您的问题属于regression (link)类别。在机器学习术语中,您有一个features (link)的集合(您在问题中列出),并且您有一个得分值,您希望预测特征

Ted Hopp所建议的基本上是linear predictor function (link)。对于您的场景,这可能过于简单。

考虑使用logistic regression (link)解决您的问题。以下是您将如何使用它。

1。创建模型学习数据集

从您的4000集中随机选择一些m博客文章。它应该是一个足够小的集合,您可以轻松地手动查看这些m博客文章。

对于每个m博客帖子,使用从01的数字评分“好”。如果有帮助,您可以将其视为使用0, 1, 2, 3, 4“星号”作为值0, 0.25, 0.5, 0.75, 1

您现在拥有m篇博文,每篇博文都有一系列功能和分数。

您可以选择扩展您的功能集以包含派生功能 - 例如,您可以包括“Upvote Count”,“Comments Recieved”,“Share Count”和“Follower Count”的对数,以及你可以包括“现在”和“创建时间”之间的小时数的对数。

2。学习你的模型

使用渐变下降来查找适合您的模型学习数据集的逻辑回归模型。您应该将数据集划分为培训验证测试集,以便您可以在模型学习过程中执行相应的步骤。

我不再详细介绍这一部分,因为互联网上充满了细节,而且是一个固定的过程。

维基百科链接:

3。应用你的模型

在学习了逻辑回归模型后,您现在可以应用它来预测新博客文章“好”的分数!只需计算一组要素(和派生要素),然后使用您的模型将这些要素映射到得分。

同样,互联网上充满了本节的细节,这是一个固定的过程。


如果您有任何疑问,请务必询问!

如果您有兴趣了解有关机器学习的更多信息,则应考虑考虑the free online Stanford Machine Learning course on Coursera.org(我不隶属于斯坦福大学或Coursera。)

答案 1 :(得分:13)

我建议每篇博文的各个分数的加权平均值。指定一个反映每个值的相对重要性和值标度差异的权重(例如,E与其他值相比将是一个非常大的数字)。然后计算:

rank = wP * P + wC * C + wS * S + wE * E + wF * F + wU * U;

您不提供有关每个值的相对重要性的任何信息,甚至不提供值在排名方面的含义。因此,不可能对此更加具体。 (较旧的创作时间是否会在排名上下推送帖子?如果下来,则wE应为负数。)