好的推薦系統,不僅能預測用戶的行為,還能幫助用戶發現他們可能感興趣但不容易發現的東西。
最近看了《推薦系統實踐》,深感個性化推薦在當下的互聯網產品中的地位,個性化推薦是有效【提高用戶粘度】的方法,從而【鼓勵用戶產生更多的行為】。但是對于不同階段的產品、不同類型的產品有特定的推薦算法,下面我就簡單介紹一下。
對于一個全新的產品想做個性化,面對缺少用戶數據積累這樣的一個情況,就不得不考慮推薦系統的冷啟動問題(cold start)。雖說數據稀缺,但是仍然有一些方法能幫助產品經理獲得一些數據,這也是我之前沒有考慮到的。解決方案有如下幾種:
1.直接推薦熱門排行榜:這在某種意義上是群體性的個性化,相比隨機推薦效果要好
2.利用注冊信息:很重要!!!性別、年齡、地區能極大地縮小推薦范圍
3.提供社交網絡賬號登錄:很多產品提供第三方社交賬號不僅僅是為了方便,更重要的是獲得你的社交數據,從而給你推薦你朋友喜歡過的內容
4.登錄時進行興趣詢問:比如在初次使用詢問喜歡的類型以及對應類型下的評分
5.新物品推薦:對于新加入的物品,基于物品內容信息的推薦更加可靠,一段時間后可以利用UserCF和 ItemCF(協同過濾)
6.找專家標注:一開始沒有用戶行為數據也沒有物品內容信息,找專家對維度進行標注然后得到相似度列表
解決了冷啟動的問題之后,用戶在我們的產品上積累了一定的數據,那么一般會從以下四個維度進行推薦:【基于用戶行為數據的推薦】、【基于用戶標簽數據的推薦】、【基于上下文信息的推薦】、【基于社交網絡的推薦】。
1.基于用戶行為數據的推薦應用比較廣泛,適合各種各樣的網站、APP。
1.基于用戶的協同過濾(UserCF):物以類聚,人以群分。如果你們喜歡的東西重合度很高,那么TA喜歡過的東西就很有可能被你喜歡。比如新浪微博推薦好友時,首先會去找那些和你【共同關注數】高的好友中你未關注的人。
2.基于物品的協同過濾(ItemCF):與UserCF類似,只不過是基于物品相似表,物品相似表可以基于物品內容構建,也可以基于該物品被類似的一群人喜歡過作為相似度的依據來構建。
3.隱語義模型:如果你喜歡某樣東西,那么先去找這樣東西屬于哪個類,推薦給你這個類下的其他東西即可。
4.基于圖的模型:用戶u對物品i進行了操作,就可以表示為(u,i),這樣一來就可以構成一個用戶-物品的二部圖,通過考慮兩個頂點之間的路徑數】、【兩個頂點之間路徑的長度】、【兩個頂點之間路徑經過的頂點】對用戶u作一個TopN的用戶序列排名。
2.基于用戶標簽的推薦:這樣的推薦形式需要用戶給內容打標簽,如最早的書簽社交網站Delicious,現在的文藝青年社區豆瓣也有大量讓你選擇你看過的電影、圖書并且鼓勵你打標簽,這種基于分眾分類的方式能匯聚集體智慧幫助用戶找到他喜歡的內容。
3.基于上下文的推薦:就是要考慮時間、位置、心情等因素,比如對于電商網站來說夏天和冬天推薦的商品應該不同,對于音樂類軟件來說早晨和晚上推薦的歌曲應該不同,團購網站來說,應該基于地理位置推薦附近的商家。
4.基于社交網絡關系的推薦:這類推薦適合有豐富社交關系的網站,如新浪微博、facebook、instagram。
1.基于領域的社會化推薦算法:衡量用戶u和用戶v的熟悉程度和興趣相似度。
2.基于圖的社會化推薦算法:比如豆瓣就有群組,可以構成群組-用戶-內容的圖結構,再對內容進行排序
3.信息流推薦:比如在微博中我關注用戶很多,但并不是所有的言論我都感興趣,因此推薦系統應該對信息流進行排序。排序依據可以參考facebook的EdgeRank,其主要思路如下:Facebook的EdgeRank綜合考慮了每個會話的時間、長度與用戶興趣的相似度,它將其他用戶對當前用戶信息流中的會話產生過行為的行為稱為edge,一條會話的權重定義為∑(Edges e)UeWeDe,結論就是如果一個會話被你熟悉的好友最近產生過重要的行為,它就會有比較高的權重。但這個EdgeRank算法只考慮了社會化推薦,對內容本身沒有考慮,因此加入會話長度,話題相關性和用戶熟悉程度能有效提升算法的準確度。
算法構成了推薦系統的核心,除此之外應該將UI、日志系統都納入到整個推薦工作的考慮當中來,他們是互相配合和支持的。
總的來說就是這四類,可以結合自己產品的特點,有針對性的收集相關數據,如在注冊界面要求選擇個人基本信息、添加標簽或評價反饋機制,當然這樣的功能改動以不增加用戶負擔和不影響用戶體驗為前提,推薦系統是一個產品不可或缺的一部份,需要用系統和長遠的眼光重視這個部分。