矩阵sum_推荐系统——从协同过滤到矩阵分解
本文簡單扼要地介紹推薦算法中的兩種經(jīng)典算法:協(xié)同過濾和矩陣分解。內(nèi)容有以下三部分
早期的推薦系統(tǒng)以業(yè)務(wù)理解為核心,通過復(fù)雜的規(guī)則描述來向用戶推薦商品,這種做法具有透明性高、可移植性差、維護(hù)成本高、泛化能力差等特點(diǎn)。在這樣一個(gè)背景下,協(xié)同過濾算法在Amazon推薦系統(tǒng)中的成功落地成為了當(dāng)時(shí)的焦點(diǎn)。
1. 協(xié)同過濾算法 (Collaborative Filtering)
[PDF] Amazon.com Recommendations: Item-to-Item Collaborative Filtering | Semantic Scholar?www.semanticscholar.org“協(xié)同過濾“,顧名思義就是協(xié)同大家的反饋、評價(jià)和一件一起對海量信息進(jìn)行過濾,進(jìn)而從中篩選出目標(biāo)用戶可能感興趣的信息的推薦過程。 —— 王喆《深度學(xué)習(xí)推薦系統(tǒng)》要理解協(xié)同過濾算法必須理解其中的兩個(gè)關(guān)鍵名詞:共現(xiàn)矩陣和相似矩陣。
共現(xiàn)矩陣的行坐標(biāo)為用戶、列坐標(biāo)為物品,矩陣中的值代表某個(gè)用戶對某個(gè)物品的評分值(在不同的業(yè)務(wù)背景下該評分具有不同的實(shí)際意義)。
相似矩陣的定義在UserCF中是用戶到用戶的相似度矩陣,在ItemCF中則是物品到物品的相似度矩陣。
協(xié)同過濾的過程可以大致分為兩個(gè)階段:
離線階段
現(xiàn)假設(shè)從歷史數(shù)據(jù)中可以獲得M個(gè)用戶對N個(gè)物品的正負(fù)反饋,將其轉(zhuǎn)化成共現(xiàn)矩陣。
數(shù)據(jù):用戶到物品的評分矩陣,即一個(gè) MxN 的共現(xiàn)矩陣。
目標(biāo):計(jì)算出 MxM 的用戶相似度矩陣,或者 NxN 的物品相似度矩陣。
UserCF:將共現(xiàn)矩陣視作M個(gè)長度為N維的用戶向量,根據(jù)余弦相似度或皮爾遜相關(guān)系數(shù)計(jì)算出每兩個(gè)用戶之間的相似度,共需計(jì)算
次,時(shí)間復(fù)雜度ItemCF:將共現(xiàn)矩陣視作N個(gè)長度為M維的物品向量,同樣根據(jù)余弦相似度或皮爾遜相關(guān)系數(shù)計(jì)算出每兩個(gè)物品之間的相似度,共需計(jì)算
次,時(shí)間復(fù)雜度線上階段
數(shù)據(jù):一個(gè) MxN 的共現(xiàn)矩陣,MxM 的用戶相似度矩陣或者 NxN的物品相似度矩陣。
目標(biāo):收到一個(gè)用戶A(非新用戶)的線上請求,為該用戶推薦K個(gè)用戶可能感興趣的物品。
UserCF:根據(jù)用戶相似度矩陣,找出與用戶A最相似的Top m個(gè)用戶,然后用下面的偽代碼計(jì)算出該用戶對不同物品的評價(jià)預(yù)測
# 背景:向userA推薦Top K個(gè)物品# 計(jì)算出userA對每個(gè)候選item的得分 item_scores = {} for item in 候選物品集:sim_sum = 0for sim_user in m個(gè)最相似的用戶:item_scores[item] += sim_user對item的評分 * sim_user與userA的相似度sim_sum += sim_user與userA的相似度item_scores[item] /= sim_sum # 找出按score倒排找出Top K個(gè)item,代碼忽略ItemCF:假設(shè)用戶A的正反饋物品集為H,根據(jù)物品相似度矩陣,然后用下面的偽代碼計(jì)算出該用戶的Top K
# 背景:向userA推薦Top K個(gè)物品# 計(jì)算出userA對每個(gè)候選item的得分 item_scores = {} for item in 候選物品集:for item_h in 用戶A的正反饋物品集H:item_scores[item] += 用戶A對item_h的評分 * item與item_h的相似度 # 找出按score倒排找出Top K個(gè)item,代碼忽略UserCF與ItemCF的特點(diǎn)
為了解決協(xié)同過濾存在的泛化性能不強(qiáng)的特點(diǎn),矩陣分解法被提出。
2. 矩陣分解 (Matrix Factorization)
矩陣分解的含義是在協(xié)同過濾算法中的共現(xiàn)矩陣的基礎(chǔ)上,加入隱向量的概念,加強(qiáng)了模型處理稀疏矩陣的能力。假設(shè)M個(gè)用戶N個(gè)物品,共現(xiàn)矩陣為 MxN 維,那么矩陣分解算法最終會將共現(xiàn)矩陣拆成一個(gè) MxF的用戶向量矩陣和一個(gè) NxF的物品向量矩陣(F即隱向量的長度),實(shí)際推薦過程中可以直接用線上請求的用戶與候選集的物品進(jìn)行相似度計(jì)算,再取Top K。
矩陣分解的過程是怎么樣的呢?在具體的算法實(shí)現(xiàn)上,矩陣分解主要有三種實(shí)現(xiàn)方法。
其中特征值分解只能用于方陣,不適用于大部分場景下的矩陣分解。
奇異值分解的計(jì)算方法在這里不詳細(xì)介紹,它會將一個(gè)MxN的矩陣表示成MxM矩陣、MxN對角陣和NxN矩陣的乘積,然后取對角陣的對角線上前F大的元素,使得MxN的矩陣被分解為MxF、FxF和FxN三個(gè)矩陣的乘積,也就得到了用戶和物品的向量矩陣。奇異值分解的方法本質(zhì)上要求共現(xiàn)矩陣是稠密的(但大多數(shù)互聯(lián)網(wǎng)場景下用戶的行為都是稀疏的),并且時(shí)間復(fù)雜度為
,在用戶量和物品數(shù)量很大的情況下計(jì)算的時(shí)間成本非常高。梯度下降法是矩陣分解的主流方法,梯度下降法的過程可以概括為以下幾步:
假設(shè)
為用戶向量矩陣, 為物品向量矩陣,那么預(yù)測值就是 , 為用戶u對物品i的評分。2. 確定目標(biāo)函數(shù)
這里用均方誤差,目標(biāo)函數(shù)為
為了防止模型在局部參數(shù)上過擬合,我們加入正則化項(xiàng)
3. 求偏導(dǎo),得梯度
對
求偏導(dǎo),得到的結(jié)果為對
求偏導(dǎo),得到的結(jié)果為4. 利用梯度的反方向?qū)?shù)進(jìn)行更新,從i步到i+1步為
其中
為學(xué)習(xí)率3. 協(xié)同過濾與矩陣分解的關(guān)系
協(xié)同過濾算法以用戶或物品為單位,找出一個(gè)相似的群體,以該群體的整體偏好來估計(jì)當(dāng)前用戶的偏好。矩陣分解則借助隱變量,將整個(gè)共現(xiàn)矩陣在隱變量的空間內(nèi)進(jìn)行描述,用相似度來計(jì)算用戶對某個(gè)商品的興趣程度。后者在前者的基礎(chǔ)上有以下幾個(gè)點(diǎn)做出了改進(jìn):
該文章源自筆者結(jié)合自身的理解對相關(guān)知識點(diǎn)的整合,從個(gè)人的學(xué)習(xí)筆記的角度落筆,如有錯(cuò)漏不當(dāng)之處,還望讀者批評指正
總結(jié)
以上是生活随笔為你收集整理的矩阵sum_推荐系统——从协同过滤到矩阵分解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机桌面壁纸怎样拉伸,win10桌面壁
- 下一篇: JVM 学习二:类加载器子系统