排名算法

12

我手头有大约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)

我希望您能提供伪代码的答案。


投票关闭,原因是过于宽泛。 - Ciro Santilli OurBigBook.com
2个回答

25
你的问题属于回归 (链接)类别。在机器学习术语中,你有一组特征 (链接)(在你的问题中列出),并且你有一个分数值,想要根据这些特征进行预测
Ted Hopp建议的基本上是一个线性预测函数 (链接)。这可能对你的情况来说过于简单了。
考虑使用逻辑回归 (链接)解决你的问题。以下是如何使用它。

1. 创建模型学习数据集

从你的4000个博客文章中随机选择一些m篇。应该选择足够小的一组,以便你可以轻松地手动查看这些m篇博客文章。
对于每篇博客文章,用从0到1的数字评分它的好坏。如果需要,你可以将其视为使用0、1、2、3、4表示值0、0.25、0.5、0.75、1的“星级”评分。
现在你有m篇博客文章,每篇都有一组特征和一个得分。
您可以选择扩展您的特征集以包括派生特征-例如,您可以包括“Upvote Count”的对数,“Comments Recieved”,“Share Count”和“Follower Count”的对数,并且可以包括“now”和“Created Time”之间小时数的对数。
使用梯度下降法找到适合模型学习数据集的逻辑回归模型。您应该将数据集划分为训练、验证和测试集,以便在模型学习过程中执行这些相应步骤。

由于互联网上已经有很多关于此部分的详细信息,而且这是一个标准化的过程,因此我不会再详细解释这个部分。

维基百科链接:

3. 应用你的模型

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

同样地,互联网上已经有很多关于此部分的详细信息,这也是一个标准化的过程。


如果你有任何问题,请务必提出!

如果你对机器学习感兴趣,建议你考虑参加在Coursera.org上免费的斯坦福大学机器学习课程the free online Stanford Machine Learning course on Coursera.org。(我与斯坦福大学和Coursera无关。)


我实际上觉得这个模型有些过度了。正如Ted所建议的,您想要弄清楚每个因素/特征的重要性并计算分数。这正是此答案在步骤1中要求执行的操作。如果您没有合理且一致地为训练集中的博客文章分配排名,又该如何在不给相关特征分配权重的情况下进行呢?现在,如果您已经明确分配了权重,那么问题已经解决了,为什么还要使用回归算法来“预测”排名呢? - Gmu
1
@Gmu 在餐厅用餐、看电影、阅读书籍等活动后,您能否按照0到5星的评分标准对整体体验进行评价?当您评价餐厅时,是否会有意识地基于“脂肪含量”、“碳水化合物含量”、“服务员友好程度”等非常低级别的特征,并将这些特征与您有意识决定的权重相结合?可能不会。然而,您可以“理性和一致地”评价餐厅(在某种程度上)。 - Timothy Shields
谢谢澄清。因此,它展示了你的意识中下意识赋予的潜在权重。在定量化定性回答/得分方面假设一致性。 - Gmu

13

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

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

您没有提供每个值的相对重要性,甚至没有说明这些值在排名方面代表什么意思。因此,更加具体的解释是不可能的。(如果较老的创建时间会使帖子排名下降,那么wE应该是负数。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接