雖然完整的推薦系統需要考慮「5w」問題,但向誰(who)推薦什麼(what)是問題的核心。所以,本章我們介紹乙個解決這兩個核心問題的推薦系統。使用的資料和推薦任務如下圖所示,已知使用者對部分內容的評分(偏好),推測他們對未評分內容的評分,並據此進行推薦。
協同過濾推薦(collaborative filtering recommendation):該演算法的核心是分析使用者的興趣和行為,利用共同行為習慣的群體有相似喜好的原則,推薦使用者感興趣的資訊。興趣有高有低,演算法會根據使用者對資訊的反饋(如評分)進行排序,這種方式在學術上稱為協同過濾。協同過濾演算法是經典的推薦演算法,經典意味著簡單、好用。協同過濾演算法又可以簡單分為兩種:
基於內容過濾推薦(content-based filtering recommendation):基於內容的過濾是資訊檢索領域的重要研究內容,是更為簡單直接的演算法,該演算法的核心是衡量出兩個物品的相似度。首先對物品或內容的特徵作出描述,發現其相關性,然後基於使用者以往的喜好記錄,推薦給使用者相似的物品。比如,小張對物品a感興趣,而物品a和物品c是同類物品,可以把物品c也推薦給小張。
組合推薦(hybrid recommendation):以上演算法都各有優缺點,比如基於內容的過濾推薦是基於物品建模,在系統啟動初期往往有較好的推薦效果,但是沒有考慮使用者群體的關聯屬性;協同過濾推薦考慮了使用者群體喜好資訊,可以推薦內容上不相似的新物品,發現使用者潛在的興趣偏好,但是這依賴於足夠多且準確的使用者歷史資訊。所以,實際應用中往往不只採用某一種推薦方法,而是通過一定的組合方法將多個演算法混合在一起,以實現更好的推薦效果,比如加權混合、分層混合等。具體選擇哪種方式和應用場景有很大關係。
本次實踐我們採用ml-1m電影推薦資料集,它是grouplens research從movielens**上收集並提供的電影評分資料集。包含了6000多位使用者對近3900個電影的共100萬條評分資料,評分均為1~5的整數,其中每個電影的評分資料至少有20條。該資料集包含三個資料檔案,分別是:
另外,為了驗證電影推薦的影響因素,我們還從網上獲取到了部分電影的海報影象。現實生活中,相似風格的電影在海報設計上也有一定的相似性,比如暗黑系列和喜劇系列的電影海報風格是迥異的。所以在進行推薦時,可以驗證一下加入海報後,對推薦結果的影響。 電影海報影象在posters資料夾下,海報影象的名字以"mov_id" + 電影id + ".png"的方式命名。由於這裡的電影海報影象有缺失,我們整理了乙個新的評分資料檔案,新的檔案中包含的電影均是有海報資料的,因此,本次實踐使用的資料集在ml-1m基礎上增加了兩份資料:
使用者資料、電影資料和評分資料報含的特徵樣例如下表所示。
其中部分資料並不具有真實的含義,而是編號。年齡編號和部分職業編號的含義如下表所示。
從樣例的特徵資料中,我們可以分析出特徵一共有四類:
id類特徵:userid、movieid、gender、age、occupation,內容為id值,前兩個id對映到具體使用者和電影,後三個id會對映到具體分檔。
列表類特徵:genres,每個電影會有多個類別標籤,內容是對應著幾個id值的列表。
文字類特徵:title,內容是一段英文文字。
因為特徵資料有四種不同型別,所以構建模型網路的輸入層預計也會有四種子結構。
假如給使用者a推薦,計算電影庫中「每乙個電影的特徵向量」與「使用者a的特徵向量」的余弦相似度,根據相似度排序電影庫,取 top k的電影推薦給a。那麼,怎麼獲取兩種有效代表使用者和電影的特徵向量?
首先,我們要明確什麼是「有效」?對於使用者評分較高的電影,電影的特徵向量和使用者的特徵向量應該高度相似,反之則相異。
我們已經獲得到大量評分樣本,以此可以構建乙個訓練模型如下圖所示。根據使用者對電影的評分樣本,學習出使用者特徵向量和電影特徵向量的計算方案(紅色箭頭)。
第一層結構:特徵變換,原始特徵集合變換為兩個特徵向量。
第二層結構:計算向量相似度。為確保結果與電影評分可比較,兩個特徵向量的相似度從【0~1】縮放5倍到【0~5】。
第三層結構:計算loss,計算縮放後的相似度【0~5】與使用者對電影的真實評分【0~5】的「平方誤差」。
以在訓練樣本上的loss最小化為目標,即可學習出模型的網路引數,這些網路引數本質上就是從原始特徵集合到特徵向量的計算方法,如紅色箭頭所示。根據訓練好的網路,我們可以計算任意使用者和電影向量的相似度,進一步完成推薦。
基於上面的分析,推薦模型的網路結構初步設想如下。
將每個原始特徵轉變成embedding表示,再合併成乙個使用者特徵向量和乙個電影特徵向量。計算兩個特徵向量的相似度後,與訓練樣本(已知的使用者對電影的評分)做損失計算。
但不同型別的原始特徵應該如何變換?網路設計的細節是怎樣的?我們將在後續幾節結合**實現逐一**,包括四個小節:
資料處理。將movielens的資料處理成神經網路理解的形式。
模型設計。設計神經網路模型,將離散的文字資料對映為向量。
配置訓練引數並完成訓練,提取並儲存訓練後的資料特徵。
利用儲存的特徵構建相似度矩陣完成推薦。
推薦系統 基本概念
序 帕洛阿爾托研究中心的tapestry系統 goldberg et al.1992 引入了協同過濾的思想和概念,展示了如何將顯示標註資料和隱式行為資料注入可查詢的資料庫中,以及使用者如何利用這些資料進行個性化過濾。grouplens系統 resnick et al.1994 展示了協同過濾方法既能...
基本概念 數控系統基本概念
第一章 基本概念 數控工具機cnc是一種按事先編制好的加工零件程式進行加工的高效 自動化加工裝置。是 computer numerical control machine tools 的簡稱。數控工具機較好地解決了複雜 精密 小批量 多品種的零件加工問題,是一種柔性的 高效能的自動化工具機。西門子系...
Linux系統基本概念
程式 編譯好的二進位制檔案,存在於磁碟上,不占用系統資源 cpu,記憶體,開啟的檔案 裝置 鎖.程序 是乙個抽象的概念,與作業系統原理聯絡緊密,程序是活躍的程式,占用系統資源,程式執行起來產生乙個程序。同乙個程式可以被同時載入成不同的程序 彼此互不影響 2.時鐘中斷 硬體手段 3.程式執行過程 儲存...