有哪些解決推薦系統中冷啟動的思路和方法?
比如在註冊階段,對於一個完全陌生的新用戶,如何應付冷啟動?
推薦系統冷啟動在不同的產品,不同的應用場景會有不同的做法,通用的做法其他的知友都已經有說明,即通過不同的維度獲取用戶的基本特徵,操作習慣,從而進行粗粒度的推薦,但確實說起來容易做起來難。因為在中國,只有幾家比較大的如騰訊,阿里,百度掌握著用戶的行為數據,小公司做起來有點知易行難的感覺,在這裡分別說說自己的一些思路和方法
- 利用用戶在其他地方已經沉澱的數據進行冷啟動。在騰訊等大公司的產品,確實是可以通過各大產品打通的日誌系統,提取用戶的行為特徵去確定用戶是個什麼樣的人。比如現在QQ音樂的猜你喜歡電台想要去猜測還沒有用過QQ音樂用戶的口味偏好,一大優勢在於可以利用其他騰訊平台的數據,比如在QQ空間關注了誰,在騰訊微博關注了誰,這些都可以作為推薦系統的冷啟動數據,甚至進一步,比如在騰訊視頻剛看了一部很火的動漫,如果在QQ音樂推薦了一首這個動漫的主題曲,你是否會覺得很驚喜呢?=P 所以,在這方面可以做的嘗試,就是獲取用戶在其他平台已有的數據。題主擔心的是一個初創網站或app用戶註冊前還沒有他的數據表現,不妨嘗試將註冊路徑改為用新浪/QQ/微信等社交平台登錄,一方面可以降低用戶註冊成本提高轉化率,一方面可以同時獲得用戶的社交信息,從而獲得推薦系統的冷啟動數據。舉個大家都應該知道的產品——「今日頭條」,號稱5秒鐘知道你的興趣偏好,其實也是在用戶登錄新浪等社交平台後,獲取用戶的關注列表,以及爬取用戶最近參與互動的feed(轉發/評論/贊)進行語義分析,從而獲取用戶的偏好。這種方法無論公司或平台大小,其實都可以嘗試,會比盲目的熱門推薦效果會好。
- 利用用戶的手機等興趣偏好進行冷啟動。Android手機開放度較高,因此對於各大廠商來說多了很多了解用戶的機會,就是——用戶除了安裝的應用之外,還安裝了其他什麼應用。舉個例子,當一個用戶安裝了美麗說,蘑菇街,辣媽幫,大姨媽等應用,是否就是基本判定該手機用戶是個女性,且更加可以細分的知道是在備孕還是少女,而安裝了rosi寫真,1024客戶端帶有屌絲氣質的應用則可以鎖定用戶是個屌絲,此時對於應用方來說,是一個非常珍貴的資源。比如一個新聞應用如今日頭條,拿到了這些用戶安裝應用的數據,用戶首次安裝就可以獲得相對精準的推薦,不明真相的用戶還會暗贊我靠這應用這麼符合我口味!目前讀取用戶安裝的應用不僅是APP應用商店的標配,新聞類,視頻類做數據推薦的應用也有一些開始讀取這塊的數據,這個對於冷啟動是相當有幫助的。當然,這種數據也要為用戶做好保密和數據加密。另外如豌豆莢鎖屏,360衛士app更是做了檢測用戶每天開啟應用的頻率等等,這種相比只了解用戶安裝什麼應用,對用戶的近期行為畫像會更為精準。
- 製造選項,讓用戶選擇自己感興趣的點後,即時生成粗粒度的推薦。相對前面兩個來說,路徑不夠自然,用戶體驗相對較差,但是給予足夠好的設計,還是能吸引用戶去選擇自己感興趣的點,提升轉化率。比如網易雲音樂的私人FM,由於沒有其他用戶行為數據,做口味測試則變得很重要了。而簡單幽默的文案引導加上簡單的幾個選擇,也不失為一個好的冷啟動方法。
對於依賴於用戶數據的演算法, 冷啟動都需要產品來做配合. 1. 引導用戶把自己的一些屬性表達出來 比如: 回答一系列問題, 選擇喜歡的item, 添加屬性標籤, 寫Bio等等 這類做法會增加新用戶使用產品的成本, 太複雜的產品還可能嚇跑新用戶, 一般這類做法能誘導的用戶數據都比較有限. 2. 利用現有的開放數據平台 比如: facebook, twitter, google或者新浪微博,msn這些平台, 通過用戶授權的歷史數據, 來識別一些用戶的屬性. 3. 曲線救國 做一款讓用戶更願意或者更容易表現個人偏好的產品, 先讓用戶玩一段時間. 再引導用戶進入其他產品.........
可以用幾個最能辨別用戶興趣的item讓剛註冊的用戶打分,這樣可以獲得最開始的數據。關於如何更準確地挑選這種item,可以參照Yahuda Koren在wsdm11上的文章http://research.yahoo.com/pub/3502。
推薦系統的一大問題就是所謂的冷啟動問題,在對用戶一無所知的情況下,如何進行最有效的推薦。
最簡單的方法是不需要用戶操作,由推薦系統「揣測」用戶的喜好。系統離線自動生成分類熱門結果以及挖掘各種各樣的榜單作為候選集,然後綜合考慮推薦結果的新穎度、多樣性、新鮮度等等多個維度,定製一個通用的推薦候選集。最後實時捕捉用戶的點擊反饋行為數據,不斷迭代,逐漸生成符合用戶個性化口味的結果。這種方法實現簡單,但是對離線系統的時效性要求比較高。
另外一種方法需要對用戶口味進行預採集,這種方法的實現方法也多種多樣,和實際的業務需求直接相關。通常做法都是在新用戶進入系統時,讓用戶選擇或者填寫一些信息,如偏好的類別、標籤等,基於這些信息可以進行基於內容的推薦。也可以給出一些可能感興趣的物品列表,從而可以使用基於物品的協同過濾演算法。在社會化推薦系統中,可以讓用戶開放許可權訪問其通訊錄,這時候基於用戶的協同過濾演算法就可以派上用場。以上方法的主題思想是設置一些誘導用戶表徵其偏好的場景。這種方法相對來說推薦的結果更有針對性,當然推薦效果也會好很多,不過需要離線模塊對用戶口味信息進行快速響應。
其實,冷啟動用戶的口味都是短暫的,一旦和系統進行多次交互後,用戶的獨特興趣也就不斷的明朗。歸根結底,推薦系統要有一個快速響應用戶口味的機制,讓系統迅速捕捉用戶口味,推其所需才是王道。
在 @姚旭 的回答上補充一下
1. 尋找推薦平台、推薦網路例如電商領域有百分點。他們有跨站的cookie可以記錄同一個人在不同網站的行為,可以解決有用戶的網站的冷啟動問題。如下圖所示,A站有A1-A6個物品,A站有用戶1-4。圖中,用戶1在A、B兩個站點都有喜好數據。X表示他喜歡某些物品。假設樓主是B站站長但是只有用戶1,那麼當用戶4來的時候通常什麼也不能幹。如果樓主用了百分點服務,同時如果A站用了百分點作為他們的推薦引擎,那麼A站的用戶喜好數據就會成為一個矩陣存於百分點的資料庫。百分點發現用戶4在A站的行為,找出了其在AB同時存在,並且在這些站點行為近似的用戶(用戶1),百分點就可以通過用戶1在你們這裡的數據對用戶4推薦(物品B1-B4),從而解決了冷啟動的問題。當然要注意,你用了百分點的服務,也意味著你的用戶數據也將被用於其他網站的協同過濾為基礎的推薦系統中。2. 把重點放在內容為基礎的推薦
可以先隨機的放幾個內容,然後讓用戶隨意點擊。點擊以後,內容頁中就應該推薦本頁內容相似和相關的內容(相似和相關是不同的概念)。什麼是相似的內容推薦?如何計算?建立內容為基礎的推薦模型,把關鍵詞接近的內容聯繫起來。這個可以用TF IDF做,也可以手動打標籤進行歸類。這種方法適合數據量不大,用戶行為數據極其匱乏的網站使用。如果有錢可以利用mechanical turk或者外包的方式進行內容整理什麼是相關內容推薦?怎麼計算?相關內容通常是用協同過濾(collaborative filtering)算。數據之間有一些隱形特性(latent feature),一般難以用以內容為基礎的相關性計算引擎做出推薦。例如超市中的啤酒和尿布本身沒有相近的地方,但是男性消費者的消費需求作為一個隱形特性在其中有理由把這兩個商品聯繫起來進行推薦。協同過濾的特點是根據用戶歷史行為,繞過數據本質來進行推算。可以說是「知其然,不知其所以然」。從上面的解釋可以看出,相似物品通常不需要用戶數據,沒有整站冷啟動的問題。因此在用戶數很少,以及新用戶來了單個用戶數據很少的時候,應該盡量考慮使用內容為基礎的推薦。各位讀者有推薦系統或NoSQL資料庫的問題可以私信這個問題正好有點體會,上面大家說的方法都是在一定程度可以解決這個問題的,我補充一種簡單但是在我自己的系統非常有用的方法:熱門排行榜。熱門排行榜其實已經能夠解決相當一部分推薦問題了,具體的理論測試可以參看這篇論文Performance of Recommender Algorithms on Top-N Recommendation Tasks;同時Netflix的研究也表明新用戶在冷啟動階段確實是更傾向於熱門排行榜的,而老用戶會更加需要長尾推薦,這也是Netflix推薦演算法的一個重要策略。關於如何做好熱門排行榜其實是一個看似簡單其實比較複雜的問題,具體的可以參看考拉FM(我不是考拉FM的工程師)的一些工作,有機會再聊這個話題。
遷移學習你值得擁有
推薦系統淺談系列(三) - 冷啟動問題 這裡面有很詳細的回答,你可以看一下
文案引導, 利用註冊信息.
如註冊有地區, 語言, 以及後台的時區, 甚至用戶的年齡, 國家城市, 對此進行相同用戶組的Top N
另一個是給用戶新入門時的興趣check, 如quora註冊時挑選自己感興趣的Topic.
接著推薦出這些Topic對應的熱門問題和權威回答賬號.可以看一下項亮的「推薦系統實踐」那本書的第三章,專門講冷啟動的!
推薦閱讀:
TAG:推薦系統 |