重点描述上面两个公式:
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 算法详解 #### 知识图谱推理基础 在深入探讨Path Ranking算法之前,我们先简要回顾一下知识图谱的基本概念及其重要性。 **知识表示**是指将现实世界中的各类知识表达成计算机可以存储和计算的...
为满足用户对非结构化数据检索的需求, 分析用户对数据的操作行为, 提出一种新型的数据热度敏感的非结构化数据检索排名算法HotRank。通过对数据操作情况(任务、访问次数、编辑时长等)进行日志记录, 形成非结构化...
Reddit 热门排名算法 基于 reddit 热门排名算法计算和 item 的分数。 对于科学背后的阅读 安装 npm install hot-ranking 用法 hot(upvotes, downvotes, date) // Load library var hot = require("hot-ranking"); ...
数学模型部分课件 pagerank算法详解
在提供的代码中,研究人员可以深入理解流形排序的工作原理,同时也可以对其进行修改和扩展,以适应不同的应用场景。例如,可以结合深度学习技术,利用预训练模型提取的高级特征来构建更复杂的图结构,或者引入动态...
【网站排名提高工具 Ranking.Toolbox.v8.0.1】是一款专为提升网站在搜索引擎中的排名而设计的强大软件。这款工具集成了多种功能,旨在帮助网站所有者和SEO专业人员优化其在线存在,以获得更高的可见性和流量。下面将...
《MFO算法与火电机组调度优化:应用stochastic ranking策略》 在现代电力系统中,火电机组调度是一项至关重要的任务,它涉及到电力供应的安全、稳定和经济性。为了解决这一复杂问题,研究者们不断探索新的优化算法...
本文将深入探讨Newman定向排名算法的原理,并结合提供的代码资源,帮助读者理解其在实际应用中的运用。 一、Newman定向排名算法简介 Newman定向排名算法基于网络的结构特性,考虑了网络中边的方向性。在有向图中,...
"Neural_Bayesian_Personalized_Ranking.rar" 这个标题提到了一个基于神经网络的贝叶斯个性化排名算法。在推荐系统领域,BPR(Bayesian Personalized Ranking)是一种常用的优化策略,它利用对偶形式的马尔可夫链...
复制了Google的页面排名算法。 这是基于网站中存在的入站和出站并进行相应排名的。 有关算法的更多详细信息,请转到“参考”。 怎么跑 您必须安装以下python软件包: sudo pip安装urllib2 sudo pip安装...
遗传算法是一种模拟自然选择和遗传学原理的全局优化技术,源于进化计算理论。它通过模拟生物种群的进化过程,不断迭代生成新的解决方案,以逼近问题的最优解。gatbx提供了丰富的函数和结构,使得用户能够快速构建和...
亚马逊的广告排名系统包括自然排名体系(organic ranking)和广告排名体系(ad ranking 或 paid ranking)。二者在同一页面上共存,并且依据各自不同的排序规则进行展示。 自然排名体系,即organic ranking,指的是...
该算法的主要原理是通过计算每个元素的“影响力”或“权重”,并依据这些值来决定排序顺序。在科研领域,这个影响力可能是基于发表论文的数量、质量、引用次数等因素。在其他领域,这个影响力则可以根据业务需求定制...
7. **ranking.m**:排名函数,遗传算法中用于根据适应度值对个体进行排序,以确定繁殖概率。 8. **mpga.m**:多目标遗传算法的实现,处理同时优化多个目标的问题。 9. **mutate.m**:基础的变异操作函数,遗传算法的...
### 新闻推荐算法原理 #### 一、新闻推荐算法架构概览 新闻推荐算法的核心可以分为两个关键阶段:**召回阶段(retrieval)** 和 **排序阶段(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 年对战季节。 使用三种不同的方法来...
遗传算法(Genetic Algorithm, GA)是一种基于自然选择和遗传原理的全局优化技术,适用于解决多模态、非线性和复杂问题。MATLAB提供了遗传算法工具箱,使得用户能够方便地实现遗传算法的应用。以下是对"matlab遗传...