重点描述上面两个公式:
Ts = A – B
相当于
A的发布时间 – 设定时间(默认时间为1970-01-01就可以)
X = U – D
相当于
支持率 – 反对率
来个JAVA实现方式。
private double U = 100;
private double D = 2;
获取默认时间(1970-01-01)
private double getDefaultTime() {
java.text.DateFormat format2 = new java.text.SimpleDateFormat(
"yyyyMMddhhmmss");
String s = format2.format(new Date(0L));
return Double.parseDouble(s);
}
获取某篇文章的发布时间
private double getPostPublish(Date date) {
java.text.DateFormat format2 = new java.text.SimpleDateFormat(
"yyyyMMddhhmmss");
String s = format2.format(date);
return Double.parseDouble(s);
}
获取秒时间差
private double getSecondsDifference(Date date) {
return getPostPublish(date) - getDefaultTime();
}
获取X
public double getX() {
return U - D;
}
获取Y
public double getY(double x) {
if(x > 0)
return 1;
if(x == 0)
return 0;
return -1;
}
获取Z
public double getZ(double x) {
if(Math.abs(x) >=1) {
return Math.abs(x);
}
return 1;
}
获取作热排名
public double hotRanking() {
double x = getX();
return Math.log10(getZ(x)) + getY(x) * getSecondsDifference(new Date())/45000;
}
到这里,算法算是实现啦。
发表时间的影响
发表时间和话题排名的影响可以被概括如下:
发表时间对排名有很大影响,该算法使得新的话题比旧的话题排名靠前
话题的得分不会因为时间的流失而减少,但是新的话题会比旧的话题得分高。这与 Hacker New 的算法不同 (随着时间的发展降低话题的得分)
下图展示了话题得分在好评和差评的数量不变时,随着时间而变化的情况:
对数关系
Reddit 的热排序算法使用了对数函数来衡量前面的投票与其他投票的差距:
前十个好评和之后的100个,1000个投票有相同的权重。
参见下面的图:
去掉对数函数之后(译注:采用线性函数)的效果
反对票的影响
Reddit 是为数不多的几个可以投反对票的网站。正如上边代码所述,一个话题的得分被定义成:好评数 - 差评数
下边的图可以帮助我们理解:
这一点对那些同时有大量赞成和反对票的话题(比如说一些有争议的话题)有显著影响。这种话题的排名会比只有赞成票的话题低一些,这也就解释了为什么 kittens 和其他一些没有争议的话题排名如此靠前。
话题排名算法的结论
发表时间是一个非常重要的参数,通常,新的话题要比旧的话题排名靠前
前10个好评跟接下来的100个有着同样的权重。比如一个有着10个好评的话题,跟有50个好评的话题有着相似的排名
有争议的话题(支持票和反对票的数量相近)要比支持票占大多数的话题排名靠后
参考资料:
http://www.iteye.com/news/28228
http://pycoders-weekly-chinese.readthedocs.org/en/latest/issue6/how-reddit-ranking-algorithms-work.html
- 大小: 19 KB
- 大小: 11 KB
- 大小: 10.1 KB
- 大小: 10.1 KB
- 大小: 6.9 KB
分享到:
相关推荐
知识图谱推理方向的基础算法Path Ranking Algorithm详解
为满足用户对非结构化数据检索的需求, 分析用户对数据的操作行为, 提出一种新型的数据热度敏感的非结构化数据检索排名算法HotRank。通过对数据操作情况(任务、访问次数、编辑时长等)进行日志记录, 形成非结构化...
Reddit 热门排名算法 基于 reddit 热门排名算法计算和 item 的分数。 对于科学背后的阅读 安装 npm install hot-ranking 用法 hot(upvotes, downvotes, date) // Load library var hot = require("hot-ranking"); ...
数学模型部分课件 pagerank算法详解
复制了Google的页面排名算法。 这是基于网站中存在的入站和出站并进行相应排名的。 有关算法的更多详细信息,请转到“参考”。 怎么跑 您必须安装以下python软件包: sudo pip安装urllib2 sudo pip安装...
[网站排名提高工具].Ranking.Toolbox.v8.0.1.Multilingual.Cracked-MESMERiZE 有效提高你的网站流量!一神器!
java实现的分层排序系统,其中排序算法使用基于Inventor-Ranking的发明人排序算法,可以运行
发表于2013 CVPR 的Saliency Detection via Graph-Based Manifold Ranking论文的代码,可以作为显著性检测学习的基础
第四章 遗传算法的基本原理与方法 4.1 编码 4.1.1 编码方法 4.1.2 编码评估策略 4.2 选择 4.3 交叉 4.4 变异 4.5 适应度函数 4.5.1 适应度函数的作用 4.5.2 适应度函数的设计主要满足的条件 4.5.3 适应度函数的种类 ...
reverse-engineering-the-hacker-news-ranking-algorithm, 历史黑客新闻数据的分析与排序算法 反向工程黑客新闻排名算法这个知识库是文章反向工程的一个同伴,它黑客新闻排名算法。 本文探讨了如何利用历史数据来...
TrueSkill 排名系统算法该排名系统用于根据 2011 年 ATP 男子网球单打比赛的 2011 年 1801 场比赛中 107 名球员的二进制结果识别和跟踪球员在网球比赛中的技能,这些球员在 2011 年对战季节。 使用三种不同的方法来...
MATLAB遗传算法工具箱(gatbx),谢菲尔德大学(The University of Sheffield)
在实际情况中,分类中使用的许多特征选择方法都直接应用于排序 我们认为,由于排名和分类之间的显著差异,最好开发不同的特征选择方法进行排名。 本文提出了一种新的特征选择方法
基于排序的自适应布谷鸟搜索算法 无约束优化的基于排序的自适应布谷鸟搜索算法 A ranking-based adaptive cuckoo search algorithm for unconstrained optimization
借用MFO算法实现对于火电机组调度问题的优化,在处理约束变量时使用了stochastic ranking的方法
第四章 遗传算法的基本原理与方法 45 4.1 编码 45 4.1.1 编码方法 46 4.1.2 编码评估策略 48 4.2 选择 48 4.3 交叉 52 4.4 变异 55 4.5 适应度函数 57 4.5.1 适应度函数的作用 57 4.5.2 适应度函数的设计...
MATLAB 智能算法30个案例分析与详解 BP神经网络 遗传算法,GA算法 种群交叉变异 设菲尔德遗传算法工具箱 包含全部MATLAB程序 遗传算法中常用函数 1. 创建种群函数—crtbp 2. 适应度计算函数—ranking 3. 选择函数—...
In plain, uncomplicated language, and using detailed examples to explain the key concepts, models, and algorithms in vertical search ranking, Relevance Ranking for Vertical Search Engines teaches ...
matlab 遗传算法 工具箱函数 讲解 很详细的讲解了matlab中遗传算法工具箱的函数使用方法
这里我们为大家介绍一种“基于贝叶斯后验优化的个性化排序算法”:Bayesian Personalized Ranking。 其本身并不优化用户对物品的评分,而只藉由评分来优化用户对物品的排序。按照论文的说法:it is a real ranking ...