<h3>什麼是冷啓動問題?</h3> <p> 個性化推薦是須要依賴用戶的歷史行爲才能預測用戶的興趣,所以大量的用戶行爲數據是用戶的重要組成部分和先決條件。那麼對於在開始階段就像要一個個性化推薦系統的網站或應用來講,如何在沒有用戶歷史數據的狀況下設計個性化推薦而且讓用戶對推薦結果滿意從而使用推薦系統,就是冷啓動問題。 </p> <h3>用戶冷啓動</h3> <p> 如何給新用戶作個性化推薦? <br/> 一、作非個性化推薦,如熱門排行榜、人工推薦等<br/> 二、利用用戶的我的信息作粗粒度的個性化推薦<br/> 算法核心:計算每種特徵(如年齡、性別、職業等)的用戶喜歡的商品。即,對於每種特徵f,計算具備這種特徵的用戶對各個商品的喜愛程度p(f,i)。<br/> p(f,i)=|N(i)與U(f)的交集|,其中N(i)是喜歡物品i的用戶集合,U(f)時具備特徵f的用戶集合。<br/> 以上公式可能會出現有一個物品只被一個用戶喜歡過,而這個用戶恰好就有特徵f的狀況,那麼p(f,i)=1。這種狀況沒有統計意義,所以咱們能夠爲分母加上一個比較大的數,能夠避免這樣的商品產生比較大的權重。<br/> p(f,i)=|N(i)與U(f)的交集|/(|N(i)|+a)<br/> 經過以上公式,能夠計算出每種特徵的商品集合。<br/> 所以,咱們能夠經過微博獲取用戶的我的信息,根據用戶我的信息對用戶進行分類,給用戶推薦他所屬分類中用戶喜歡的商品。例如:能夠經過性別、年齡分別創建性別-商品相關表、年齡-商品相關表,而後將這兩張相關表的商品列表按照必定權重相加,獲得用戶的最終推薦列表。 </p> <h3>物品冷啓動</h3> <p> 如何將新商品推薦可能對它感興趣的用戶?<br/> 一、UserCF(基於用戶的協同過濾)<br/> UserCF對商品冷啓動問題並不敏感。UserCF在給用戶進行推薦時,會首先找到和用戶興趣類似的一羣用戶,而後給用戶推薦這一羣用戶喜歡的商品。當一個新商品加入時,總會有用戶經過某些途徑(分類、搜索等)看到這些商品,對商品產生反饋。那麼當一個用戶對某個物品產生反饋後,和他歷史興趣類似的其餘用戶的推薦列表中就有可能出現這一商品,從而更多的人就會對這個商品產生反饋,致使更多的人的推薦列表中出現這個物品。這個物品就能不斷地擴散開來。所以若是使用UserCF算法,咱們就能夠不用考慮商品冷啓動問題。<br/> 可是,推薦列表是用戶獲取信息的主要途徑,那麼對於UserCF算法就須要解決第一推進力的問題,即第一個用戶從哪裏發現這個新商品。只要有一小部分人可以發現並喜歡新商品,那麼UserCF就能將這些新商品擴散到更多用戶中。解決第一推進力最簡單的方法時將新的商品隨機展現給用戶,但這樣效率很低而且顯然不太個性化,所以能夠考慮利用物品的內容信息,將新商品先投放給曾經喜歡過和它內容類似的其餘商品的用戶。<br/> 二、ItemCF(基於項目的協同過濾)。<br/> 對於ItemCF算法來講,商品冷啓動就是一個嚴重的問題了。ItemCF算法是給用戶推薦和他以前喜歡的商品類似的商品。ItemCF算法每隔一段時間就會利用用戶行爲計算商品類似度表,在線服務時ItemCF算法會將以前計算好的物品類似度矩陣存放在內存中。當新商品加入時,內存中的商品相關表中不會存在這個商品,從而ItemCF算法沒法推薦新商品。解決這一問題的辦法是頻繁更新物品類似度表,可是基於用戶行爲計算物品類似度是比較耗時的事情。由於用戶行爲日誌隨着時間的推移會變得愈來愈大。並且新商品若是不展現給用戶,用戶就沒法對它產生行爲,經過日誌計算是計算不出包含新商品的相關矩陣的。爲此,咱們只能利用新商品的內容信息計算物品相關表,而且頻繁地更新相關表(一小時一次)。 </p> <h3>系統冷啓動</h3> <p> 如何讓在剛發佈時就讓用戶體驗到個性化推薦服務? 要使用「基因」(物品的元屬性)來進行推薦。咱們就須要人工地對每一件商品進行標記,而且每件商品的基因數量應維持在一個固定的數量上。 </p>算法