推薦系統初探

轉自七月算法班--寒老師

學習筆記

之前實驗室是做社交網絡的,主要是爬取的一些新浪微博的數據,來做一些社交行為的預測;或者是爬取豆瓣網的一些數據,根據社交網絡的一些性質來做書籍電影或者話題等等的推薦。

從研二開始,老師給我的要求是在社交網絡上看看能不能想到什么點,可以用條件場的方法去做,我想了很久,其中有一個點是關于遷移學習的,無奈在數據的抓取,以及難度頗高被老師否決了。關于這個方面我大致也看了2個月的paper。后來去弄機器學習應用在數據安全領域也是有契機的,因為實驗室是重慶市的重點安全實驗室,加上劉老師又是重慶郵電大學安全領域的牽頭人,因此每年都需要在安全方面產出一些論文,于是老師讓我轉入了安全攻防方向。

但是,推薦始終是整個實驗室大部分人研究的主題,關于這一塊,我必須認真補一補。

個人的準備是:書+paper+視頻

書:推薦系統實戰

paper:sci+ei+計算機學報+軟件學報

視頻:七月算法班

-----推薦系統是什么

根據用戶的一些信息去判斷用戶當前的需求/感興趣的item

1) 歷史行為

2) 社交關系(實驗室重點研究特征,顯示鏈接 | 隱鏈接)

3)興趣點

4)上下文關系

.....

---推薦系統之應用

-----Netflix推薦電影

----Google news能夠帶來額外的38%的點擊

-----亞馬遜35%的銷售額都來源于它的推薦

-----頭條半數以上的新聞和廣告點擊都來源于推薦

----京東一年推薦和廣告有幾億的收益

---推薦系統之系統結構

離線部分---訓練模型 [準確度]

在線部分--根據上下文信息給出最后推薦結果 ?[速度]

準確度+速度

-----推薦系統--評定標準

---1. 評分系統

準確度判斷---評分系統

----2. topN推薦

準確率與召回率

--覆蓋率

表示對物品長尾的挖掘能力,越長可能個性化程度高(推薦系統希望消除馬太效應【熱門】)

覆蓋率

I為商品庫的某個子類的全集,分子是從這個里面推薦出去了多少

從信息熵的角度,p為推薦概率=第i個商品推薦的次數 / 總次數

當所有商品被推薦概率為0.5時,H最大。可以更精準地度量覆蓋率

---多樣性

表示推薦列表中的物品兩兩之間的不相似性

S(i,j)表示兩個物品之間的相似度

物品的多樣性

注意:上面的分母表示Cn^2排列組合的展開

--其他標準

-新穎度 -不知道的商品

-驚喜度 -和興趣不相似,卻滿意的

-信任度 -可靠的推薦理由

-實時性 - 實時更新程度

舉例 --NetFlix的復雜推薦模型

三層推薦模型

經典算法初步

---基于內容的推薦

---基于用戶喜歡的item的屬性/內容進行推薦

---需要分析內容,無需考慮行為

---通常在文本相關的產品進行推薦

--item通過內容(關鍵詞)關聯

------電影題材:愛情/探險/動作/喜劇

------標志特征:黃曉明/王寶強

------年代:1995,2017

------關鍵詞

--基于比對item內容進行推薦

方法:

----對于每個要推薦的內容,建立一份資料

-------比如詞ki在文件dj的權重wij(常用方法:TF-IDF)

----對用戶也建立一份資料

-------比如定義一個權重向量(wc1,...,wck)wci表示第ki個詞對用戶c的重要程度

----計算匹配度

余弦距離

壞處:耗時,每個文本需要建立向量進行挖掘

好處:不需要加入用戶行為信息

----協同過濾

----user-based

? 找到和用戶最近的其他用戶,找到他們看/買過但是當前用戶每一買過的item,根據距離加權打分

找到最高的推薦

基于用戶的協同過濾
item-based CF

根據用戶對商品/內容的行為,計算item和item的相似度,找到和當前item最接近的進行推薦

--相似度和距離度量

相似度和距離定義

Jaccard相似度適合0-1的值

Person和余弦相似度的區別在于Pearson會對每個向量減去均值

Pearson向量之所以要減去均值是因為用戶存在偏好,Pearson可以做相對的歸一再來計算相似度

----基于用戶的協同過濾

基于用戶的協同過濾

----推薦系統之--冷啟動問題

--對于新用戶

1. 所有推薦系統對于新用戶都有這個問題

2. 推薦非常熱門的商品,收集一些信息

3. 在用戶注冊的時候收集一些信息

4. 在用戶注冊完之后,用一些互動游戲確定喜歡與不喜歡


--對于新商品

1. 根據商品本身屬性,求與原來商品的相似度

2. item-based協同過濾可以推薦出去

----隱語義模型(區別于協同過濾)

矩陣填空

隱因子分析

隱語義模型

分別對兩個維度進行factor分析

對用戶和電影的因子進行計算

計算

隱語義模型包括:pLSA,LDA,Topic model,Matrix factorization,factorized model

----隱語義模型

----需要矩陣分解,首先想到SVD,但是SVD的時間復雜度是O(m^3),同時原矩陣的缺省值太多。

隱語義模型

--最簡單的辦法是直接矩陣分解

--CF簡單直接可解釋性強【缺點:數據稀疏關聯不上】,但隱語義模型能更好地挖掘用戶和item關聯中的隱藏因子

舉例:

用戶物品評分關聯矩陣

解法:

梯度下降-找最佳P|Q

再還原回矩陣乘積,即可補充未打分項

通常情況下,我們會限定分解得到的P和Q中的元素都非負,這樣得到的結果是一定程度上可解釋的

因為不存在減法操作,因此可以看作對隱變量特征的線性加權擬合

LibMF,LibSVD

---加Bias的隱語義模型

評價系統均值,用戶的bias,電影的bias

加入Bias的隱語義模型
損失函數

Netflix推薦優化過程

0.85這個應該還疊加了其他的tricks在里面

-----------Word2vec與用戶行為序列

1.我們給定中文分詞后的文本,使用word2vec能得到每個詞(phrase)在高維空間的特征向量。

2.向量和向量之間的距離遠近,表示2個詞的關聯度高低。

3.和“北京”最近的詞為“東京”“柏林”“巴黎”“倫敦”

----在推薦里怎么用?

1. 把用戶的行為序列當做分詞過后的phrase

2. 送給word2vec學習

3.根據商品映射得到的特征向量去找相似的商品

本質上也是體現商品關聯,但是比協同過濾覆蓋度高

--個性化結果展出方式

----按照不同維度(比如題材展出)

----排序的結果使用上下文信息重排

----對于結果都提供解釋(解釋理由)


---如何得到數據?

---隱性反饋:

最近觀看,打分情況,瀏覽,停留時間

---顯性數據:

用戶偏好

標準:準確度RMSE,MSE,豐富度(覆蓋率),新鮮度(怎么做?)


CF+MF+Word2vec+Learningtorank(比如PageRank)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容