1 什麼是混合推薦系統
目前介紹的算法各有利弊:
- 基於內容的推薦方法:一類item的特徵描述
- 協同過濾:利用user和item的特定類型的信息轉化生成推薦結果
- 社交網絡的推薦算法:根據user的相互影響關係進行推薦
所以,希望構建一種混合的推薦系統,結合不同算法的有點,克服缺陷,以提高推薦系統的可用性
1.1 混合推薦系統的意義
1.1.1 海量數據推薦
海量數據推薦系統通常是三個部分構成的:在線系統、近線系統和離線系統。
- 離線系統是傳統的個性化推薦系統的主體,定期利用大量歷史操作日誌進行批處理運算,然後進行特徵構造及選取, 最終建立模型並更新。
- 近線系統是將用戶產生的事件,利用流式計算得到中間結果,這些中間結果一方面發送給在線部分用於實時更新推薦模型, 另一方面將中間結果存儲起來作爲備份。
- 在線部分利用離線部分的主體模型並考慮近線部分的實時數據對模型進行增量更新,然後得到實時的推薦模型,進而根據用戶的行爲來對用戶進行實時推薦。
1.1.2 高質量推薦
爲了提升推薦系統的推薦精度以及推薦多樣性,工業上會對推薦系統進行特徵、模型等多層面的融合來構建混合推薦系統。
1.2 混合推薦系統的算法分類
- 加權型混合推薦:就是將不同算法的推薦結果進行加權總和,生成最終的排序結果。權重可以根據用戶的反饋進行調整。缺點是在數據稀疏的時候,相關的推薦方法沒有辦法獲得好的效果。
- 切換型混合推薦:根據問題的背景和實際情況在使用不同的推薦技術
- 交叉型混合推薦:將不同推薦算法的生產結果,按照一定的配比融合在一起,打包後集中呈獻給用戶。主要可能存在的問題是結果組合時的衝突解決問題。
- 特徵組合型混合推薦:將不同推薦數據源的特徵組合,由一種單一的推薦技術使用。
- 瀑布型混合推薦:採用了過濾的設計思想,把不同的推薦算法看作是不同粒度的過濾器,特別適用於推薦對象與所需推薦的結果數量相差懸殊的時候,一般會把算起來快,區分度低的算法放在前面。
- 特徵遞增型混合推薦:將前一個推薦方法的輸出作爲後一個推薦方法的輸入,前者會爲後者提供某些特徵。
- 元層次型混合推薦:將不同的推薦模型在模型層面上進行深度的融合
上面的這些混合推薦方式,又可以分爲三類:
- 整體式混合推薦系統:對算法內部進行調整
- 並行式混合推薦系統:對結果進行調整
- 流水線式混合推薦系統:利用多個流程順序產生推薦結果
2 推薦系統特徵處理方法
2.1 特徵處理方法
2.1.1 數值特徵處理
- 方法一:無量綱處理:
名稱 | python代碼 | 計算方法 |
---|---|---|
標準化 | sklearn.preprocessing.scale | |
最大最小標準化 | sklearn.preprocessing.MinMaxScale | |
二次核 | sklearn.preprocessing.normalize | / |
- 方法二:非線性變化:對數變換,主要的作用是解決隨着自變量增加,因變量的方差變大的問題;把非線性轉化爲線性
- 方法三:離散化,主要的優點,減少異常值的影響,易於存儲,使得模型更穩定
- 無監督離散化:
- 等寬度離散方法
- 等頻分箱法:使得分到每個箱中的數據個數是相同的
- 基於聚類分析的離散化方法:自頂向下的分裂策略和自底向上的合併策略
- 有監督離散化:基於熵的離散化方法和基於卡方的離散化方法
- 無監督離散化:
2.1.2 離散特徵處理
- 方法一:One-Hot編碼 sklearn.preprocessing.OneHotEncoder()
- 方法二:特徵哈希
- 作用:把高維特徵向量壓縮成低維特徵向量
- 針對特徵:如id類型特徵
- 相比embedding方法更加節約資源
- 方法三:時間特徵處理
2.2 特徵選擇方法
2.2.1 單變量特徵選擇
方法 | 計算介紹 | 優缺點 |
---|---|---|
皮爾森相關係數 | 兩個變量之間協方差與標準差的商 | 衡量的是線性相關性,只對線性關係敏感 |
距離相關係數 | 餘弦相似度 | 優點是變量大小不是必須一致的 |
卡方檢驗 | 通過觀察實際值與理論值的偏差程度 | / |
2.2.2 基於模型的特徵選擇
- 邏輯迴歸和正則化特徵選擇
方法 | 介紹 |
---|---|
L1正則 | 弱特徵的係數會變成0,導致學習到的模型稀疏 |
L2正則 | 使得係數的取值變得平均,是一個更穩定的模型 |
- 隨機森林特徵選擇
- xgboost特徵選擇
- 基於深度學習的特徵選擇
3 常見的預測模型
- 邏輯迴歸
- 支持向量機
- 梯度提升樹
4 排序學習
4.1 基於排序的指標優化
之前的排序是採用均方根作爲優化指標,但是發現:
- 排序問題更關心:頭部產品能否預測準確,而不是所有產品能否預測準確
- 排序問題更關心:所有商品的相對偏序關係,而不是預測值的絕對值的準確。
經典的排序指標
- MAP(mean reciprocal rank)
- MRR(mean average precision)
- NDCG(Normalized Discounted Cumulative Gain)
其中l是系統給出的前T個商品的評分,分子表示推薦對應的i的收益,墳墓是位置的偏置。計算完了以後需要進行歸一化,也就是除以一個理想的最好的DCG的結果
4.2 L2R算法的三種情形
4.2.1 point-wise
- 基於單個樣本的優化
- 問題:模型的分數是和用戶無關的;對頭部商品不敏感,無法有效容忍某個用戶或者某個商品的偏置
4.2.2 pair-wise
- 對偏序對的二分類問題
- 問題:評價指標與損失函數不一致,因爲NDGG不是連續的不能直接拿來做損失函數,lambda系列的算法就是爲了解決這個問題
4.2.3 list-wise
- 基於整個排序列表的優化