轉自七月算法班--寒老師
學習筆記
之前實驗室是做社交網絡的,主要是爬取的一些新浪微博的數據,來做一些社交行為的預測;或者是爬取豆瓣網的一些數據,根據社交網絡的一些性質來做書籍電影或者話題等等的推薦。
從研二開始,老師給我的要求是在社交網絡上看看能不能想到什么點,可以用條件場的方法去做,我想了很久,其中有一個點是關于遷移學習的,無奈在數據的抓取,以及難度頗高被老師否決了。關于這個方面我大致也看了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和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中的元素都非負,這樣得到的結果是一定程度上可解釋的
因為不存在減法操作,因此可以看作對隱變量特征的線性加權擬合
LibMF,LibSVD
---加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)