降維方法能夠同時提高近鄰方法的質量和效率。尤其是在稀疏矩陣中,即當兩個使用者共同評價過的物品很少,也能夠計算其低維潛在向量之間的距離。由於降維能夠根據潛在因子提供稠密的低維表示。因此,這種模型被稱為潛在因子模型。包括:
(1)建立資料的降維表示可以基於行的潛在因子也可以基於列的潛在因子。換句話說,對資料的降維表示是將物品的維度或使用者的維度壓縮成潛在因子。這種降維表示能夠緩解基於近鄰模型中由於稀疏性帶來的問題。依據被壓縮因子的不同維度,降維表示既能用於基於使用者的近鄰演算法,也能用於基於物品的近鄰演算法。
(2)對行空間和列空間的潛在表示是同時確定的。在不使用基於近鄰的方法時,這種潛在表示被用於重建整個評分矩陣。
為了便於討論,以基於使用者的協同過濾方法為例。基於使用者的協同過濾方法的基本思想是利用主成分分析法將m×n
m\times n
m×n的矩陣r
\mathbf r
r轉化到更低維的空間中。得到的矩陣r
′\mathbf r'
r′是乙個m×d
m\times d
m×d的矩陣,且d≪n
d\ll n
d≪n。因此,代表使用者評分的每乙個(稀疏的)n
nn維向量被轉化為低維的d
dd維向量。而且,在原始評分向量不同,每乙個d
dd維向量都是完全確定的。當表示每位使用者的d
dd維向量都確定之後,我們就用降維後的向量來計算目標使用者和其他使用者的相似度。在降維表示上的相似度計算更具有健壯性,因為新的低維向量是完全確定的。而且由於低維向量維度較低,相似度的計算也更加高效。在低維空間中,簡單的余弦或點積就足以計算相似度。
問題:如何計算每個資料的低維表示?
(1)類svd方法;(2)類pca方法
這裡以類svd方法為例,做出解釋說明。
第一步,填充m×n
m\times n
m×n不完全矩陣r
\mathbf r
r中的未知項。方法:(1)以對應行的平均值(即對應使用者的平均評分)作為未知項的估值。(2)用列的平均值(即對應物品的平均評分)作為估值。結果表示為r
f\mathbf r_f
rf.
第二步,計算n×n
n\times n
n×n的物品相似度矩陣s
\mathbf s
s,s=rf
t⋅rf
\mathbf s=\mathbf r_f^t\cdot\mathbf r_f
s=rft
⋅rf
。s
\mathbf s
s為半正定的。
為了確定svd的控制基向量,我們對相似度舉證s
\mathbf s
s施行如下的對角化:s=p
δp
t\mathbf s=\mathbf
s=pδpt
這裡,p
\mathbf p
p是乙個n×n
n\times n
n×n的矩陣,其列包含s
\mathbf s
s的正交特徵向量。δ
\mathbf\delta
δ是乙個對角矩陣,其對角線上是s
\mathbf s
s的非負特徵向量。令p
d\mathbf p_d
pd為n×d
n\times d
n×d的矩陣,僅包含p
\mathbf p
p的最大的d
dd個特徵向量對應的列。那麼,矩陣之積rfr
d\mathbf r_f\mathbf r_d
rfrd
就是r
f\mathbf r_f
rf的低維表示。注意,由於r
f\mathbf r_f
rf是m×n
m\times n
m×n的矩陣,p
d\mathbf p_d
pd是n×d
n\times d
n×d的矩陣,所以降維表示rfr
d\mathbf r_f\mathbf r_d
rfrd
的維度為m×d
m\times d
m×d。因此這時m
mm個使用者每個都能夠在d
dd維空間內表示。這樣的表示被用於決定每位使用者的同組群體。
注意,矩陣r
f\mathbf r_f
rf是由不完全矩陣r
\mathbf r
r以行或列的均值填入未知項得到的。此方法會引起偏差的。
下表為12個使用者對3部電影的評分(1~7),假設使用pca降維,需要估計協方差矩陣。假設未知值用列的均值代替。
使用者索引
godfather
gladiator
nero11
1127
7733
1145
7753
1657
7318
5793
11057
113112
57顯然,《gladiator》和《nero》之間的關聯度非常高,因為在已有的使用者評分中,它們的評分結果非常相似。《godfather》和《gladiator》之間的關聯似乎不是很明顯。但是,有很多使用者沒有對《nero》做出評分。由於《nero》的平均得分為(1+7+1+7)/4=4,所以這些未知評分被4給代替。這些新項的加入明顯降低了《gladiator》和《nero》之間的協方差。然而新新增的項對《godfather》和《gladiator》之間的協方差沒有影響。填上未知評分後,3部電影中每對電影的協方差估計如下:
godfather
gladiator
nero
godfather
2.55
4.36
2.18
gladiator
4.36
9.82
3.27
nero
2.18
3.27
3.27
根據上面的統計,《godfather》和《gladiator》之間的協方差大於《gladiator》和《nero》之間的協方差。這看上去貌似不怎麼對,因為在原始表中,《gladiator》和《nero》的評分在兩者都已知的評價中是一樣的。因此,《gladiator》和《nero》之間的協方差應該更高。這個偏差可能是因為平均值填充未知項導致的。矩陣中未知項的比例越大,平均填充技術的偏差越大。
概念重構法提出使用概率技術,比如em演算法來估計協方差矩陣。假設資料符合生成模型,即把已知項看成是生成模型的輸出。對協方差矩陣的估計可以看作是生成模型引數估計的一部分。
方法:計算協方差矩陣的最大似然估計。每對物品之間的協方差僅使用已知項進行估計。也就是,使用者在某對物品上做出評價,其協方差可計算,但當沒有使用者在一對物品上做出共同評價時,協方差被估計為0。使用這種方法,得到的協方差矩陣為:
godfather
gladiator
nero
godfather
2.55
4.36
8gladiator
4.36
9.82
12nero812
12這種情況下,立刻可以看出《gladiator》和《nero》之間的協方差幾乎是《godfather》和《gladiator》之間的協方差的3倍。而且,《nero》的方差幾乎是原始估計的3倍,並是所有電影中最大的。這個例子說明修正偏差在某些情況中可以有非常明顯的效果。矩陣中未知項的比例越大,平均填充技術的偏差就越大。因此,改良的方法只利用已知項計算協方差。雖然這種方法並不總是有效,但是它比平均填充更加高階。降維後的n×d
n\times d
n×d的基矩陣p
d\mathbf p_d
pd通過選擇協方差矩陣的前d
dd個特徵向量計算得到。
上面所提方法的不足:無法解決評分矩陣過度稀疏的問題。
方法:矩陣分解法
未完待續。。。
推薦系統02 基於近鄰的推薦
推薦策略 近鄰推薦方法的關鍵點 推進系統要找到的是最優項 best item 和最優n項 top n 符號定義說明 使用者集u user 物品集i item 評價分數集合s score ru i 是使用者u對i的評分iu 是使用者u評分過的物品集合ui 是對i打過分的使用者集合iu v 同時被使用者...
基於近鄰的協同過濾
收集資料生成使用者商品評分矩陣,構建使用者或商品相似度矩陣,利用近鄰使用者或近鄰商品的評分進行加權平均求和得到當前使用者沒有瀏覽過的產品評分,選擇該使用者對沒有瀏覽過的評分topn的產品列表推薦給當前使用者 在usercf中使用pearson相似度比較多 在itemcf中使用改進余弦相似度比較多 加...
推薦系統 基於使用者的協同過濾系統
1.什麼是基於使用者的協同過濾演算法?簡單來說,給使用者推薦和她興趣相投的其她使用者喜歡的物品。2.實施步驟 a.構建使用者的特徵維度 b.求使用者間的相識度 c.計算推薦結果 還是通過乙個例子來說吧!需要注意的點 1.在計算使用者相似度的前,我們需要構建使用者的特徵矩陣,這個特徵矩陣不能用維度為電...