確定目標(biāo)
提出問題
在我燒網(wǎng)中,對(duì)文章的其他操作如評(píng)論、分享等也類似于添柴,被賦予一定的分?jǐn)?shù)計(jì)入文章的得分。當(dāng)然,單純按得分來排序也是不合理的,這與直接用添柴數(shù)排序的結(jié)果是一樣的。為了保證用戶喜歡的新文章能夠永遠(yuǎn)排在用戶同樣喜歡的舊文章之前,我們必須要引入時(shí)間參數(shù),由用戶操作的得分和文章的發(fā)布時(shí)間共同決定文章的排序值。添柴數(shù)(包括其他用戶操作)作為正向的參數(shù),文章發(fā)布時(shí)間作為反向的參數(shù),最終得到的排序用的排序值與文章得分成正比、與發(fā)布時(shí)間成反比。于是又一重要原則產(chǎn)生了—文章排序值隨時(shí)間的前進(jìn)而衰減。
根據(jù)前面的分析,可以確定如下目標(biāo)。
分析到這里,團(tuán)隊(duì)里的每一個(gè)人都欣喜若狂:我們知道算法即將完成了。但是一個(gè)尖銳的矛盾又把我們拉回現(xiàn)實(shí):文章得分是非常容易作弊的。一個(gè)人如果對(duì)一篇文章連續(xù)添柴,包括換用很多馬甲連續(xù)添柴,都可以直接獲得很多得分。我們可以限制一名用戶連續(xù)添柴的次數(shù),可是我們無法限制一個(gè)用戶注冊(cè)馬甲的數(shù)量。于是,一個(gè)關(guān)于用戶權(quán)重的參數(shù)—用戶系數(shù),出現(xiàn)了。用戶系數(shù)與等級(jí)相關(guān),等級(jí)越高的用戶權(quán)
就像Google不會(huì)公布其搜索排名算法一樣,大多數(shù)公司都不會(huì)對(duì)外公布涉及排名的算法。因?yàn)檫@個(gè)算法一旦公布,總會(huì)有人去做SPAM。同理,我燒網(wǎng)的熱文排序算法也不會(huì)對(duì)外公布,我們只是向用戶提供一些基本的原則。這一算法被我們命名為SmartHot,是在2009年底我燒網(wǎng)改版時(shí)設(shè)計(jì)的,到現(xiàn)在已有一年多時(shí)間。這期間我們對(duì)算法進(jìn)行了數(shù)次改進(jìn)和調(diào)整,也正因如此,才使得我有機(jī)會(huì)可以將當(dāng)時(shí)的一些設(shè)計(jì)思路拿出來與大家分享。希望通過對(duì)這一算法的產(chǎn)生過程的介紹,給更多的網(wǎng)站、程序設(shè)計(jì)人員一些啟發(fā),同樣也希望大家踴躍拍磚,共同學(xué)習(xí)、共同進(jìn)步。
1. 為每種用戶操作設(shè)定其固有的分值。
在提出要研制一套文章排序算法之前,我們先是對(duì)這次改版進(jìn)行了一個(gè)規(guī)劃,整個(gè)規(guī)劃有一個(gè)中心思想,那就是讓更多的用戶參與到網(wǎng)站中來,通過用戶的參與提高網(wǎng)站內(nèi)容的質(zhì)量,然后再把高質(zhì)量的內(nèi)容反饋給用戶。SmartHot要為這一中心思想服務(wù)。后來的實(shí)踐證明,在這套算法的支撐下,我燒網(wǎng)實(shí)現(xiàn)了飛速的發(fā)展,最終帶來的主要影響有三:一是更多用戶參與到社區(qū)的活動(dòng)中來,二是內(nèi)容質(zhì)量大幅提升,三是節(jié)約了大量的人力成本而且?guī)砹吮热斯じ玫男Ч�。在這一中心思想的指導(dǎo)下整個(gè)團(tuán)隊(duì)開始了對(duì)熱文排序算法的思考。
首先,以用戶行為為推薦的基礎(chǔ)并不是說讓用戶去推薦,因?yàn)橛脩糇鎏嘭暙I(xiàn)會(huì)使網(wǎng)站失去活力。更加明智的做法應(yīng)該是基于用戶的各種單一操作,通過數(shù)據(jù)挖掘找出最值得推薦的文章。這樣就細(xì)化成了一個(gè)數(shù)據(jù)挖掘的問題—通過對(duì)用戶行為數(shù)據(jù)的挖掘找到好的文章再推薦給全部的用戶。面對(duì)這樣的問題,團(tuán)隊(duì)提出了很多種解決思路。最簡(jiǎn)單、最常規(guī)的當(dāng)然就是按照文章的瀏覽量來排序。然而無數(shù)經(jīng)歷都證明了這不是一個(gè)合理的算法,瀏覽量的高低只能代表訪問者被標(biāo)題、圖片等吸引的程度。如果想要了解用戶對(duì)文章的真實(shí)感受,就得用添柴數(shù)(我燒網(wǎng)中用戶通過為文章添柴來表達(dá)對(duì)其的喜愛)來排序。但是,無論是瀏覽數(shù)還是添柴數(shù),都是累計(jì)的數(shù)字,最終必然會(huì)因馬太效應(yīng)產(chǎn)生嚴(yán)重問題,使排在前面的文章永遠(yuǎn)排在前面,新文章無法進(jìn)入前列。這時(shí),將二者結(jié)合的思路出現(xiàn)了。
重越大,剛注冊(cè)的用戶權(quán)重極低。基本思路產(chǎn)生后,問題也就很明確了,接下來就是根據(jù)這些問題確定各個(gè)目標(biāo),然后解決問題。
我燒網(wǎng)是一個(gè)以博客內(nèi)容聚合為基礎(chǔ)的閱讀社區(qū),像其他內(nèi)容聚合網(wǎng)站一樣,由于存在海量的內(nèi)容,因此對(duì)內(nèi)容的提煉尤為重要。在改版之前,我們一直通過人工方式推薦內(nèi)容,但人工方式有兩個(gè)缺陷:一個(gè)是人力成本過高,另一個(gè)是推薦出的內(nèi)容往往是編輯喜歡而用戶不一定喜歡的。這次改版,我們希望采用眾包的方式,讓用戶為用戶推薦內(nèi)容,從而節(jié)約團(tuán)隊(duì)的人力成本,同時(shí)也能夠真正把用戶喜歡的內(nèi)容推薦出來,使用戶的互動(dòng)更加活躍。這個(gè)推薦列表就是后來的我燒網(wǎng)熱文。從訪問統(tǒng)計(jì)來看,熱文頁的PV也遠(yuǎn)遠(yuǎn)高于其他頁面。而熱文的幕后,就是靠這套SmartHot算法支撐的。
我們把添柴數(shù)作為正向的參數(shù),把瀏覽量作為反向的參數(shù)。如果一篇文章被用戶瀏覽了100次、添柴10次,那么就計(jì)為0.1分(10/100=0.1)。這就意味著,瀏覽量越大,最終的排序分值越��!這是一個(gè)很具突破性的想法,因?yàn)槲覀冎篮芏嗤卸及褳g覽量作為正向參數(shù)給文章排序。問題貌似解決了,但是新的問題也隨之產(chǎn)生:大多數(shù)用戶只看不操作,換句話說很多用戶即便覺得文章很不錯(cuò),也懶得去添柴,這樣勢(shì)必導(dǎo)致很多好的文章因?yàn)闉g覽量大反而失去排在前面的機(jī)會(huì)。幾番斟酌,我們最終決定放棄瀏覽量這個(gè)依據(jù)—文章得分以添柴數(shù)為基礎(chǔ)。
Copyright since 2005,問鼎科技(58wd.com) 服務(wù)電話:400-666-4165 地址:成都市IT大道蜀清路239號(hào) 蜀ICP備10202221號(hào)