基于Google Reader发展起来的个性化推荐系统之三大问题
鄭昀@玩聚SR 20091003
??? 中科院的xlvector(即項亮,他所在的團隊The Ensemble在7月份獲得Netflix大獎賽公開測試排名第一,但在9月22日Netflix宣布BPC獲勝,原因據說只是因為項亮他們提交結果晚了20分鐘)最近發布了一個小工具GRSuggest,有點像之前Kuber在FeedzShare所做過的“個性化閱讀”,都屬于“基于某個Google Reader用戶的Shared Items中的文章,為該用戶推薦他可能感興趣的其他文章”,基本都是基于 User-based Collaborative Filtering 算法原理。
?? 項亮在《關于GRSuggest的一些思考》中說:“去重的問題,這個問題在文章推薦中非常常見,很多文章都被轉載N次了,經常發現一個幾年前的老貼又被轉載,其實我的推薦系統本身也是轉載”。
?? 這個延伸出來的是三個常見問題,確實不好解決。
一、火星人現象
?? 我前一段發了一個tweet:“不知道 Digg 能否解決火星帖頻頻被推薦的問題,這應該是所有digg類社區共同面臨的問題:不管一個帖子或段子有多近期老多頻繁被digg,隔一段時間總會有一個人當成寶貝發出來并被一大批火星人推薦。”
???有人認為,火星帖如果是優秀的,當然有權利被翻出來啊。但請注意,在某一個單一社區中,可以假設用戶群有相似的知識結構,那么以往的老貼子可以被翻出來,是可以的,天涯社區就屢屢這么搞,但在一個推薦系統中,如果還是不顧用戶的知識結構,屢屢出現很多老段子,那就真的是在驅趕用戶了。
?? 火星人現象的關鍵是,以前大家也討論過很多遍的:“推薦系統無法獲知用戶以前的知識結構”的問題。也就是說,一個單一的、新出現的個性化推薦系統,由于不知道用戶的知識結構(即以往的閱讀經歷、經驗),推薦的很多Item一定是用戶已經熟知和閱讀過的,這對于應用創始人和用戶來說都是一個很不好的體驗,但又完全無法規避。我們舉一個很簡單的例子,如果你在豆瓣中廝混時間不長的話,總會被豆瓣猜按照你的寥寥無幾的動作推薦很多你看過、聽過、讀過的東西,而且是屢屢如此,你被逼的不得不一個一個點擊掉,來讓豆瓣了解你許久以來的經歷。
?? 從Google Reader Shared Items衍生出來的推薦系統就存在這個問題,Shared Items并不能反映用戶的閱讀經歷,因為你在GReader里看了一篇文章,不代表你會Shared它,也不一定會Like它。這是問題一:從根子上就無法完整反映用戶的閱讀經歷。
?? 經過對Shared Items中文用戶統計,相當一部分用戶(我估計在50~60%)分享的文章所屬之channels(即博客源)數量不會超過5個,10%的用戶甚至只分享至多2個源的文章。多數中文用戶分享的文章都出自“名人榜|LeaderBoard”所列出的這些站點。這是問題二:如此大量的閱讀視野狹窄的用戶,推薦系統能否發揮作用呢?
二、有時效性和無時效性
??? 以前劉未鵬針對玩聚SR曾經提過一個很好的建議:“應該將文章分為"有時效性(如新聞時政類)"和"無時效性"(如讀書筆記、GTD方法等等),看上去這需要手工分配或者高級的自然語言處理,但我意識到一個很好的辦法:一般人們是在greader里面共享時效性文章,在twitter上討論時效性文章,但"無時效性",或者timeless的文章會收藏到delicious上面,因為greader/twitter代表分享討論交流,而delicious則代表收藏以后翻查。”
??? 他觀察到一個技巧:“無時效性的文章一般很久以后還會有人往delicious上面收藏,這是個極好的判斷依據。而時效性強的文章就不會存在這個屬性?!币簿褪钦f,你可以通過檢查一個文章在delicious的被用戶收藏的時間,從中發現哪些文章是有時效性的。
??? 項亮也提到:“究竟要不要把老帖子翻出來,這個首先要解決一個新聞和文章的區別,對于新聞,翻出來是沒有意義的,但對于知識性的文章,還是可以翻出來的。”
??? 這就是基于Google Reader的推薦系統的另一個問題:要不要推薦時效性強的文章?
??? 如果真的能分辨一篇文章的時效性,那么可以針對“火星人現象”加一個規則:推薦系統不推薦時效性強的文章,因為一是用戶完全有可能通過各種渠道早已看到,比如論壇比如twitter比如IM,二是雖然用戶不一定看過,但讓使用推薦系統頻度不高的用戶總看過時的文章也會產生這個系統很爛的印象。畢竟,閱讀和電影不一樣,你可以推薦很老的電影,但不能推薦很老的新聞資訊。
??? 無時效性的文章還可以這么搞:劉未鵬認為可以“判斷時效性是為了增加信噪比,將無時效性的文章單立一個tab來做榜單,可以使后來的用戶持續訪問到以往一段時間的精華文章,而不是大量的八卦或時政,timeless的精華文章列表的好處是一下能夠建立新讀者對玩聚SR的高質量的信任。”我后來雖然提供了存檔入口,但并沒有區分時效性。
三、驚喜很難嗎?
??? 項亮認為:“推薦文章除了要和用戶的興趣相關,還要起到幫助用戶拓展眼界的作用,這個方面的研究這幾年已經有不少了,也就是找出所謂的能讓用戶驚喜的東西,但是這方面的算法的主要問題是無法評測,因為不知道什么東西是用戶驚喜的?!?/p>
??? 是的,驚喜很難。
??? 何謂驚喜?就是在用戶的知識結構之外,又是用戶當下喜歡的條目(文章、電影、音樂、圖片、視頻)。所謂提及“當下”,是因為一個用戶的興趣點是動態的。
??? stumbleupon為何總能給用戶帶來驚喜?
??? stumbleupon的算法設計師Garrett Camp曾給出一張流程圖,描述了當按下stumbel!按鈕時,stumbleupon的后臺流程:
??? 圖中列出了三個因子:
??? A、Your Topics,也就是你對網頁的動作,比如like、dislike、quick stumbles(指當一個用戶stumble!到一個頁面時,沒有對這個頁面做任何投票行為,而直接再次點擊stumble!按鈕跳轉到另一個頁面的動作,他們將這個動作定義為:“soft not for me” or “down-vote”)。
??? B、Socially Endorsed Pages,就是你的站內好友所like的那些條目。
??? C、Peer Endorsed Pages,是系統計算出來的、跟你有相似投票習慣的人所like的條目。
??? 從中我們可以總結以下要點:
??? 1、一個能讓用戶有“驚喜”的推薦系統,必須捕捉足夠多的用戶行為細節。顯然,基于Google Reader的第三方推薦系統,拿到的數據是嚴重不足的,你無法知道用戶有意忽略了哪些文章,你很難拿到他的好友列表,Google不像FriendFeed那樣提供Dislike/Hide的按鈕;你只知道他何時Share或like了某篇文章從何處(值得注意的一個細節是,如果用戶是自己訂閱了煎蛋并推薦其中一篇文章,顯然煎蛋對用戶來說更加重要;相比而言,用戶只是從其他人的Shared Items訂閱中share了煎蛋的某篇文章,卻不去訂閱煎蛋,說明煎蛋對他來說可能還不算重要。這個細節有點像“quick stumbles”的思路)。
??? 2、一個能讓用戶有“驚喜”的推薦系統,必須擁有海量用戶,處理海量數據。今年2月份,stumbleupon?即已突破七百萬用戶,每天估計處理1千萬以上次投票行為,至少新增3萬以上個新推薦條目。Google Reader中文用戶還是太少,而且用戶行為太集中,單憑Shared Items出來的新增文章數目太少。
??? 這兩點都限制了第三方挖掘“驚喜”的力度。
??? 目前貌似只有twitter能毫無保留地提供各種用戶行為細節以及海量數據。
鄭昀@玩聚SR 北京報道
參考我的類似主題文章:
1、《如何測量Google Reader用戶的分享活躍度》 20090918;
2、《What’s popular的交叉驗證模式》 20090919.
轉載于:https://www.cnblogs.com/zhengyun_ustc/archive/2009/10/04/gr_re.html
總結
以上是生活随笔為你收集整理的基于Google Reader发展起来的个性化推荐系统之三大问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 玩家为玩《星空》而分手:每天玩16小时没
- 下一篇: 丰田汉兰达、国产宝马X5爬坡大比拼:还没