`
lzj0470
  • 浏览: 1276713 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

作热排名算法(hot ranking)的工作原理

阅读更多

重点描述上面两个公式:
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 算法详解 #### 知识图谱推理基础 在深入探讨Path Ranking算法之前,我们先简要回顾一下知识图谱的基本概念及其重要性。 **知识表示**是指将现实世界中的各类知识表达成计算机可以存储和计算的...

    论文研究-HotRank:热度敏感的非结构化数据检索排名算法.pdf

    为满足用户对非结构化数据检索的需求, 分析用户对数据的操作行为, 提出一种新型的数据热度敏感的非结构化数据检索排名算法HotRank。通过对数据操作情况(任务、访问次数、编辑时长等)进行日志记录, 形成非结构化...

    hot-ranking:Reddit 热门排名算法

    Reddit 热门排名算法 基于 reddit 热门排名算法计算和 item 的分数。 对于科学背后的阅读 安装 npm install hot-ranking 用法 hot(upvotes, downvotes, date) // Load library var hot = require("hot-ranking"); ...

    MATLAB PageRank算法 网络球队排名问题

    数学模型部分课件 pagerank算法详解

    2013CVPR mmanifold ranking 流形排序算法

    在提供的代码中,研究人员可以深入理解流形排序的工作原理,同时也可以对其进行修改和扩展,以适应不同的应用场景。例如,可以结合深度学习技术,利用预训练模型提取的高级特征来构建更复杂的图结构,或者引入动态...

    网站排名提高工具 Ranking.Toolbox.v8.0.1.

    【网站排名提高工具 Ranking.Toolbox.v8.0.1】是一款专为提升网站在搜索引擎中的排名而设计的强大软件。这款工具集成了多种功能,旨在帮助网站所有者和SEO专业人员优化其在线存在,以获得更高的可见性和流量。下面将...

    MFO+Pf.zip_MFO算法_mfo_stochastic ranking_机组调度_火电

    《MFO算法与火电机组调度优化:应用stochastic ranking策略》 在现代电力系统中,火电机组调度是一项至关重要的任务,它涉及到电力供应的安全、稳定和经济性。为了解决这一复杂问题,研究者们不断探索新的优化算法...

    Ranking_newman定向排名代码_

    本文将深入探讨Newman定向排名算法的原理,并结合提供的代码资源,帮助读者理解其在实际应用中的运用。 一、Newman定向排名算法简介 Newman定向排名算法基于网络的结构特性,考虑了网络中边的方向性。在有向图中,...

    Neural_Bayesian_Personalized_Ranking.rar_BPR推荐_BPR算法_KQXN_bpr算法实

    "Neural_Bayesian_Personalized_Ranking.rar" 这个标题提到了一个基于神经网络的贝叶斯个性化排名算法。在推荐系统领域,BPR(Bayesian Personalized Ranking)是一种常用的优化策略,它利用对偶形式的马尔可夫链...

    PageRanking:复制了Google的网页排名算法

    复制了Google的页面排名算法。 这是基于网站中存在的入站和出站并进行相应排名的。 有关算法的更多详细信息,请转到“参考”。 怎么跑 您必须安装以下python软件包: sudo pip安装urllib2 sudo pip安装...

    MATLAB遗传算法工具箱(gatbx)

    遗传算法是一种模拟自然选择和遗传学原理的全局优化技术,源于进化计算理论。它通过模拟生物种群的进化过程,不断迭代生成新的解决方案,以逼近问题的最优解。gatbx提供了丰富的函数和结构,使得用户能够快速构建和...

    亚马逊广告排名体系算法详解.pdf

    亚马逊的广告排名系统包括自然排名体系(organic ranking)和广告排名体系(ad ranking 或 paid ranking)。二者在同一页面上共存,并且依据各自不同的排序规则进行展示。 自然排名体系,即organic ranking,指的是...

    分层排序系统(基于Inventor-Ranking的发明人排序算法)-java版

    该算法的主要原理是通过计算每个元素的“影响力”或“权重”,并依据这些值来决定排序顺序。在科研领域,这个影响力可能是基于发表论文的数量、质量、引用次数等因素。在其他领域,这个影响力则可以根据业务需求定制...

    MATLAB谢菲尔德遗传算法工具箱(函数名,后缀名,全小写,完美可用)

    7. **ranking.m**:排名函数,遗传算法中用于根据适应度值对个体进行排序,以确定繁殖概率。 8. **mpga.m**:多目标遗传算法的实现,处理同时优化多个目标的问题。 9. **mutate.m**:基础的变异操作函数,遗传算法的...

    新闻推荐算法原理.docx

    ### 新闻推荐算法原理 #### 一、新闻推荐算法架构概览 新闻推荐算法的核心可以分为两个关键阶段:**召回阶段(retrieval)** 和 **排序阶段(ranking)**。这种划分的主要目的在于提高系统的整体效率和用户体验。 ...

    MATLAB遗传算法工具箱使用手册

    第四章 遗传算法的基本原理与方法 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, 历史黑客新闻数据的分析与排序算法.zip

    reverse-engineering-the-hacker-news-ranking-algorithm, 历史黑客新闻数据的分析与排序算法 反向工程黑客新闻排名算法这个知识库是文章反向工程的一个同伴,它黑客新闻排名算法。 本文探讨了如何利用历史数据来...

    Ranking-Algorithms:机器学习-概率排名系统

    TrueSkill 排名系统算法该排名系统用于根据 2011 年 ATP 男子网球单打比赛的 2011 年 1801 场比赛中 107 名球员的二进制结果识别和跟踪球员在网球比赛中的技能,这些球员在 2011 年对战季节。 使用三种不同的方法来...

    matlab遗传算法工具箱函数及实例讲解.rar

    遗传算法(Genetic Algorithm, GA)是一种基于自然选择和遗传原理的全局优化技术,适用于解决多模态、非线性和复杂问题。MATLAB提供了遗传算法工具箱,使得用户能够方便地实现遗传算法的应用。以下是对"matlab遗传...

Global site tag (gtag.js) - Google Analytics