標籤:

知乎首頁右側「你可能感興趣的人和話題」里「它和×很接近」使用了什麼演算法?

是人工編輯的還是有什麼演算法?


簡單說就是在基於Item的協同過濾(Collaborative Filtering)的框架中

用Latent Factor Model替換了原始item based cf中基於鄰域(neighborhood)的相似度計算方法.

上面這兩句扔出來, 我感覺不像人話......

換一種表述方法, 仍然感覺不像.....

1. 用戶喜歡什麼話題是知道的, 於是有用戶-&>喜歡的話題(User-&>Topic)關係數據

2. 利用LDA(Latent Dirichlet allocation)將每個話題映射到一個潛在話題層(Topic-&>Latent Topic). 而不是直接用User-&>Topic進行計算有幾個原因:

1) User-&>Topic的關係矩陣是非常稀疏的, 每個用戶只喜歡若干個Topic, 大部分Topic被很少的人喜歡, 或者根本沒有人關注過這些Topic.

2) 直接使用Topic數據是無法直接將, "梅西", "巴薩", "西甲"這些關聯話題建立起聯繫的, 一個喜歡"巴薩"的人, 從直接數據上, 可能無法體現出他喜歡"西甲"

3) 利用Topic-&>Latent Topic映射的方式, 可以從統計的角度解決部分語義關聯的問題, 同時可以控制Latent Topic的數量, 因為每個Topic都是有表意的問題和term的, 這些可以實現降維使數據變的稠密.

3. 利用每個話題的Latent Topic分布作為特徵, 可以得到和各個Topic最相似的其他Topic列表.

4. 根據User-&>Topic關係, 利用Topic相似度疊加, 找出目前不在User-&>Topic關係中, 但疊加相似度最高的Topic出來, 作為候選結果列表. 貢獻相似度最高的N個已知Topic作為推薦理由.

以上內容可以作為基於文本進行推薦的基礎通用框架, 比如新聞, 微博啊什麼的. 核心的效果差別在於 LDA的訓練上, 當然在相似度計算, 最終TopN結果計算上仍有很多值得注意的點.

基於item相似的推薦, 通常都是比較穩妥的做法, 高效/容易理解/覆蓋率可以控制到一個比較高的層面, 當然也不容易出現"驚喜"的效果.


這個是基於 @姚旭 同學通過LDA演算法為核心的一系列演算法為每個話題計算了一個興趣向量,兩個話題之間越像,那麼他們兩個向量的夾角就越小。

對於你提到的這個推薦理由,簡單地說,就是把和Node.js這個話題相似度大於某個閾值的話題推薦給你。


推薦閱讀:

狹隘的價值觀
知乎中贊的數量會影響你對回答的認可度嗎?
如何看待知乎在廣告區插入回答和評論?
4.2 線下活動通知~ @上海
怎麼看待知乎里一些人雖然給自己或者自己的產品了打廣告,但是卻提供了好的內容這個現象?

TAG:知乎 | 演算法 |