如何在沒有大量用戶數據的狀況下設計個性化推薦系統並讓用戶對推薦結果滿意從而願意使用推薦系統,就是冷啓動問題。 算法
解決冷啓動問題方法概述: 網絡
用戶註冊時附帶信息:網站
基於註冊信息的個性化推薦流程基本以下:spa
(1) 獲取用戶的註冊信息;設計
(2) 根據用戶的註冊信息對用戶分類;3d
(3) 給用戶推薦他所屬分類中用戶喜歡的物品;blog
(4) 若沒法找到合適的物品,推薦熱門排行榜。內存
注:該方法中須要統計物品對分類的熱門程度,經過以下公式:開發
P(f,i) = |N(i) ∩ U(f)| (期中N(i)是喜歡物品的用戶集合,U(f) 是具備某種特徵的用戶集合) 文檔
這種方法對熱門商品的熱門程度每每比較大,在分母中增長一項: |N(i) + α|
選擇合適的物品啓動用戶的興趣
解決用戶冷啓動問題的另外一個方法是在新用戶第一次訪問推薦系統時,不當即給用戶展現推薦結果,而是給用戶提供一些物品,讓用戶反饋他們對這些物品的興趣,而後根據用戶反饋給提供個性化推薦。
通常來講,可以用來啓動用戶興趣的物品須要具備如下特色:
(1)比較熱門。若是要讓用戶對一個物品進行反饋,前提是用戶知道這個物品是什麼東西;
(2) 具備表明性和區分性。啓動用戶興趣的物品不能是大衆化或老小咸宜的,由於這樣的物品對用戶的興趣沒有區分性;
(3)啓動物品集合須要有多樣性。在冷啓動時,咱們不知道用戶的興趣,而用戶興趣的可能性很是多,爲了匹配多樣的興趣,咱們須要提供具備很高覆蓋率的啓動物品集合,這些物品能覆蓋幾乎全部主流的用戶興趣。
物品冷啓動須要解決的問題是如何將新加入的物品推薦給對它感興趣的用戶,這時候能夠經過物品之間的語義來計算其類似度,經常使用的算法有cos類似度和TF-IDF。
物品冷啓動在新聞網站等時效性很強的網站中很是重要,由於那些網站中時時刻刻都有新加入的物品,並且每一個物品必須可以在第一時間展示給用戶,不然通過一段時間後,物品的價值就大大下降了。
以前咱們介紹了UserCF算法和ItemCF算法。UserCF算法並不對新物品很敏感,在不少網站中,推薦列表並非給用戶展現物品的惟一列表。當一個用戶在某個地方發現了新加的物品並對其進行了反饋。經過UserCF算法給相似具備相同興趣的用戶推薦這個物品。這樣新加的物品就會源源不斷的擴散開來。
可是有些網站中推薦列表就是用戶獲取新加物品惟一的或者是主要途徑。這時就要解決第一推進力的問題。也便是第一個用戶在哪發現新加物品的問題。解決這個問題的最簡單的辦法就是將新加的物品隨機的展現給用戶,可是這樣作顯然並不個性化。所以能夠考慮利用物品內容信息,將新物品投放給曾經喜歡過和他相似內容的其餘物品的用戶,這相似於ItemCF思想。不過這是先經過ItemCF找到一個可能對物品感興趣的用戶,而後再經過USerCF推薦給與此用戶興趣相似的其餘用戶。
若是用ItemCF算法解決物品冷啓動問題,就有點麻煩了,由於ItemCF經過用戶行爲對物品進行類似度的計算,造成物品類似度矩陣。再根據這個類似度矩陣把物品推薦給喜歡過相似這個物品的用戶。這個物品類似度矩陣是線下計算好,線上放進內存。從而新物品不會出如今物品類似度矩陣中。解決的辦法是頻繁的更新類似度矩陣。這是一件很是耗時的事情。爲此咱們只能經過物品內容來計算物品類似度矩陣。
這裏涉及到物品類似度的計算,和ItemCf中物品類似度計算不一樣的是,對於新物品這裏並無用戶數據,因此通常經過物品內容計算類似度。
通常來講,物品的內容能夠用向量空間模型表示,該模型會把物品表示成一個關鍵詞向量。對於物品d,他的內容表示成一個關鍵詞向量以下:
其中e是關鍵詞,w是這個詞對於權重,其中w的計算公式就是著名的TF-IDF公式,該公式的計算見後文中具體介紹。
在給定物品內容的關鍵詞向量後,物品內容響度能夠經過向量之間的餘弦類似度計算:
《推薦系統實戰》中具體比較了內容過濾算法和協同過濾算法在推薦系統中的實際效果(有準確率、召回率、覆蓋率等數據)。
主要思想是:若是某個詞或短語在一篇文章中出現的頻率TF高,而且在其餘文章中不多出現,則認爲此詞或者短語具備很好的類別區分能力,適合用來分類。
TFIDF其實是:
TF詞頻(Term Frequency):表示詞條在文檔d中出現的頻率
IDF逆向文件頻率(Inverse Document Frequency):若是包含詞條t的文檔越少,也就是n越小,IDF越大,則說明詞條t具備很好的類別區分能力。
由於不一樣的文章長度不同,須要進行標準化:
IDF計算公式:
TF-IDF值:
參考:
https://baike.baidu.com/item/tf-idf/8816134?fr=aladdin