常用的推荐算法小结
轉載自? ?常用的推薦算法小結
推薦系統的必然
互聯網發展到現階段,信息已經不是匱乏,而是爆炸。所以良好的用戶體驗就是把用戶喜歡的,感興趣的從大量的數據中篩選出來,再呈現給用戶,實現千人千面的效果。
所以推薦系統的出現就是必然了,他可以推薦每個用戶感興趣的產品,同時也將每個產品呈現到感興趣的用戶面前。實現用戶和產品的雙贏。
推薦系統架構
一個常見的推薦系統架構一般如下圖:?
?
可以看到分為數據來源、推薦引擎和推薦交互三個方面。?
數據 60%,產品30%,算法10%,這是一個基本的共識
數據來源
將一個產品推薦給一個用戶。設計到的對象有兩個,產品和用戶。還有兩者的交互。所以數據源有三個方面。
- 產品數據:價格,標簽,類別等
- 用戶數據: 性別,年齡,年級等
- 交互數據:對產品的評價打分(構建評價模型)
評價模型,通過真實的用戶行為數據構建,包括對產品是否瀏覽,瀏覽時間,是否收藏,是否分享等等。通過這些指標構建評價模型。(相關性分析+回歸?)
推薦引擎
推薦引擎主要是推薦系統的算法,主要包括 基于人口統計學的推薦,基于內容的推薦,協同過濾三種。下文詳細分析。
另外現在推薦引擎都構建在搜索引擎的基礎上,貼一個推薦架構:?
?
這是基于Mahout 和 Elasticsearch 實現推薦系統?
更多見這里
用戶交互
將“推薦”理解為“推送”?
如果主動推送給用戶,很有可能會引起用戶反感,雖然在一定程度上會提升用戶活躍度。當然這個也可以通過算法去控制要不要主動推送,對于活躍度一直很低的可以主動推薦,甚至是通過發短信來推送,其他用戶則可以轉為被動。
當下無數的互聯網產品都有一個“發現”模塊,包括微信,Twiiter等大量產品。用戶有需求的時候,會主動的找“推薦”,避免被打攪。而對于推薦系統,也避免對用戶形成打擾,引起用戶反感。
參考這里
推薦算法
基于人口學的推薦
核心是基于用戶數據建模?
?
這是最為簡單的一種推薦算法,它只是簡單的根據系統用戶的基本信息發現用戶的相關程度,然后將相似用戶喜愛的其他物品推薦給當前用戶。
系統首先會根據用戶的屬性建模,比如用戶的年齡,性別,興趣等信息。根據這些特征計算用戶間的相似度。比如系統通過計算發現用戶A和C比較相似。就會把A喜歡的物品推薦給C。
- 優勢:?
a 不需要歷史數據,沒有冷啟動問題?
b 不依賴于物品的屬性,因此其他領域的問題都可無縫接入。 - 不足:?
算法比較粗糙,效果很難令人滿意,只適合簡單的推薦
推薦系統的「冷啟動」包含兩個層面:?
1. 用戶的冷啟動,應該是80%的「冷啟動」所描述的問題,新的用戶因為沒有在產品上留下行為數據,你自然無法得知他/她的喜好,從而做出靠譜的推薦。這時一般需要借助用戶的背景資料,或者引導性地讓用戶選擇,或者暫時用熱門啟動替代個性化推薦來解決,在線推薦系統可以做到在用戶產生行為數據后立馬更新推薦列表。?
2. 物品的冷啟動,主要適用于ItemBased的場景,即對一個物品推類似的物品,因為新物品還沒有用戶行為數據,自然也就沒有辦法通過協同過濾的方式進行推薦,這時一般會利用物品屬性的相關程度來解決。?
作者:ershou?
鏈接:https://www.zhihu.com/question/19668164/answer/39133343?
來源:知乎?
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
基于內容的推薦
核心是基于內容數據建模?
?
與上面的方法相類似,只不過這次的中心轉到了物品本身。使用物品本身的相似度而不是用戶的相似度。?
系統首先對物品(圖中舉電影的例子)的屬性進行建模,圖中用類型作為屬性。在實際應用中,只根據類型顯然過于粗糙,還需要考慮演員,導演等更多信息。通過相似度計算,發現電影A和C相似度較高,因為他們都屬于愛情類。系統還會發現用戶A喜歡電影A,由此得出結論,用戶A很可能對電影C也感興趣。于是將電影C推薦給A。
- 優勢:?
對用戶興趣可以很好的建模,并通過對物品屬性維度的增加,獲得更好的推薦精度 - 不足:?
a 物品的屬性有限,很難有效的得到更多數據?
b 物品相似度的衡量標準只考慮到了物品本身,有一定的片面性?
c 需要用戶的物品的歷史數據,有冷啟動的問題
協同過濾
核心是用戶交互數據建模?
基于協同過濾的推薦可以分為三個子類:基于用戶的推薦(User-based Recommendation),基于項目的推薦(Item-based Recommendation)和基于模型的推薦(Model-based Recommendation)。
基于用戶的協同過濾推薦
它的基本假設是,喜歡類似物品的用戶可能有相同或者相似的口味和偏好。根據所有用戶對物品或者信息的偏好,發現與當前用戶口味和偏好相似的“鄰居”用戶群,在一般的應用中是采用計算“K- 鄰居”的算法;然后,基于這 K 個鄰居的歷史偏好信息,為當前用戶進行推薦。?
?
假設用戶 A 喜歡物品 A,物品 C,?
用戶 B 喜歡物品 B,?
用戶 C 喜歡物品 A ,物品 C 和物品 D;?
從這些用戶的歷史喜好信息中,我們可以發現用戶 A 和用戶 C 的口味和偏好是比較類似的,同時用戶 C 還喜歡物品 D,那么我們可以推斷用戶 A 可能也喜歡物品 D,因此可以將物品 D 推薦給用戶 A。
基于用戶的協同過濾推薦機制和基于人口統計學的推薦機制都是計算用戶的相似度,并基于“鄰居”用戶群計算推薦,但它們所不同的是如何計算用戶的相似度,基于人口統計學的機制只考慮用戶本身的特征,而基于用戶的協同過濾機制是在用戶的歷史偏好的數據上計算用戶的相似度
基于項目的協同過濾推薦
基于項目的協同過濾推薦的基本原理也是類似的,只是說它使用所有用戶對物品或者信息的偏好,發現物品和物品之間的相似度,然后根據用戶的歷史偏好信息,將類似的物品推薦給用戶。?
?
假設用戶 A 喜歡物品 A 和物品 C,?
用戶 B 喜歡物品 A,物品 B 和物品 C,?
用戶 C 喜歡物品 A,?
從這些用戶的歷史喜好可以分析出物品 A 和物品 C 時比較類似的,喜歡物品 A 的人都喜歡物品 C,基于這個數據可以推斷用戶 C 很有可能也喜歡物品 C,所以系統會將物品 C 推薦給用戶 C。
與上面講的類似,基于項目的協同過濾推薦和基于內容的推薦其實都是基于物品相似度預測推薦,只是相似度計算的方法不一樣,前者是從用戶歷史的偏好推斷,而后者是基于物品本身的屬性特征信息。
基于模型的協同過濾推薦
基于模型的協同過濾推薦就是基于樣本的用戶喜好信息,訓練一個推薦模型,然后根據實時的用戶喜好的信息進行預測,計算推薦。
協同過濾小結
- 優點:?
a. 它不需要對物品或者用戶進行嚴格的建模,而且不要求物品的描述是機器可理解的,所以這種方法也是領域無關的。?
b. 這種方法計算出來的推薦是開放的,可以共用他人的經驗,很好的支持用戶發現潛在的興趣偏好 - 缺點:?
a. 方法的核心是基于歷史數據,所以對新物品和新用戶都有“冷啟動”的問題。?
b. 推薦的效果依賴于用戶歷史偏好數據的多少和準確性。?
c. 在大部分的實現中,用戶歷史偏好是用稀疏矩陣進行存儲的,而稀疏矩陣上的計算有些明顯的問題,包括可能少部分人的錯誤偏好會對推薦的準確度有很大的影響等等。?
d. 對于一些特殊品味的用戶不能給予很好的推薦。?
e. 由于以歷史數據為基礎,抓取和建模用戶的偏好后,很難修改或者根據用戶的使用演變,從而導致這個方法不夠靈活。
推薦算法小結
- 基于人口統計學或者內容的推薦?
僅僅考慮用戶或者內容本身的特征,并相相同特征形成一個集合。這樣,如果你選擇了集合中的一個,就像你推薦集合中的另一個。 - 基于協同過濾的推薦?
充分利用集體的智慧,即在大量的人群的行為和數據中收集答案,以幫助我們對整個人群得到統計意義上的結論。對象客觀上不一定一樣,但是主觀的行為相似,就可以產生推薦。?
完全基于用戶的行為習慣,即?
1)相似消費習慣的用戶,很可能消費相同的東西?(可能兩個消費習慣相同的用戶,年齡,性別都不一樣)?
2)相似消費習慣的產品,很可能同時被消費。(可能兩個相似消費習慣的產品種類,大小都不一樣)
推薦算法發展方向
1 需要考慮在保證推薦準確性的同時增加推薦的多樣性,使特殊喜好的用戶得到推薦?
2 需要考慮用戶對系統的實時反饋,更好的利用反饋數據強化推薦算法?
3 考慮時間,空間,任務等因素,來更好的完成推薦?
4冷啟動問題的解決思路這里
總結
- 上一篇: 张雪峰公司申请雪峰甄选商标 宇宙的尽头真
- 下一篇: 微软旗下领英将裁员668人 涉及工程、产