成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

基于用戶投票的排名算法之Delicious和Hacker News

開發 前端 算法
各種各樣的排名算法,是目前過濾信息的主要手段之一。對信息進行排名,意味著將信息按照重要性依次排列,并且及時進行更新。排列的依據,可以基于信息本身的特征,也可以基于用戶的投票,即讓用戶決定,什么樣的信息可以排在第一位。下面,我將整理和分析一些基于用戶投票的排名算法,打算分成四個部分連載,今天是第一篇。

互聯網的出現,意味著"信息大爆炸"。

用戶擔心的,不再是信息太少,而是信息太多。如何從大量信息之中,快速有效地找出最重要的內容,成了互聯網的一大核心問題。

 

[[59428]]

 

各種各樣的排名算法,是目前過濾信息的主要手段之一。對信息進行排名,意味著將信息按照重要性依次排列,并且及時進行更新。排列的依據,可以基于信息本身的特征,也可以基于用戶的投票,即讓用戶決定,什么樣的信息可以排在第一位。

下面,我將整理和分析一些基于用戶投票的排名算法,打算分成四個部分連載,今天是第一篇。

一、Delicious

最直覺、最簡單的算法,莫過于按照單位時間內用戶的投票數進行排名。得票最多的項目,自然就排在第一位。

舊版的Delicious,有一個"熱門書簽排行榜",就是這樣統計出來的。

 

 

它按照"過去60分鐘內被收藏的次數"進行排名。每過60分鐘,就統計一次。

這個算法的優點是比較簡單、容易部署、內容更新相當快;缺點是排名變化不夠平滑,前一個小時還排在前列的內容,往往第二個小時就一落千丈。

二、Hacker News

Hacker News是一個網絡社區,可以張貼鏈接,或者討論某個主題。

 

 

每個帖子前面有一個向上的三角形,如果你覺得這個內容很好,就點擊一下,投上一票。根據得票數,系統自動統計出熱門文章排行榜。但是,并非得票最多的文章排在第一位,還要考慮時間因素,新文章應該比舊文章更容易得到好的排名。

Hacker News使用Paul Graham開發的Arc語言編寫,源碼可以從arclanguage.org下載。它的排名算法是這樣實現的:

 

 

將上面的代碼還原為數學公式:

 

 

其中,

P表示帖子的得票數,減去1是為了忽略發帖人的投票。

T表示距離發帖的時間(單位為小時),加上2是為了防止最新的帖子導致分母過小(之所以選擇2,可能是因為從原始文章出現在其他網站,到轉貼至Hacker News,平均需要兩個小時)。

G表示"重力因子"(gravityth power),即將帖子排名往下拉的力量,默認值為1.8,后文會詳細討論這個值。

從這個公式來看,決定帖子排名有三個因素:

第一個因素是得票數P。

在其他條件不變的情況下,得票越多,排名越高。

 

 

從上圖可以看到,有三個同時發表的帖子,得票分別為200票、60票和30票(減1后為199、59和29),分別以黃色、紫色和藍色表示。在任一個時間點上,都是黃色曲線在最上方,藍色曲線在最下方。

如果你不想讓"高票帖子"與"低票帖子"的差距過大,可以在得票數上加一個小于1的指數,比如(P-1)^0.8。

第二個因素是距離發帖的時間T。

在其他條件不變的情況下,越是新發表的帖子,排名越高。或者說,一個帖子的排名,會隨著時間不斷下降。

從前一張圖可以看到,經過24小時之后,所有帖子的得分基本上都小于1,這意味著它們都將跌到排行榜的末尾,保證了排名前列的都將是較新的內容。

第三個因素是重力因子G。

它的數值大小決定了排名隨時間下降的速度。

 

 

從上圖可以看到,三根曲線的其他參數都一樣,G的值分別為1.5、1.8和2.0。G值越大,曲線越陡峭,排名下降得越快,意味著排行榜的更新速度越快。

知道了算法的構成,就可以調整參數的值,以適用你自己的應用程序。

[參考文獻]

  1. How Hacker News ranking algorithm works
  2.  How to Build a Popularity Algorithm You can be Proud of

原文:http://www.ruanyifeng.com/blog/2012/02/ranking_algorithm_hacker_news.html

【編輯推薦】

  1. 遞歸算法與優化后的算法對比
  2. Matt Cutts博文:谷歌算法的十項最新調整
  3. 算法學習之動態規劃策略入門
  4. PHP+MySQL應用中使用XOR運算加密算法
  5. Google算法十年變遷史
責任編輯:陳貽新 來源: 阮一峰的網絡日志
相關推薦

2013-08-22 09:53:52

Hacker News排名算法算法

2020-07-13 14:59:59

程序員技能開發者

2011-04-22 11:00:17

運維

2012-03-14 10:43:55

算法開發

2013-02-28 09:46:18

程序員巖機Hacker News

2013-08-26 10:48:02

Reddit排名算法算法

2011-05-10 13:14:17

2011-08-04 10:31:43

歸檔日志參數文件

2010-05-04 17:05:29

DNS負載均衡

2022-07-12 10:08:11

大學排名

2017-03-27 13:20:36

2015-06-17 09:54:05

News蘋果算法

2021-06-03 00:02:43

RedisRedlock算法

2021-07-30 00:09:21

Redlock算法Redis

2011-06-21 17:48:24

SEO關鍵詞

2011-06-23 11:36:27

網站排名

2011-04-26 10:00:17

2017-10-10 14:01:53

IDC 評選

2011-04-19 09:28:25

App Store蘋果應用商店

2012-04-25 22:58:36

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天插天天操 | 99re在线视频 | 日韩成人一区二区 | 亚洲一区二区视频在线播放 | 亚洲 中文 欧美 日韩 在线观看 | 国产美女一区二区 | 99精品网 | 成人午夜影院 | av中文字幕在线观看 | 国产精品av久久久久久久久久 | 国产伦精品一区二区三毛 | 亚洲免费在线 | 久久一级大片 | 黄色大片免费播放 | 男女啪啪网址 | 成人中文字幕在线观看 | 久久夜色精品国产 | 欧美在线一二三 | 在线观看黄色电影 | 国产精品一区二区三区久久 | 国产一在线 | 成人性视频免费网站 | 日韩久草 | 99精品国产一区二区三区 | 欧美成人精品欧美一级 | 欧美一区二区三区 | 欧美一级大片 | 久久久蜜桃一区二区人 | 亚洲综合大片69999 | 国产福利在线 | 亚洲精品视频二区 | 国产日韩精品一区 | 亚洲国产一区二区在线 | 久草免费福利 | 羞视频在线观看 | 中文字幕成人网 | 国产专区在线 | 亚洲精品一 | 欧美精品成人影院 | 麻豆国产精品777777在线 | 国产精品久久久久久久久久久新郎 |