第三章 研究方法
3.1 矩陣分解法
3.1.1 奇異值分解法
國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
11
第三章 研究方法
本章分為三節,第一節介紹常用的矩陣分解模型,第二節介紹分解過程中所 使用的演算法─隨機梯度下降法,第三節則介紹執行推薦系統中常用的收斂條件 及預測指標。
3.1 矩陣分解法
在矩陣分解中,其概念為將評分矩陣 𝑟
𝑢,𝑖
表示成使用者的評分行為,而𝑟𝑢,𝑖
即 表示使用者 u 對項目 i 的評分。然而,有時候使用者們不會對所有項目進行評分,造成矩陣裡有過多的元素是空缺值,也就是所謂的遺失值。因此,若我們想預測 使用者的評分行為,我們需要利用矩陣分解模型來預測評分分數。
此小節將依序介紹奇異值分解、潛在因子模型、加入偏誤項的潛在因子模 型。
3.1.1 奇異值分解法
在進行奇異值分解(Singular Value Decomposition,SVD)時,必頇先將評 分矩陣𝑅填補成完整的矩陣,而如何填補矩陣才能讓估計誤差降到最低呢?一般 的方法是用平均值進行遺失值插補,共有 m 位使用者和 n 種項目,評分矩陣為 R ∈ ℝ
𝑚×𝑛
,得到完整評分矩陣後,再進行奇異值分解。本研究將奇異值分解的 分析步驟整理如下:1. 將訓練集資料的平均值插補於稀疏的評分矩陣,得到矩陣𝑅
′
。 2. 利用奇異值分解將𝑅′
拆解成如下:𝑅
′
= 𝑈𝑆𝑉𝑇
(3.1)其中𝑈 ∈ ℝ
𝑚×𝑚
、𝑉 ∈ ℝ𝑛×𝑛
,𝑆 ∈ ℝ𝑚×𝑛
是對角矩陣,對角線上的每個元素皆 是𝑅′
的奇異值。‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
12
3. 針對𝑅
′
進行降維的動作,式子(3.1)改變如下:𝑅
𝑘 ′
= 𝑈𝑘
𝑆𝑘
𝑉𝑘 𝑇
(3.2)其中k 為分析時所取的奇異值個數,0 < k ≤ min (m, n),𝑆
𝑘
∈ ℝ𝑘×𝑘
,並將k 個奇異值對應於每個元素在 U 和 V 的行與列,即為𝑈𝑘
∈ ℝ𝑚×𝑘
、𝑉𝑘
∈ ℝ𝑛×𝑘
。 最後,𝑅𝑘 ′
為 m 位使用者與 n 種項目的預測評分矩陣,而𝑟𝑘 ′
(u,i)代表使用者 u 對項目 i 的評分預測值。其實,奇異值分解法和其他矩陣分解也存在某種關係,如主成分分析 (Principal Components Analysis,PCA),接下來將探討他們之間的關聯。
首先,令 X 是一去中心化資料(以平均值為中心移動至原點)的資料,為一 n × p的矩陣,則 X 矩陣的奇異值分解形式為
X = UΣ𝑊
𝑇
其中Σ為n × p的對角矩陣,對角線上的元素為非負整數。U為n × n的矩陣,且為 X𝑋
𝑇
的奇異向量。𝑊為p × p的矩陣,且為𝑋𝑇
𝑋的奇異向量。則𝑋
𝑇
𝑋可以表示成𝑋
𝑇
𝑋 = WΣ𝑈𝑇
UΣ𝑊𝑇
= 𝑊Σ2
𝑊𝑇
當𝑋
𝑇
𝑋的特徵值開根號等於 X 的奇異值時,則𝑋𝑇
𝑋的特徵向量矩陣會等於 X 奇異 值分解中的 W 矩陣。因此我們將主成分分析中的 T 矩陣,又稱 score matrix,以奇異值分解方式呈現,如下:
T = XW = UΣ𝑊
𝑇
𝑊 = UΣ由上述運算式子我們可以知道,主成分分析中的 T 矩陣可藉由奇異值分解來 完成,它不需要經過多一步的計算𝑋
𝑇
𝑋,能夠更有效率的得到主成分分析的結果,這也是為何現行大部分都使用奇異值分解演算法來計算主成分分析的矩陣。
‧
2006 年, Funk 在部落格發表關於矩陣分解的模型,稱為 Funk-SVD。後來 此模型被 Netflix Prize 的冠軍 Koren 等人稱為 Latent Factor Model,即潛在 因子模型,簡稱 LFM。
‧
研究的潛在因子數設定為 40 個來進行分析。利用五摺交叉驗證(Five-Fold Cross Validation)來選取最佳的𝜆、𝛼。一般而言,探討模型預測能力的實驗是將資料 切成訓練資料 (training set)、驗證資料(validation set)與測詴資料(test set),以訓練資料與驗證資料得出適當模型後,再以測詴資料得出的預測誤差為 最後比較的依據,本研究為了與張良卉的結果做對照,僅將資料切成訓練資料與 驗證資料,並以驗證資料的預測誤差做為比較的依據。具體來說,給定 15 組𝜆值和 10 組𝛼值,針對資料每組𝜆、𝛼,我們進行作法 如下:
1. 將資料分為五組,每次這遮住一組資料(20%)當作驗證資料(validate data),
利用剩下四組資料當作訓練集(Training Set)建立模型。
2. 根據建立出的模型預測數值,比較預測數值和驗證資料的實際值,計算各組 的平均平方根誤差(Root Mean Square Error,RMSE)。
3. 將五組 RMSE 取平均觀察預測的結果,即是交叉驗證的預測誤差。
4. 比較 15 組𝜆值和 10 組𝛼值所對應的預測誤差,最小的預測誤差所對應的組 合就是我們要選取的值。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
15
決定𝜆和𝛼後,本研究使用矩陣分解的步驟如下:
1. 將資料分為訓練集(80%)與測詴集(20%)。
2. 給定潛在因子數、正規化參數、學習速率。
3. 隨機生成 P、Q 矩陣。
4. 計算評分誤差,即𝑒
𝑢.𝑖
= 𝑟𝑢,𝑖
− 𝑟̂𝑢,𝑖
,其中𝑟̂𝑢,𝑖
使用(2.5)計算而得到。5. 利用遞迴式(3.5)、(3.6)重複計算𝑝
𝑢,𝑘
和𝑞𝑖,𝑘
,得到 P、Q。6. P 矩陣與 Q 矩陣代入方程式(3.3),得到預測評分矩陣。
7. 迭代 1 次至 300 次,紀錄結果並計算 300 次的 RMSE。
Koren 等人(2009)認為,為了改進矩陣分解的預測精準度,項目評分不只受 到使用者對於項目特性的喜好𝑝
𝑢
以及項目所具備的特性𝑞𝑖
影響,還包括使用者自 己的衡量準則、項目本身的優異程度的影響。因此,將各別使用者偏誤𝑏𝑢
與項目 偏誤𝑏𝑖
加入評分矩陣,利用偏誤𝑏𝑢,𝑖
= μ + 𝑏𝑢
+ 𝑏𝑖
來修正預測評分,那麼原始的 預測評分式子(2.5)則變成如下:𝑟̂ = 𝑏
𝑢,𝑖 𝑢,𝑖
+ 𝑝𝑢 𝑇
𝑞𝑖
= μ + 𝑏𝑢
+ 𝑏𝑖
+ ∑𝐹 𝑘=1
𝑝𝑢,𝑘
𝑞𝑖,𝑘
(3.7) 其中μ、𝑏𝑢
、𝑏𝑖
為一實數,模型中新增加的三項變數其概念如下: μ:訓練集中所有紀錄的評分的平均數,在不同網路零售業中,商店本身的 定位與銷售產品就截然不同,因此線上購物商店的整體評分也有所不同。例 如有些商店的使用者傾向評低分,有些喜歡評高分,而訓練集平均數可以表 示線上購物商店本身對使用者的影響。
𝑏
𝑢
:使用者偏誤項(User Bias)。表示使用者的評分習慣,但和物品本身沒 有關係。例如有些使用者評分非常嚴苛,斤斤計較,那麼他評分通常都會偏 低。有些使用者要求不多,買一樣愛一樣,對任何產品都覺得不錯,那他的 評分就會偏高。‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
16
𝑏
𝑖
:項目偏誤項(Item Bias)。表示項目接受的評分中與使用者沒有關係的 因素。比如某些產品本身的品質非常好,因此獲得的評分相對都比其他產品 高分,而有些產品用料不好,品質不優,獲得的評分也就偏低了。了解(3.7)式後,我們接下來利用正規化最小平方法與隨機梯度下降法解出 μ、𝑏
𝑢
、𝑏𝑖
、p、q,如下:𝑚𝑖𝑛
𝐵,𝐷𝑝,𝑞
∑ (𝑟𝑢,𝑖
− μ + 𝑏𝑢
+ 𝑏𝑖
+ 𝑝𝑢 𝑇
𝑞𝑖
)2
(𝑢,𝑖)∈𝑇𝑟𝑎𝑖𝑛 𝑠𝑒𝑡
+𝜆(‖𝑝
𝑢
‖2
+ ‖𝑞𝑖
‖2
+ ‖𝑏𝑢
‖2
+ ‖𝑏𝑖
‖2
)其中𝑏
𝑢
第 u 位使用者的偏誤項,𝑏𝑖
為第 i 項產品的偏誤項。而 B 為所有使用者的 集合,B ∈ ℝ𝑚×1
,B = (𝑏1
, ⋯ 𝑏𝑚
),D 為所有項目的集合,D ∈ ℝ𝑛×1
,D = (𝑏1
, ⋯ 𝑏𝑛
),P ∈ ℝ
𝑘×𝑚
,Q ∈ ℝ𝑘×𝑛
、𝑝𝑢
∈ ℝ1×𝑘
,𝑞𝑖
∈ ℝ1×𝑘
。 根據隨機梯度下降法可以解出得到下列式子:𝑏
𝑢 ←
𝑏𝑢
+ 𝛼(𝑒𝑢,𝑖
− 𝜆𝑏𝑢
) (3.8) 𝑏𝑖 ←
𝑏𝑖
+ 𝛼(𝑒𝑢,𝑖
− 𝜆𝑏𝑖
) (3.9) 𝑝𝑢,𝑘 ←
𝑝𝑢,𝑘
+ 𝛼(𝑒𝑢,𝑖
𝑞𝑖,𝑘
− 𝜆𝑝𝑢,𝑘
)𝑞
𝑖,𝑘 ←
𝑞𝑖,𝑘
+ 𝛼(𝑒𝑢,𝑖
𝑝𝑢,𝑘
− 𝜆𝑞𝑖,𝑘
)其中𝛼是學習速率,𝜆是正規化參數,𝑒
𝑢,𝑖
為𝑟𝑢,𝑖
和𝑟̂𝑢,𝑖
的誤差值。同樣地,給定 15 組𝜆值和 10 組𝛼值,利用五摺交叉驗證(Five-Fold Cross Validation)來選取最佳的𝜆、𝛼,交叉驗證步驟與矩陣分解步驟和前面未加入偏 誤項的模型相似。第三步改為先計算出計算訓練集的平均值,接著隨機生成 P、
Q 矩陣以及所有使用者偏差項的集合 B 與所有產品項目偏差項的集合 D。第五步 中還需要利用遞迴式(3.8)、(3.9)重複計算𝑏