1. 程式人生 > >基於Spark實現推薦演算法-1:推薦演算法簡介

基於Spark實現推薦演算法-1:推薦演算法簡介

個性化推薦系統簡介

個性化推薦系統的定義在 1997 年由 Resnick 和 Varian 提出:利用網際網路向用戶提供信 息和建議,幫助使用者選擇產品,或模擬售貨員幫助使用者完成購買行為的系統 。通常推薦 由三個要素組成:推薦演算法、使用者、候選推薦專案。簡單來說,一次推薦過程就是推薦算 法從候選推薦專案中挑出某些專案給使用者。

目前個性化推薦系統已經在電子商務、視訊、音樂、新聞、部落格等領域得到了廣泛應 用。通常這些領域的網站和應用會推薦若干商品或者作品給使用者,這些推薦專案通常以“猜 你喜歡”、“購買此商品的顧客也同時購買”、“相似的商品”等形式出現,所推薦的物品便 是推薦系統通過推薦演算法從海量物品中挑選出的。由於推薦系統會根據使用者的歷史行為數 據給出因人而異的推薦結果,所以稱之為個性化推薦。

一套完整的個性化推薦系統通常包括使用者資訊收集、推薦模型計算、推薦結果展示三 個部分。個性化推薦系統首先收集使用者的網路操作行為——如瀏覽、評分、購買等,將這 些行為資料儲存到資料倉庫中。然後通過機器學習、資料探勘等相關技術來對這些資料進 行分析,更進一步可以從這些歷史資料中學習使用者的興趣愛好,執行推薦演算法生成推薦模 型。有了推薦模型,便可以為使用者提供個性化的推薦服務,實現主動推薦的目的。個性化 推薦技術可以充分提高資訊系統或者站點的服務質量和使用效率,從而吸引更多的使用者 。

個性化推薦系統的輸入資料可以有多種來源途徑,通常分為顯示輸入和隱式輸入兩種 型別。顯示輸入是指使用者明確表達喜好的行為,例如給電影評分、給微博點贊、購物後給 予好評或差評等。隱式輸入則一般是非特意的行為,如瀏覽商品詳情頁面、檢視電影評價、 搜尋關鍵詞等,這些行為並不代表使用者喜歡或討厭某個物品,但是推薦系統能夠從中挖掘 出使用者的興趣資訊。

個性化推薦系統的輸出也是多樣化的,有各種各樣的形式。最常見的是推薦列表形式,
如亞馬遜等電子商務網站的推薦商品列表、YouTube 等視訊網站的推薦影片列表、微博等 社交網站的推薦關注使用者等。這類是最直接的推薦形式,明確告訴了使用者這些是推薦結果, 屬於顯示的推薦。另一類形式是比較隱式的推薦:購物網站在關鍵詞搜尋結果列表中加入 推薦的結果;新聞網站根據推薦演算法優化文章的排序;網路問答社群把使用者可能感興趣的 話題優先展示。這些推薦系統融入到了傳統的系統模組中,起到提升原有系統功能的效果。

推薦演算法分類

推薦演算法是推薦系統的核心,直接決定著推薦系統的效能和效果。依據推薦方法的不 同,通常推薦演算法可以分為如下幾大類:基於內容的推薦(Content-Based Recommendation), 協同過濾推薦 (Collaborative Filtering Recommendation) , 混 合 型 推 薦 (Hybrid Recommendation) 。

推薦演算法分類

基於內容的推薦

基於內容的推薦是用專案內容或特徵來定義所要推薦的專案或物件,然後系統基於使用者評價物件的特徵學習使用者的興趣,依據使用者資料與待預測專案的匹配程度進行推薦。專案或物件的特徵通常是文字內容,比如標題、名稱、標籤及該物品的其他元資料。基於內容的推薦系統不可避免地受到有限的特徵資訊獲取技術的約束,根據推薦物件的不同,可能會要用到文字挖掘技術、圖片識別技術、視訊挖掘技術等。特別是自動提取多媒體資料內容特徵的相關技術還不是很成熟,導致基於內容的推薦演算法在這方面的相關應用受到了很大限制。

協同過濾推薦

協同過濾(Collaborative Filtering,CF)是一種根據使用者對各種產品的互動與評分來推薦 新產品的推薦系統技術。協同過濾最突出的優點就在於它的魯棒性,適用於多種輸入資料: 無論是“顯式”的輸入資料(例如在電影網站上進行評分)還是“隱式”的(例如使用者訪 問了一個產品的頁面但是沒有對產品評分)都可以用來做協同過濾。僅僅根據這些互動, 協同過濾演算法就能夠知道哪些產品之間比較相似以及哪些使用者之間比較相似,然後就可以 做出新的推薦 。相比與基於內容的推薦演算法,協同過濾推薦演算法不需要分析專案的內 容和特徵,所以可以不依賴於特徵資訊獲取技術,從而適用於各種類別的專案。

總體上來說,協同過濾是一種利用集體智慧的方法,使用部分或所有使用者的行為資料來進行推薦,不同使用者通過推薦系統間接地相互協作,來獲取各自感興趣的資訊。協同過 濾的核心是找出使用者或專案的鄰居,即相似的使用者或專案,然後取若干個最近鄰居推薦給 使用者。根據具體的實現,協同過濾又可以被分為多個子類別,分別是基於記憶的協同過濾 (Memory-Based Collaborative Filtering),基於模型的協同過濾(Model-Based Collaborative Filtering),基於社交網路關係的協同過濾(Social-Based Collaborative Filtering)等。

基於記憶的協同過濾

基於記憶的協同過濾演算法使用全部或大部分使用者—專案資料來生成預測。基於記憶的 協同過濾常用的有兩種 :基於物品的協同過濾(Item-Based Collaborative Filtering, Item-Based CF) 和基於使用者的協同過濾 (User-Based Collaborative Filtering,User-Based CF)。

對於類似微博、新聞、論壇、社交和知識問答等內容極多、候選推薦專案龐大的系統, User-Based CF 方法通常優於 Item-Based CF。因為這種情況下,物品相似度的計算量巨大, 而且需要頻繁更新,而使用 User-Based CF 能夠避免計算物品間的相似度。相反,對於一 個使用者數量遠超過物品數量的應用來說,此時 Item-Based CF 的效能可能比 User-Based CF 更優,這是由於此種情況的物品間相似度要比使用者間相似度更容易計算。由此可見,推薦 系統的設計者必須根據應用的特點來選擇合適的演算法 ,不能一概而論。

與基於內容的推薦演算法相比,Item-Based CF 和 User-Based CF 有下列優點:
- 1) 能夠過濾難以進行內容分析的資訊,如藝術品、音樂、文字、視訊;
- 2) 可以基於一些複雜的,難以描述的概念進行過濾,如品質、風格、流行度等。

然而,Item-Based CF 和 User-Based CF 也存在著以下的缺點:
- 1) 稀疏性問題。如果使用者對物品的評價非常稀疏,沒有充足的資料用於計算相似性,
那麼基於評價所得到的使用者或物品間的相似性可能不準確;
- 2) 可擴充套件性問題。隨著使用者和物品的增多,資料量將會劇增,系統的效能會越來越
低;
- 3) 冷啟動問題。如果某一物品從來沒有被評價過,則該物品不會被列為相似物品,
那麼這個物品就不可能被推薦。類似的,對於一個從未評價過物品的使用者,無法 獲得推薦。

基於模型的協同過濾

Model-Based CF 簡單來說是先用歷史資料訓練得到推薦模型,再用此模型進行預測的推薦演算法。常見的模型演算法包括基於概率的樸素貝葉斯演算法、聚類演算法和基於矩陣分解的演算法等 。

常用的矩陣分解演算法有:正則化矩陣分解(Regularized Matrix Factorization),帶偏置 的矩陣分解(Biased Matrix Factorization),交替最小二乘法(Alternating Least Squares,ALS) 和奇異值分解(Singular Value Decomposition,SVD)。這些演算法的基本思想都是將稀疏且 高維的使用者—物品評分矩陣分解為兩個低維矩陣,分別表示使用者的特徵和物品的特徵。用 戶的特徵矩陣可以代表使用者的興趣,同樣的,物品的特徵矩陣暗含了物品的特點,這兩個 矩陣的乘積能反應出使用者對物品的喜好程度 。所以該類方法的主要工作就是計算出使用者 的特徵矩陣和物品的特徵矩陣。

基於社交網路關係的協同過濾

簡單來說,是一種使用使用者的社交關係資料、使用者好友的喜好資料等社交類資料來進行推薦的演算法。該類演算法適合於微博、微信等擁有使用者社交關係資料的系統。

混合型推薦

混合推薦是指將多種推薦技術綜合,取長補短,以此來獲得更好的推薦效果。常用的
方案是將協同過濾技術與另一種演算法結合,然後將不同方法得出的推薦結果進行篩選和融
合,從而提高推薦效果。