類似今日頭條這樣的個性化推薦網站怎麼評價推薦質量的優劣?

比如搜索,是看query和搜索結果的相關性。
而推薦引擎其實是開放性的,即不知道用戶的需求,即給用戶推薦內容。
那麼什麼樣的結果是好的呢?好的推薦引擎應該具備什麼樣的特徵?如何評估?

如果用數據說話,那麼什麼樣的指標最能說明問題呢?


不了解今日頭條是怎麼運作的。不過因為在Facebook工作時負責新鮮事(Newsfeed)的個性化推薦與排序,我可以說說Facebook是怎麼衡量自己推薦和排序的質量的。

在具體執行層面,主要有三個方式,分別是從機器學習模型產品數據,和用戶調查上來考核推薦引擎的效果。

1. 機器學習模型
推薦引擎的一大核心就是機器學習(不過現在都說人工智慧了,但本質上還是supervised learning)。如果是想考察機器學習模型的質量,學術上早就有一套成熟的實踐方法。無論是模型的選擇(比如從decision tree替換成neural network),還是迭代改進(比如模型訓練時多用一倍的數據),都可以使用基於supervised learning的衡量辦法。最常見的就是AUC。

另一方面,對於某一類特定問題也有更細緻的指標。比如說,可以通過模型特徵的重要性(feature importance)知道新加的特徵是不是有用。

2. 產品數據
再牛逼的機器學習模型都要經歷產品數據的實際檢驗。這方面大家就都比較熟悉了,KPI嘛。不過在Facebook特別是Newsfeed這種牽一髮動全身的地方,我們會追蹤一系列數據來描述產品,而不是依賴某一個單一標準。這些數據包括但不限於:

  • 日/月活躍用戶(DAU,MAU)
  • 用戶互動 (點贊,評論,轉發等)
  • 用戶發帖量
  • 用戶停留時間和消耗的內容量
  • 收入
  • 用戶互動率(比如看過的內容中點贊/評論/長閱讀/收藏的比例)
  • 用戶舉報和屏蔽的數量

而且,在日常的快速迭代和A/B測試中,只有這些籠統的數據是不夠的,我們還需要些更細緻的數據來真正理解我們的一些改動。比如說:

  • 內容類型的分布是怎麼變動的:用戶原創和轉發的比重分布,網頁鏈接和圖片視頻的比重分布,長視頻和短視頻的比重分布等等
  • 對公眾帳號是怎麼影響的:什麼樣的公眾號會受益於這次改動
  • 哪些第三方巨頭受到了影響,影響是否合理:比如我最早在FB實習時候的項目是整頓SPAM帳號,那個改動重創了Zynga(因為Zynga嚴重依賴用戶騷擾他的好友來吸量),但大家覺得挺合理的,讓公關去溝通了下就發布了。

另外,為了防止短暫的眼球效應,對每一個重要的產品決策,我們都會維護一個長期的backtest,用來評估這個決策的長久影響。比如說:

  • 對於在feed裡面放廣告這個決定,我們會選擇一小部分用戶,對他們長期不顯示廣告,然後將他們的用戶活躍度同正常能看到廣告的用戶做對比,來衡量廣告的長期影響。
  • 類似的,對於Newsfeed是否排序,我們也有一個holdout group,他們的feed是完全按時間排的。

這樣,對每一個可能會有爭議的決策,但未來的每個時間點,我們都能清楚的知道,我們是面臨著怎樣的取捨。有了這層保障,在決策的當下,我們也就敢於冒險些,走得更快些。

3. 用戶調查
大多數產品數據有其局限性,因為他們是顯性而被動的。比如說,你給用戶推送了一個博眼球的低俗內容,用戶在當下可能是會去點開看的,所以數據上是好的。但用戶可能心裡對這個內容的評價是低的,連帶著對作為內容平台的產品也會看輕,長此以往對產品的傷害是巨大的。

KPI無法完全描述產品質量,在矽谷互聯網圈是有共識的,但如何解決,每個公司答案都不同。Twitter系的CEO們,無論是Jack Dorsey還是Evan Williams,都傾向於輕視KPI而依賴自己主觀想法來決策。Google和Facebook,則採取了另一條路,他們決定把用戶評價納入到KPI中

Google在這方面的工作開始得比較早,因此公開的資料也比較多。概括地說,他們僱傭大量的普通人,以用戶的角度來對Google搜索排序的質量和廣告推薦的質量做主觀打分。當打分的量大到一定程度,這些數據就足以成為一個穩定有效的,且可持續追蹤並改進的KPI了。Facebook雖然產品領域有所不同,但在個性化推薦上也採取了類似的方法。

回答的最後,還是想重申兩個方法論:

  • 永遠不能依靠單一一個KPI來評價產品上的工作。任何KPI,任何產品,都不能。
  • 在明確KPI局限性的前提下,數字可以終結大多數無意義的扯皮,無論是技術上的,還是政治上的。

推薦類產品如果用相關性來做衡量指標,可能會導致模型過度收斂,最後推薦出的內容越來越相似。一個典型的反例就是兩三年之前的豆瓣FM,我在上面聽過幾首張懸的歌之後,不停的推薦張懸、清新這種風格的曲目,每次聽上幾首便會有「膩」的感覺。所以好的推薦引擎一定是兼顧了收斂和發散的。

那麼用數據說話呢。

理想的情況是——

首先,制定一個(多個)核心指標來衡量公司的產品狀態。比如 Medium 的 CEO Evan 說他們最關心的是用戶的閱讀時長。

其次,大的指標可以拆分成較細的指標,或者用一些次重要的指標輔助。比如閱讀時長可以拆分為閱讀的文章數和文章平均閱讀時長;閱讀時長之外,也可以加入互動數(評論數/贊同數/etc)來衡量用戶對閱讀的內容是否感興趣。

最後,根據演算法的迭代,進行對照試驗,看 key metrics 的變化是否符合預期,符合上線,不符合下線修改再做測試即可。

然而現實情況並不是這麼簡單——

指標的制定異常困難,想建立一套數據體系來衡量產品的質量,需要多次的嘗試和往複;加上公司不同部門、部門裡每個人,對於事情的看法、甚至是價值觀的不同,其中不乏撕x的情況。

以今日頭條為例,CTR (click through rate) 是常見的用來衡量搜索或推薦產品的指標,比如今日頭條推薦了一條新聞,10000個人看到了,最後有多少人點擊了這條新聞去查看了詳細內容呢?理論上,推薦的質量越高,點擊率就應該越高。

但是正如 Evan 所言,片面的追求單一指標是有很大的風險的。為了提高點擊率,推薦了很多標題黨、與色情、暴力沾邊的內容,都可能使 CTR 上升,但這並不意味產品或推薦的質量有提升(至少我是這麼認為的)。所以在制定 key metrics 的時候,必須非常慎重。

——說了這麼多其實就兩點。
1. 結果指標比相關性更好。
2. 結果指標的制定需要非常慎重。

-
利益相關:毫不相關。


有幾個業內常用指標:

1. 平均轉化率(點擊量/曝光量)

2. 人均閱讀篇數(點擊PV/點擊UV)

3. 平均閱讀完成率

4. 人均閱讀時長(這個會受文章長度影響)

5. 用戶互動數據(評論、分享)

另外,非常同意上面回答的一個觀點,必須從多個維度選擇數據指標來分析產品。


如果是我,排除系統層面的指標外,在前端用戶層面,我會找如下幾個指標:

  1. 短期正向指標:點擊率:推薦的內容被點擊的次數/推薦內容的展示次數,越高越好;
  2. 短期負向指標:屏蔽率:推薦的內容被用戶點擊了類似「不感興趣」的比率,越低越好;
  3. 長期指標:月留存率,避免標題黨帶來的短期假陽性。

對,用頭條用了一段時間後發現總是推送類似的東西,知道是系統根據興趣推送的,但是看多了就膩,然後嘗試不斷的點不感興趣,系統顯示:「將減少類似推送內容」,後來發現並沒有什麼卵用,於是就卸載了。


以下是今日頭條演算法構架師 @曹歡歡 的演講分享,現摘錄如下:

今日頭條是如何做個性化推薦的

頭條是怎麼推薦內容的?舉個簡單的例子,頭條在給用戶找一篇你可能喜歡的新聞的時候,他會考慮三方面的因素:

第一,用戶特徵,比如興趣,職業,年齡,短期的點擊行為。

第二,環境的特徵。推薦是一個情景化的事。比如我自己早上,會看一看科技新聞。周末晚上會看搞笑視頻。還有網路環境,你要有wifi的話,給你多推視頻。

另外就是文章自身的特徵,它有哪些主題詞,命中了哪些標籤,還有它的熱度,是不是很多家媒體都轉載了。包括文章時效性和相似文章推薦。


接下來五到十年的一個願景,成為最懂你的信息平台,連接人與信息,促進創作和交流。

在開始一兩年,我們對創作這塊重視不夠,也是資源不夠,沒有形成自己的壁壘。但是從14年版權風波之後,我們在這塊投入的非常大的資源和精力。

今日頭條的自媒體平台已經是國內互聯網第二大的自媒體平台。它的增長速度要快於微信公眾平台。為什麼呢?大家可能都有微信公眾號,可能有這種體會,你在微信上做一個公眾號,微信是不會幫你推廣的。你要靠自己的資源,靠自己的人脈進行推廣。


比如我專註於寫歷史故事的,我沒有那個資源,我沒有那個商業能力,他可能還在三線城市,怎麼去推廣?頭條希望最好的內容到達最適合的受眾,我們有個系統幫你自動推薦,點擊量多了我們還會給你錢。沒有聽說微信公眾號還會給自媒體錢的。


歸納總結、A/B測試、雙盲交叉驗證

數據思維的三大工具靈活交叉運用

介紹完頭條,下面介紹一些案例,我先介紹數據思維幾個比較重要的工具:

第一個工具是歸納總結,按照特定的維度進行排序,分析對象特性。這個可能反映出事物內在的一些規律,基於這個分析,去引導決策。


第二個叫A/B測試,把實驗對象隨機分組,把一個或多個測試組的表現與對照組比較,進行測試。

怎麼做A/B測試,第一步我們線上流量進行分流,正常用戶還是走正常的流量,一部分流量我們要保證樣本無偏(不要樣本全是女的或者全是90後),通過科學方法去劃分出一些流量做實驗,還要進行分組,分出對照組和實踐組,對照組和線上的策略完全一樣,實驗組我們做一些小小的改變。

比如頭條網頁版的首頁,新版加了一個鏈接,老版加了一個任務評論。我們看哪個好呢?通過A/B測試的方式,一部分人看到新版的結果,一部分是老版效果。事後統計分析,看到底哪個版本效果好。


第三個叫做雙盲交叉驗證。它是說在評估一項數據的時候,我可以把一部分樣本抽樣,讓其他人再評估一下。根據抽樣數據評估的一致性來判斷該評估的可靠性怎麼樣,比如你審一些黃色反動的文章,機器做得再好,必須有人來把關。

這個事本身判斷特別複雜,機器也不能做好,我們要保證評估的有效性,要引入爭議複評機制。


今日頭條從一誕生就有數據基因

到底取什麼名字?

讓數據來說話,用戶來選擇

頭條的誕生怎麼體現出濃濃數據思維的?一開始就有。大家都肯定經歷過這種場景,APP怎麼起名字。起名字的方法很多種:言簡意賅琅琅上口,或者擬聲,或者情懷。


頭條面臨幾個問題,我們名字是哪種范兒?我們用了數據思維的工具,歸納總結。去蘋果商店找各個免費榜單的前十名APP,做了一個歸類,發現琅琅上口好記的名字,是最多的。

從當時的效果來看,大白話更好。我們調性已經定了,我們就要土,沒情懷,比如一個初中文化的用戶都能看懂。


我們列了幾個名字,沒有人敢打賭哪個更好,我們做個A/B測試吧。我們要選兩個渠道,發現這些APP在這兩個渠道上留存都差不多,花的錢差不多。


我拿這兩個渠道做實驗,選兩個名字或者選N個渠道,N個名字,分別投放。這個界面功能都完全一樣,就是名字不一樣,就是用戶看到在外面的列表名字不一樣。


我們看哪個留存高,相應的變成了哪個名字的單位獲取用戶成本低,這是一個最重要的,最後發現今日頭條是表現最好的。

數據思維怎麼指導演算法演化?

大的推薦模型和推薦找回模型交叉運用

很多因素都會影響推薦效果

剛才講了我們頭條的誕生是怎麼運用這個數據思維的。接下來可能會更硬一點,這是我的老本行,怎麼用數據思維去指導演算法的演化。


我們先簡單看一下頭條的推薦演算法,頭條最核心的是怎麼利用這些數據。怎麼提升呢?不斷改進我的演算法,讓它更聰明,更好利用這些數據。頭條演算法是一個非常龐大複雜的演算法策略的組合。我們需要把這個系統的演化放在可控的情況下,讓它不斷朝著優化的方向去演化。


頭條的推薦演算法分兩層。

最上面一層,一個大的推薦模型,就是說模型做決策依據的維度,包括性別、年齡、興趣等都是維度,我們有數百億特徵,涵蓋你能想到的一切可以幫助做判斷的信息,這個還在不斷的增加,

還有一層就是推薦召回模型,他是幹什麼的呢?上面那個模型特彆強大,但是它的計算資源也很大,成本結構壓力也會非常大,不要所有的事情都讓這個模型去做。


所以有一個召回模型,各個策略獨立的負責判斷哪些內容有資格進入排序侯選。比如判斷這個文章的來源是不是我喜歡的,這個人是不是總愛看虎嗅的文章,就推薦虎嗅的。有的更簡單,就看性別、年齡。這個模型可以過濾掉90%的無效信息,最上面推薦模型的負擔就降下來了。


在這個系統中,對推薦效果造成影響的因素有哪些呢?

第一是候選內容集合的變化。


因為頭條最早我們是只推薦正規的新聞,不敢推短時效的東西,怕推不好,有時候文本看不太出來,但實際上這個事可能是過氣了。

現在,我們希望我們能推一些天氣預報預警。還有一些生活有用信息,比如家裝。這些東西都推的話,有可能給線上的體驗帶來改變,這個改變有可能是正向的,有可能是負向的。它是不是好呢,我們要試了才知道。


第二個是召回模塊的改進和增加。

有些事拿不準,讓高級的人去判研一下。另外一個是增加人手。


還有一個是推薦特徵的增加。

剛才講到我們有幾百億特徵了,可能涵蓋了目前能想到的對推薦有影響的所有的因素。但是是不是窮盡呢?這肯定是沒有窮盡的,加進去好不好呢?也不一定,讓系統複雜性變高了。計算機算要花時間的,一秒鐘過去了,都沒算出來,用戶體驗可能變差。

另外就是規則策略,所有的線上產品涉及到機器學習的,大數據的,不可能完全用模型解決,要有人干預的。


最好有一個溝通機制,實驗太多了,我們需要高效的管理和分配流量。

還有特殊的過濾條件,有的人說你不能隨機給我流量,我就是看女性用戶變化的。

這個是我們實際的A/B測試系統的工作流程,非常直觀。首先我們會把流量進行分桶,我們降低系統的複雜性。如果你每次要考慮三億用戶怎麼分,複雜度太高了。

然後就是實驗分組,這些桶還分兩組,有實驗組和測試組,像這個就是四個桶分了,黃色的是對照組,綠色的你把改進在綠色的用戶身上可以起到效果。


這個PPT就是講了我們這個數據實驗是怎麼分析的,先把數據拿過來,再做日誌處理,存到日誌,發到服務端,我們會有一個分散式的文件系統,保證這個東西不丟。

結果出來之後,我們寫入資料庫,我們需要一個很好的數據可視化的系統,因為你都出來數字,大家看著也不方便。給產品經理給高層老闆看一堆數字很煩,就看曲線就行了。


快速迭代,但怎麼保證方向正確?

用數據實驗,去測試需求

數據思維可以幫你把每一項能力發揮到極致

頭條從上線以來,經歷了幾十個版本的更新。產品的發展肯定要不斷迭代的,我們怎麼讓迭代快,而且朝著正確的方向走呢?這是一個很大的問題。


大家都知道需求從哪來,有一類的需求其實很簡單,我們叫戰略需求。以我們頭條自己來說,我們最終要實現一切都可以推薦。


第二件事叫確定性需求。這是常識。不能卡,用戶用低端的機器也能很流暢的跑。省流量,還有記錄更精細的用戶動作。

剩下的需求從哪裡來?其實就是怎麼把提高用戶粘性,提高用戶體驗,怎麼提煉出更多具體的需求,去支撐上面的這個戰略。頭條收集剩下需求,最重要的一個方向就是從用戶反饋中去收集。

有一個專門的用戶反饋組,會選一些非常有產品想法的年輕人,不斷和用戶做溝通。

用戶有可能提出一個新的東西,不在你原來的需求列表裡。你改變之後是不是傷害了那些不反饋的用戶呢?不知的,只能做實驗的需求池。


我們產品每個需求都要做A/B測試,移動客戶端有兩類,一類是原生的功能,這個實現起來成本比較高,另一類是WAP需求,這些頁面的改動不用發版,效率會更高。

我們說前者,第一我們會發小渠道的版本測試,比如特別小的應用市場,我們先放上去,跟老版本比比,看看效果怎麼樣。如果沒有大問題,因為這種小流量你是測不出來精確改變的,你保證不要出錯。如果說波動正負1之間,這個東西可能有用,我們現在大流量的試一下。


大渠道發版A/B測,像360助手我們統一發一版,我們通過客戶端自己的代碼來調整。從應用市場提交同一個版本,用戶下載之後,通過遠程控制,讓每個人看到的界面是不一樣的。

這邊有一個典型的例子,其實現在視頻推薦是有兩種界面。一種是有贊有踩有評論,另一種我們更強調視頻的PC作者,我們希望給他導更多的流量,刺激他的訂閱。


我們對比這兩種哪個效果更好,這些都是客戶端實現的,遠程一鍵可以讓這些用戶全部從左邊換到右邊。這個是成本比較高的,因為相當於客戶端要實現不同的素材,不同的代碼。會影響你的下載和轉化率,因為流量還是比較敏感的。一個11兆的東西和19兆的東西,轉化率會非常不一樣。

我們盡量用下面這個方法:直接去改WAP頁面,比如頭條的詳情頁,你點一篇文章進去了,下面評論是用客戶端原生實現的,中間文章那一段只是一個頁面而已,你可以靈活在裡面調樣式。

這種改進比較簡單了。讓用戶到功能入口,看到的頁面是不一樣的。


有了實驗的結論,這個頁面改動很好,我們切入到全流量,讓所有的用戶都能看到這個頁面。

我們總結一下WAP頁的優勢和劣勢,優勢是開發試錯成本低,比發版簡單的多,很好改,一旦發現問題,直接把頁面換掉就好了。劣勢也很簡單,流暢度稍差,H5大家一直在說,但實際上大家都明白它的性能和原生的還是有差距。


第二WAP和客戶端通信比較複雜,有些很高級的交互H5是做不了的。另外緩存失效後體驗不好。

這是我們典型的一個case,這應該是一個反面的例子。我們很早期還沒有大規模啟用客戶端的A/B測試,拍腦袋作出一個決策。頭條有一個頻道欄,除了推薦首頁之外,把科技、體育、視頻這些內容分門別類標籤,你想看科技新聞,到科技裡面去。

這些分門別類的標籤這裡面的內容也是個性化的,比如科技新聞,有的看O2O,有的看數碼產品。大家覺得有這個標籤,這個界面會比較亂,不好看。我們能不能做的更好看一點呢,我把這個東西去掉,下面有四個按鈕,「推薦」第一個按鈕,單獨用一個「發現」,這個不是當時最終原型,「發現」裡面放各種各樣的頻道。


如果你想隨便看看,就到第一個裡面看,今天就想特別看體育新聞,你給我推薦的體育新聞還不夠多,我就到第二個裡面看。結果教訓是非常慘痛的,用戶的留存和用戶頻道的DEU都下降非常多。這算一個產品事故。如果我們有足夠的能量做客戶端的A/B測試,我們可以把影響放到最小,就不會造成那麼大的損失,產品經理也不會走,這就是一個慘痛的教訓。


我們看一下交叉驗證在頭條是怎麼實現的。交叉驗證用的最多的場景涉及到人工運營的場景,在頭條剛才提到有些業務需要人工的評估。因為你文章如果分類分不準的話,可能就會影響你的推薦。有很多東西要人去審的,審核和評估都有一個問題,什麼問題呢?它依賴人。


大家印象中人比機器靠譜的,從大的面上來說,機器比人更靠譜,機器不求回報。在互聯網公司,審核和評估投入這塊肯定比工程師低很多,這就造成兩個後果,第一個就是審核人員敬業或者他的能力上可能跟工程師相比,他會有一定的差距,這是客觀存在的。因為我們的人力成本也比較低。

第二個就是他的流動性可能比較大,另外標準經常變來變去。我們一定要用機器去監控人的工作怎麼樣,需要有一個預警。這塊我們需要引入一個雙盲的交叉驗證,幫助我們去看這些運營同學他們工作的穩定性怎麼樣,同時去激勵不斷提升自己的判斷力,得到機器更好的評估。


最後再強調一下,為什麼創業者運用這個數據思維是如此重要,張一鳴說,初創公司產品的核心競爭力是一個乘積能力,產品核心競爭力=拉新能力×留存能力×變現能力。數據思維就是可以幫助團隊把每一項能力發揮到極致,增加了生存下來的概率。


A/B Test


做了快四年內容推薦演算法的偽內幕人士路過回答一個:

1. 各大做內容推薦的公司關注的最核心的指標是用戶時長,對就是每個用戶每天在App里花費的時間。記得一兩年前一篇對頭條高層(也許是張一鳴,記不清了)的訪談裡面提到頭條的競爭對手不僅僅是互聯網公司,更多的是對傳統媒體甚至娛樂行業的挑戰。一個著名的理論是用戶每天花費在資訊獲取/娛樂消遣上的時間總和往往是固定的,那麼個性化內容的發展註定和傳統娛樂行業是一個zero-sum game,自然搶奪用戶時長成為了最核心的目標。當然就具體來講,用戶時長與用戶體驗/用戶留存的關係是有研究分析的,具體可以看Beyond Clicks: Dwell Time for Personalization。

2. 當然時長的問題也有,例如受客觀影響波動較大,不同產品場景之間難以橫向對比,機器學習問題裡面regression的優化相比classification沒有那麼直觀等等。那麼點擊自然是一個更簡單清晰的優化和評估指標。CTR是一個簡單有效的指標,同時也是機器學習模型最好優化的目標,一個對於點擊/不點擊作為二分類的logistic regression就是對CTR直接擬合。但CTR有它的局限性,除開前面有回答提到的低俗黃色標題黨之類的問題,一個最直接的例子是 「少量超重度用戶(極多click)+ 大量不活躍用戶(幾乎不click)」 和 「一群中度活躍用戶(click數中等)」 最終體現出來的統計CTR可能是相同的,然後後者對於整個推薦系統的健康程度自然是要遠遠優於前者(不活躍的用戶很可能流失),因此不加干預的單純優化CTR往往會導致推薦系統陷入過擬合的困境。因此一個折衷的指標是關注用戶平均表現,例如對每個用戶計算CTR之後再全局平均,或者直接計算總點擊/總用戶數。

3. 除此之外一個經常被提到的指標是多樣性,多樣性分兩方面,一方面指的是消費側,對用戶來講在個性化的同時需要避免過快收斂(例如點了一篇王寶強離婚之後滿屏都是王寶強的新聞),而且需要保留對用戶新興趣的探索可能。另一方面則是供給側,需要讓展示數盡量分配給更多的文章,這對於一個UGC為主的內容平台的健康生態來講至關重要:如果某類文章依靠標題黨,擦邊球,蹭熱點長期佔據了80%的pv的話,那麼對於做深度內容的自媒體的積極性可能是很大的打擊。


利益無關,本人不在頭條工作。。。


如果不知道一個特定產品做個性化推薦的目的是什麼,那很難制定合適的評價指標。

亞馬遜做個性化推薦是為了促進銷售額。一級指標是被推薦產品的購買轉化率-二級指標是被推薦產品的收藏率,ctr,單品頁面瀏覽時長等

google的serp的排序就是相關性排序。確定是否相關的依據是,考察的是幾個綜合指標:通過幾次搜索、翻頁、點擊能夠結束搜索行為進入目標頁面,還有在目標頁面的訪問時長,跳出率等。

NetFlix的推薦的目標是推薦給用戶想看的內容。它考察的核心指標是用戶對該電影/電視劇的打分。netflix曾經懸賞100萬來獲得更好的推薦演算法,考察方法是通過歷史數據預測特定用戶對特定內容的評分,然後過一段時間(比如一年)之後看預測評分跟實際上的用戶評分的差距。

回到今日頭條。作為一款資訊類產品推薦用戶感興趣的內容,似乎是個性化推薦的主要目標之一。那樣,ctr和閱讀時長必然是關鍵考察指標。這些指標要放在時間維度上看,不能單看絕對值,還要關注變化。


首先,你的明白頭條的演算法推薦原理:

1、傳統媒體怎麼推薦的?
沒個受眾看到相同的,順序是一致的,數量也是有限的。
內容在這裡指的是狹義的內容。

這種傳統的方式,局限性和明顯,受眾只能看到所有人關注的內容,看到的新聞量是有限的。對於作者端來說,大部分作者很難被推薦,而且只有新聞類會被推薦。

這種新聞模式運行了很長時間。

2、頭條的推薦
智能引擎。
解決了上述的傳統的問題。對於用戶的停留時長有極大幫助。也被業界認可為更先進的模式。

對於內容創作者,不再局限在新聞,可以是范諮詢。不用趕時間,可以隨時發布。
平台會希望內容越多越好,所有內容都能找到他的讀者,頭條不會像其他媒介那樣做做樣子來吸引作者。


【節選自網友整理的《今日頭條產品經理解讀演算法推薦原理解讀》】
圖文詳細原文見:
http://note.youdao.com/yws/public/redirect/share?id=43aa778bef1fab276da7ffd8815ac91atype=false


數據層面,是非常明確的。
列表流的人均閱讀數量、用戶在推薦流的使用時長、點擊率,這些是推薦的關鍵性指標。
這些指標是產品的核心指標,說也沒啥意思。

搜索力求覆蓋全、時效高、相關性好。純搜索結果的數據分析也比較簡單,選取樣本率較高的query,然後從相關性、時效性以及滿意程度三個指標做分析就好了。

個性化推薦內容的緯度比搜索更麻煩點。

1. 用戶層面區分:
你需要把用戶按照用戶模型成熟程度做一次區分:冷啟動用戶、發展期用戶、成熟期用戶;
針對不同階段的用戶,用不同的評價指標進行分析。就像query針對搜索結果一樣,不同階段的用戶集的推薦結果,會形成一個聚合指標。

2. 主動行為影響:
推薦系統中,會有很多指標會影響到用戶的個性化流:比如主動檢索、比如頻道切換、比如點選『不感興趣』等...

需要評估主動行為下,對於原有用戶模型的影響,影響程度如何。

3. 被動用戶模型構建
被動的用戶模型,往往是CTR的效果,CTR作用在用戶模型建構上,這種影響的分數力度的改變等等。

——————————————
人在策略調優評估上的作用,主要是變更相關性的評估(打散性分析)、策略準確性的評估(主被動行為對模型的影響力度)和推薦建庫遴選出結果的優質性評估。

實際上,不管是搜索還是推薦,都會嘗試A/B test實驗,分出小流量用戶進行策略評估,如果策略有正向影響,那麼可以認為這個可以推而廣之。
——————————————

以上....同時慶幸下自己從策略端跳坑到前端,從每天看數據調效果到現在每天畫圖整交互。


1.用戶滿意度。

用戶作為推薦系統的最重要參與者,其滿意度是評測推薦系統的重要指標。但是用戶滿意度沒有辦法離線計算,只能通過用戶調查或者在線實驗獲得。

在線系統中,用戶滿意度主要通過一些對用戶行為的統計獲得。比如電子商務網站上,如果用戶購買了推薦的商品,則表示他們在一定程度上滿意(所以我們可以用購買率肚量用戶滿意度)。此外,有些網站通過設計一些用戶反饋界面手機用戶滿意度(比如Hulu和豆瓣電台會有對推薦結果滿意與否的按鈕)通過統計按鈕的點擊情況可以度量滿意度。

更一般的情況下,我們可以用點擊率、用戶停留時間和轉化率等指標度量用戶的滿意度。

2.預測準確度

預測準確度度量一個推薦系統或者推薦演算法預測用戶行為的能力。這個指標是最重要的推薦系統離線評測指標,從推薦系統誕生的那一天起,幾乎99%與推薦相關的論文,都在討論這個指標。這主要是因為該指標可以通過離線實驗計算。

在計算該指標時,需要有一個離線數據集,包含用戶的歷史行為記錄。然後,將該數據集通過實踐分廠訓練集和測試集。最後通過選鏈接上簡歷用戶的行為和興趣模型預測用戶在測試集上的行為,並計算預測行為和測試集上世紀行為的重合度作為預測準確率。

TopN推薦

網站在提供推薦服務時,一般是給用戶一個個性化的推薦列表,這種推薦叫做TopN推薦。TopN推薦的預測準確率一般是通過準確率(precision)/召回率(recall)度量。

有的時候,為了全面評測TopN推薦的準確率和召回率,一般會選擇不同的推薦列表長度N,計算一組準確率/召回率,然後畫出準確率/召回率曲線(precision/recall curve)。

3.覆蓋率

覆蓋率(coverage)描述一個推薦系統對物品長尾的發掘能力。覆蓋率有不同的定義方法,最簡單的定義為推薦系統能夠推薦出來的物品佔總物品集合的比例。

覆蓋率是一個內容提供商會關心的指標。覆蓋率為100%的推薦系統可以將每個物品都推薦給至少一個用戶。此外,從上面的定義也可以看到,熱門排行榜的推薦覆蓋率是很低的,它志輝推薦那些熱門的物品,這物品在中物品中占的比例很小。一個號的推薦系統不僅需要有比較高的用戶滿意度,也要有較高的覆蓋率。

這種定義過於粗獷。覆蓋率為100%的系統可以有無數的物品流行度分布。為了更細緻的描述推薦系統發覺長尾的能力,需要統計推薦列表中不同物品出現次數的分布。如果所有的物品都出現在推薦列表中,且出現的次數差不多,那麼推薦系統發覺腸胃的能力就很好。因此,可以通過研究物品在推薦列表中出現次數的分布,描述推薦系統挖掘長尾的能力。如果這個分布比較平,說明推薦系統的覆蓋率較高,如果這個分布較陡峭,說明推薦系統的覆蓋率較低。

在資訊理論和經濟學中有兩個著名的指標可用來定義覆蓋率。

第一個是信息熵,第二個是基尼係數(Gini Index)。

基尼係數,首先我們將物品按照熱門程度從低到高排列,黑色曲線表示嘴部熱門的x%物品的總流行度占系統的比例y%。這條曲線肯定是在y=x的曲線之下,而且和y=x曲線相交在(0,0)和(1,1)。 令SA是A的面積,SB是B的面積,那麼基尼係數的形象定義就是SA/(SA+SB),定定義可知,基尼係數屬於去見[0,1]。 如果系統的流行度很平均,那麼SA就會很小,從而基尼係數就會很小。如果系統物品流行度分配很不均勻,那麼SA就會很大,從而基尼係數也會很大。

社會學領域有一個著名的馬太效應,即所謂的強者更強,弱者更弱的效應。如果一個系統會增加熱門物品和非熱門物品的劉定都差距,讓熱門的更熱門,不熱門的更不熱門,那麼這個系統就有馬太效應。推薦系統是否具有馬太效應呢?推薦系統的初衷希望消除馬太效應,是的各種物品都能被展示給對他們感興趣的某一類人群。(但是主流的推薦演算法如系統過濾是具有馬太效應的)。評測推薦系統是否有馬太效應的簡單辦法就是使用基尼係數。如果G1是從出事用戶行為中計算出的物品流行度的基尼係數,G2是從推薦列表中計算出的物品的基尼係數,如果G2&>G1那麼就說明推薦演算法具有基尼係數。

4.多樣性

用戶的興趣但是廣泛的,在一個視頻網站中,用戶可能極喜歡看《貓和老鼠》一類的動畫片,也喜歡看成龍的動作片。那麼為了滿足用戶廣泛的興趣,推薦列表需要能夠覆蓋用戶不同的興趣領域,即推薦結果需要具有多樣性。多樣性推薦列表的好處用一句俗話表述就是「不在一棵樹上屌弔死」。儘管用戶的興趣在較長的時間跨度中是不一樣的,但具體到用戶訪問推薦系統的某一刻,其興趣往往是單一的。如果推薦列表比較多樣,覆蓋了用戶絕大多數的興趣點,那麼就會增加用戶找到感興趣物品的概率。因此給用戶推薦列表也需要滿足用戶廣泛的興趣,即具有多樣性。

5.新穎性

新穎的推薦是值得給用戶推薦以前沒聽說過的物品。在一個網站中實現新穎性的最簡單辦法就是把那些用戶之前在網站中堆砌有過行為的物品從推薦列表中過濾掉。比如在一個視頻網站中,新穎的推薦不應該給用戶推薦那些他們已經看過、打分或者瀏覽過的視頻。但是有些視頻可能是用戶在別的網站看過,或者在電視上看過,因此僅僅過濾掉本網站中用戶有過行為的物品還不能完全實現新穎性。

評測新穎性的最簡單的辦法是利用推薦結果的平均流行度,因為越不熱門的物品越有可能讓用戶覺得新穎。因此,如果推薦結果中物品的平均熱門程度較低,那麼多推薦結果就有可能有比較高的新穎性。

但是,用推薦結果的平均流行度來度量新穎性比較粗略,因為不同的用戶不知道的東西是不同的。因此要準確的統計新穎性,還是需要做用戶調查。

通過系統精度來提高過養性和新穎性是很容易的,而困難的是如何在不犧牲精度的情況下提高多樣性和新穎性。

6.驚喜度

驚喜度(serendipity)是最近這幾年推薦系統最熱門的話題。驚喜度跟新穎性有什麼區別呢。這裡討論的新穎度作為推薦指標在意義上的區別,而不是這兩個詞在中文中的含義。

假設一名用戶喜歡周星馳的電影,然後我們給他推薦《臨歧》的電影,而用戶不知道這不電影,那麼可以說這個推薦具有新穎性。但是這個推薦沒有驚喜度。如果我們給用戶推薦張藝謀的《紅高粱》,假設用戶沒有看過這部電影,看完之後覺得這部電影很不錯,那麼可以說這個推薦是讓用戶驚喜的。

也就是說,如果推薦結果和用戶的歷史興趣不相似,但卻讓用戶覺得滿意,那麼就可以說推薦結果的驚喜度很高,而推薦的新穎性僅僅取決於用戶是否聽說過這個推薦結果。

定義驚喜度首先需要定義推薦結果和用戶歷史上喜歡的物品的相似度,其次需要定義用戶對推薦結果的滿意度(用戶滿意度可以通過問卷調查或者在線實驗獲得,而推薦結果和用戶歷史上喜歡的物品的相似度一般可以用內容相似度定義)。提高推薦驚喜度需要提高推薦結果的用戶滿意度,同事降低推薦結果和用戶歷史興趣的相似度。

7.信任度

對與基於機器學習的自動推薦系統,存在信任度(trust)的問題。如果用戶信任推薦系統,那麼就會增加用戶和推薦系統的交互。

度量推薦系統的信任度只能通過問卷調查的方式,詢問用戶是否信任推薦系統的推薦結果。

提高推薦系統的信任度主要有兩個方法。首先需要增加推薦系統的透明度(transparency),而增加推薦系統透明度的主要辦法是提供推薦解釋。只有讓用戶了解推薦系統的運行機制,才會提高用戶對推薦系統的信任度。其次是考慮用戶的社交網路信息,利用用戶好友信息給用戶做推薦,並且用好友進行推薦解釋。這是因為用戶對他們的好友一般都比較信任,因此如果推薦的商品是好友購買過的,那麼他們對推薦結果就會比較信任。

8.實時性

很多網站中,因為物品(新聞、微博等)具有很強的時效性,所以需要在物品還具有時效性的時候就講他們推薦給用戶。

推薦系統的實時性包括兩個方面。首先,推薦系統需要實時的更新推薦列表來滿足用戶新的行為變化。如用戶新買了iphone,應該給用戶推薦相關配件。 其次,推薦系統需要能夠將新加入系統的物品推薦給用戶。這主要考研了推薦系統處理物品冷啟動的能力。

對與新物品的推薦能力,我們可以利用用戶推薦列表中有多大比例的物品是當天新加的來評測。

9.魯棒性

推薦系統也會遇到作弊問題,而健壯性(robust,魯棒性)指標衡量了一個推薦系統抗擊作弊的能力。

演算法魯棒性的測試主要利用模擬攻擊。首先,給定一個數據集和一個演算法,可以用這個演算法給這個數據集中的用戶生成推薦列表。然後,用常用的攻擊方法想數據集中注入噪音數據,然後利用演算法在注入噪音後的數據集上再次給用戶生成推薦列表。最後通過比較攻擊前後的推薦列表的相似度來評測演算法的魯棒性。

在實際系統中,提高系統的魯棒性,除了選擇健壯性高的演算法,還有以下方法。

設計推薦系統時,盡量使用代價比較高的用戶行為。比如如果偶用戶的購買行為和用戶的瀏覽行為,那麼應該主要使用該用戶的購買行為。

在使用數據前,進行攻擊監測,從而對數據進行清理。

手打整理自《推薦系統實踐》 項亮 人民郵電出版社


不外乎這五種衡量指標:
1.用戶滿意度,但是這個指標只能通過用戶調查或在線實驗獲得(定性)。
2.預測的準確度,具體實現方法:將離線的數據集分成訓練集和測試集,在訓練集上建立用戶行為和興趣模型,預測用戶在測試集上的行為,並計算預測行為和測試集上實際行為之間的的重合度。(定量)
3.覆蓋率,顧名思義就是對長尾內容的發覺能力,說白了就是推薦系統推薦出來的內容佔總體內容的比例。
4.多樣性,我喜歡『海瑟薇』,你不能自始至終給我推薦她吧。時不時要換個口味,例如宋仲基也很不錯
5.新穎性,簡單的說就是給用戶推薦他們以前沒聽說過的內容,例如我一般看娛樂欄目,你推一個『原來麻辣燙是鄧爺爺造就的』也很不錯啊。一般的處理方式是將那些用戶之前在APP對其有過行為的內容從推薦列表中過濾掉。

實現方法:離線試驗、用戶調查、A/Btest


答:個性化推薦的原理大家都略懂,無非是依靠大數據對用戶進行綜合分析預估,利用智能演算法之類的識別用戶閱讀興趣,從而對用戶進行精準性文章推薦。

無非是圍繞下面四點來進行的。

第一點:文章熱度

文章熱度,包括了文章的閱讀量、互動量(點贊、轉發、分享、收藏、評論)。

第二點:文章閱讀指標

文章閱讀指標,則是以CTR(閱讀曝光度和點擊閱讀數)為主要參照數據,文章首頁面出現次數和被點擊閱讀次數的比例高低。

第三點:文章性質

文章性質如涉及到社會重大事件等,平台往往會自動推薦相關文章。

第四點:用戶閱讀模型

用戶在平台發生一系列閱讀行為,個性化推薦平台就會收集記錄用戶的閱讀內容、文章類型、閱讀時長、閱讀時間段、用戶使用環境等諸多閱讀系列行為。根據用戶大數據,合理科學的演算法運算,大致估測出用戶閱讀興趣。

實際上,這樣的推薦演算法已經非常成熟了。但一般來說,大多數還是停留在前3點,第4點沒有海量數據和合理建模的話,並不容易實現。

但一般來說,符合前3點的內容,大多數都是滿足受眾的獵奇需求的。說句不好聽的,這種文章大多數質量並不高。不信的話,可以打開你的APP看看。質量的高低本來就與受眾面寬窄沒有必然的關係,甚至如果放任內容的「肆意生長」,不好意思,在這種情況下的個性化推薦,呈現在首頁的內容大多會是「黃賭毒」。所以我的觀點是,個性化演算法解決不了文章質量的問題,它只能解決推送是否精準的問題。

而對於文章的質量問題,最好的方式是在源頭進行控制。現在看薦就是這麼做的。一方面,引入自媒體內容,通過自媒體認證號推薦。另一方面,通過網友推薦、小編弱審核(主要是過濾廣告)的方式,從「推薦」行為本身,規避肆意轉載和抓取的垃圾信息。同時,看小薦對推薦到平台的優質內容進行精選推薦,確保優質內容更容易被更多用戶看到,基本上能夠對文章質量做一個把關,再通過個性化推薦把合適的內容推送給合適的用戶。

個人認為,目前這個模式,是解決單純依靠機器造成同質信息轟炸的問題,同時閱讀環境會更純粹一些,體驗更良好一些。


我想用一張矩陣圖來說明一下我認為好的評價標準。

  1. 這個矩陣描述的是一條內容所屬的一個粒度很小的分類
  2. 矩陣分為兩個維度,一個是用戶過去對這個分類的態度,另一個是用戶此次對這個分類的態度
  3. 態度分為喜歡與不喜歡:點擊閱讀視為喜歡,不點擊或者標註「不再推薦」視為不喜歡
  4. 通過這兩個維度,我們可以將用戶對一個具體消息的態度分為四個象限,如下圖所示

  • 象限1是個性化推薦最追求的內容,即推送用戶感興趣的內容
  • 象限2與象限3是系統的試探內容,由於不知道用戶偏好,需要通過一定量的樣本來試錯
  • 象限4則體現了用戶興趣的不確定性

通過這四個象限我可以定義這樣幾個評價指標

指標1:用戶喜愛率
定義:(象限1+象限2)/總體
這個指標用來衡量用戶對於信息流的喜愛程度,可以說是衡量一個個性化推薦系統的最基本的指標了。一般來說都認為這個指標越高約好,但是由於象限2的不確定性,一般來說要提高用戶喜愛率就會造成象限1所佔比例無限增大,這就會導致用戶看到的是一個角度很窄的信息流,從體驗的角度會使得內容同質化現象嚴重。
總結來說,用戶喜愛率是一個短期指標


指標2:新鮮度
定義:(象限2+象限3)/總體
這就引出了第二個指標:新鮮度。
這個指標是用來衡量一個信息流中有多少用戶之前沒有看到的內容,一般來說用戶剛開始使用的時候新鮮度最高,隨著使用時間增加新鮮度不斷降低。之前說過,新鮮度降低不是目的,而是結果:由於追求喜愛率的提升,所以需要降低象限2和象限3的比例,最後導致指標下降。因此需要系統將新鮮度控制在一個合理的範圍之內。
總結來說,新鮮度是一個長期指標


指標3:機器學習能力
定義: 象限2 /(象限2+象限3)
這就產生了一個矛盾:用戶喜愛率在短期直接關乎者信息流的點擊量,新鮮度又會在長期影響用戶進入應用的時長與頻次。那麼同時保持兩個指標的方法就是提升機器學習能力,即針對用戶未表態內容的預判能力。
如果機器能夠非常準確地預測用戶的口味,那麼就可以在保證喜愛率的前提下提升新鮮度指標,也就可以使得信息流的短期與長期吸引力都非常可觀。
需要指出的是,這裡面說的預測口味可不是簡單的用戶喜歡「籃球」就不斷推送籃球信息,而是用戶喜歡「籃球」,就嘗試給用戶推送「籃球鞋」、「啤酒」、「戰術」等弱相關內容。
對這種弱相關口味理解得越深刻,越準確,機器學習能力也就越強大。


小結一下:
指標1和指標2在某種程度上可以由產品控制的指標,也是直接影響用戶體驗的指標。
而指標3則是需要利用機器學習能力來提升的,可以同時提升指標1和指標2的關鍵能力。


兩個參數指標,準確率+召回率


先簡單說一下,以後什麼時候看到了,再填坑
1. 描述裡面也提到了,這個問題跟另外一個問題挺像,「怎麼衡量一個搜索引擎的好壞」
發散一下,就會有一些角度去評價(對,某度可以做到某個或某些關鍵詞的結果比 Google 好,所以,拿這個來評判是不完全 OK 的)

2. 個性化推薦或者推薦,是一個手段,那評判這個手段的好壞,當然是從想解決的問題來考量的,那這就會有不同的場景,不同用戶,對不同內容的反應,這本身就是個概率問題,懂吧
(仔細去了解頭條的推薦,是這幾個都涵蓋的)

3. 結果不好的時候,也許不是單一手段的問題喲(當然,這個手段在這裡可以指個性化推薦),如果歸因出現偏差,會很糟糕的(能做到這點的人或者產品汪少之又少)

4. 「理論上,推薦的質量越高,點擊率就應該越高。」這個細想是有問題的,因為評判推薦質量的高低是拿點擊率的高低來判斷的

5. 在了解頭條的推薦效果的時候,建議放在一個完整的鏈條下考慮,你會發現頭條在其他方面相比較門戶的優勢,比個性化推薦可能還要大,我只說這麼多,有想了解更多的,可以留言交流


關於推薦效果的評估指標其實有很多,有點擊曝光比、轉化比、物品覆蓋度等等。而測試也可以分為兩部分來看,離線測試和在線測試。


不說學術上的,單就實際工程來說,我們關注的首要目標肯定還是點擊曝光比,即推薦列表的展示人數和展示後有點擊的人數比。並且實話說,推薦系統的離線測試並不好做,因為這不像分類演算法可以很方便的用正負樣本去train和test,只能是從訓練樣本里隨機刪掉一些節點 然後看這些被刪掉的節點能否再被推薦出來。這隻能說是一種近似的方法,因為推薦結果被展示到用戶面前的過程中,有很多很多因素可能會影響到這個結果。這裡我們就不展開說了,有興趣的可以線下討論。線上測試的話其實就是切流量做abtest或者bucket test了。


1、現在有很多可以根據用戶的第三方賬號對用戶進行分析的,不是盲目推薦
2、與其說是推薦,不如說是訂閱吧,既然都個性化了,都是用戶自己訂的


優化個性化推薦目的也是為提升產品的整體目標(留存率、日活、用戶使用時長),如果優化推薦能提升這些指標,那麼演算法就可以衡量了。

現實是,推薦演算法的優化和產品的整體目標往往沒有很直接的關係,或者說會有別的因素(活動、頁面改版)影響,而得不出結論。

那麼就需要一些中間指標來衡量推薦演算法了。

舉個例子:

推薦演算法==給用戶推薦「感興趣」的「高質量」內容。

感興趣可以通過推薦文章的點擊率來衡量。

高質量可以通過用戶和文章的互動(閱讀完成、收藏、分享、點贊、點踩、評論、關注作者等)來衡量。

最後別忘了看推薦文章的點擊率和互動的提升,能不能提升產品的最終目標?那麼基於這些目標基本就可以衡量演算法的優化了。

但是,推薦演算法不僅僅是「給用戶推薦感興趣的高質量內容」,因為用戶需求不僅僅是「高質量」和「感興趣」,用戶還有別的需求。

總之,推薦演算法服務於用戶需求。


推薦閱讀:

TAG:產品經理 | 數據挖掘 | 推薦系統 | 個性化推薦 | 今日頭條應用 |