推薦系統概覽
推薦系統三個基本對象
推薦系統需要的三類數據源:物品,用戶,事務
物品:關注物品集的屬性和特徵
用戶:關注用戶基本屬性,年齡,性別等
事務:用戶的行爲記錄,分爲顯示行爲和隱式行爲
推薦系統的分類
- 基於內容 (content-based)
- 爲用戶推薦與過去興趣相似的物品,物品的相似性是基於被比較物品的特徵來計算的
- 協同過濾(CF:collaborative filtering)
- 找到與用戶相似的品味的用戶,將相似用戶過去喜歡的物品推薦給用戶
- 基於人口統計(demographic)
- 基於人口統計信息,不同的人羣對用不同的推薦
- 基於知識(knowledge-based)
- 根據特定領域的知識進行推薦,所謂知識就是關於確定物品哪些特徵能滿足用戶需要和偏好
- 基於社區
- 根據用戶“近鄰”的偏好進行推薦,也叫社會化推薦系統,利用用戶社會關係和“近鄰”的偏好推薦,結果基於用戶“近鄰”的評分等
- 混合推薦系統
- 不同推薦方法組合,例如協同過濾的冷啓動問題可以用基於內容的推薦彌補
推薦系統的評價標準
- 覆蓋率
- 冷啓動
- 信心度
- 可信度
- 新穎度
- 風險度
- 驚喜度
推薦解釋
如何讓推薦系統可信任,可解釋,有說服力
- 透明度:說明系統如何工作
- 可反饋性:允許用戶報錯
- 信任:增加用戶對系統信心
- 有效性:幫助用戶做好的決定
- 說服力:說服用戶購買或嘗試
- 高效性:幫用戶快速抉擇
- 滿意度:增加用戶體驗舒適性和趣味
推薦系統與數據挖掘
涉及數據挖掘內容概覽
數據挖掘大致分3個步驟:數據預處理,數據分析,結果解釋
數據預處理
數據就是一組對象以及對應屬性的集合
對象等同於:記錄,物品,得分,樣本,觀測值,實例
屬性等同於:變量,字段,特徵,特性
1.相似度度量
1.1 歐幾里得距離
d(x,y)=∑k=1n(xk−yk)2−−−−−−−−−−−√
n是維度,Xk和Yk是第k和特徵值
1.2 閔可夫斯基距離
d(x,y)=(∑k=1n(xk−yk)r)1r
是歐氏距離的推廣
r=1:曼哈頓距離,L1範數
r=2:歐幾里得距離,L2範數
r=∞ :上確界,任意維度對象屬性間的最大距離
1.3. 馬氏距離
d(x,y)=(x−y)δ−1(x−y)T−−−−−−−−−−−−−−−√
δ 是協方差矩陣
1.4. 夾角餘弦值
cos(x,y)=(x⋅y)∥x∥∥y∥
⋅ 代表點積,∥x∥ 是向量x的長度
也叫餘弦相似度,L2範數
1.5. 皮爾遜相關度
Peason(x,y)=∑(x,y)δx∗δy
利用x,y的協方差和標準差δ 進行計算
1.6. 簡單匹配係數
SMC=匹配屬性所有屬性=M11+M00M00+M01+M10+M11
只對應二進制屬性
1.7. Jaccard係數
JC=M11M01+M10+M11
一般情況,推薦系統預測精確度不太受相似度度量方法的影響
(ACM論文的實驗)
2.抽樣
- 從大數據集中選取子集的技術,因爲處理全部數據開銷太大
- 也用於創建訓練數據和測試數據時候使用
- 最簡單情況使用隨機抽樣
- 常用抽樣方法是無取代抽樣,就是不放回的拿
- 分離訓練集測試集一般8:2
交叉驗證
交叉驗證(Cross-validation),執行多次測試集訓練集分離,訓練模型評價模型,求評價精度
10折交叉驗證(10-fold cross validation),將數據集分成十份,輪流將其中9份做訓練1份做驗證,10次的結果的均值作爲對算法精度的估計,一般還需要進行多次10折交叉驗證求均值
有事抽樣基於最近時間,或者按照評分比例抽樣,根據具體情況進行一些控制
3.降維
推薦系統的2個大問題:稀疏和維度災難,解決方法:降維
3.1 主成分分析(PCA)
能根據最小平方誤差計算出變化最大的值,得到一組有序的成分列表。第一個成分的變化量比第二個成分的大,最後可以根據忽略對變化貢獻小的成分來降低維度
PCA的限制
- 假設數據集是已線性合併爲基礎的數據集(有對應非線性的PCA變種算法)
- 原始數據符合高斯分佈
3.2 奇異值分解
目標是發現低維特徵空間,這個空間中每個成分都是可以計算的
λ 是對角矩陣,元素是奇異值,正定,按照降序排列- 可以通過控制
λ 矩陣的秩來決定降維的力度
SVD可以發現用戶和產品的潛在關係。方法是利用平均分填充用戶-物品矩陣,然後進行SVD分解,然後直接計算預測值,根據預測結果來豐富kNN等方法的鄰居信息
矩陣分解的方法還有MF,NNMF等,其基本思想都是把評分矩陣分解爲2個部分,一部分包含描述用戶的特徵,另一部分包含描述物品的特徵
後面再介紹基於SVD的增量學習等技術
3.3 去噪
噪音數據有缺失數據,異常數據等形式
去噪目的是在最大化信息量的同時去掉不必要的影響
數據分析
1.分類
這裏列舉一下推薦系統常見的分類算法,不細緻討論算法細節
1.1 最近鄰
原理:根據最近的K個點的標籤來決定數據的標籤
優點是KNN的概念和CF的鄰居很相關,而且不需要訓練而合維護一個模型,能適應評分矩陣的劇烈變化
缺點顯而易見,每次預測都需要計算每個點的距離
1.2 決策樹
常見數的樹算法:CART,ID3,C4.5,SLIQ,SPRINT
決策樹的重點在於決策節點的劃分,找到不純度減少最多的點,衡量不純度的方法:信息增益,基尼指數,熵,誤分類誤差等
優點是結果好解釋,構建樹代價小
1.3 基於規則分類
可以從樹模型裏面提取規則,再根據規則進行分類
1.4 貝葉斯
利用概率來代表從數據中學習到的關係的不確定性
模型得到的概率是先驗概率和似然值的乘積,先驗代表了觀測數據之前的經驗,期望,似然值部分代表了數據的影響
樸素貝葉斯假設特徵間概率獨立,好處是受孤立噪音點,和不相關特徵的影響小,缺點是獨立的假設對於相關屬性不成立
解決特徵依賴的方法是貝葉斯信念網BBN,利用非循環圖表達屬性的依賴關係
1.5 人工神經網絡
神經網絡做分類,可以做非線性分類任務
1.6 支持向量機
找到分類平面,這個平面使間隔最大化,結構風險最小化
1.7 分類器集成
Bagging,Boosting
1.8 評估分類器
有量化評分的結果,均方誤差MAE,均方根誤差RMSE
把推薦看做分類的情況,準確率,召回率,F值,ROC,AUC
2.聚類
聚類可以在計算近鄰之前先把類似的劃分到一起,從而提高效率,但是提高效率和降低精度要衡量
聚類主要分爲2個類別,分層和劃分
劃分:把數據劃分成非重合的聚類,每個數據都確定的屬於一個類別
分層:在已知聚類上繼續聚合物品,嵌套的層級樹
2.1 k-means
缺陷:選k值需要先驗知識;聚類對初始點敏感;異常值敏感;會產生空聚類
可以利用k-means作爲預處理構造鄰居
2.2 DBSCAN
基於密度進行聚類。核心點:給定距離內有一定數量鄰居的點;邊界點:沒有超過一定數量鄰居,但是屬於核心點鄰居的點;噪聲點:核心點邊界點以外的點
利用消息傳遞算法,是基於圖聚類的方法
3.關聯規則挖掘
- 關聯規則發現的規則只意味着共同出現,並沒有因果關係
- 利用支持度和置信度對規則進行篩選
- 先根據支持度生成物品集(頻繁項集生成),再從頻繁項集裏面產生高置信度規則