ALS算法實現用戶音樂打分預測

不少人在決定是否看一部電影以前都會去豆瓣看下評分做爲參考,看完電影也會給一個本身的分數。每一個人對每一個商品或者電影或是音樂都有一個心理的分數,這個分數標明用戶是否對這個內容滿意。做爲內容的提供方,若是能夠預測出每一個用戶對於內容的心理分數,就能更好的理解用戶,並給用戶提供好的內容推薦。今天就介紹下如何經過ALS矩陣分解算法實現用戶對於音樂或者電影的評分預測。算法

ALS算法介紹

ALS算法是基於模型的推薦算法,基本思想是對稀疏矩陣進行模型分解,評估出缺失項的值,以此來獲得一個基本的訓練模型。而後依照此模型能夠針對新的用戶和物品數據進行評估。ALS是採用交替的最小二乘法來算出缺失項的,交替的最小二乘法是在最小二乘法的基礎上發展而來的。spa

從協同過濾的分類來講,ALS算法屬於User-Item CF,也叫作混合CF,它同時考慮了User和Item兩個方面。code

咱們經過音樂打分這個案例介紹下交替最小二乘法的原理,首先拿到的原始數據是每一個聽衆對每首歌的評分矩陣A,這個評分多是很是稀疏的,由於不是每一個用戶都聽過全部的歌,也不是每一個用戶都會對每首歌評分。blog

ALS矩陣分解會把矩陣A分解成兩個矩陣的相乘,分別是X矩陣和Y矩陣,ci

矩陣A=矩陣X和矩陣Y的轉秩的乘積

x的列表示和Y的橫表示能夠稱之爲ALS中的因子,這個因子是有隱含定義的,這裏假設有3個因子,分別是性格、教育程度、愛好。A矩陣通過ALS分解出的X、Y矩陣能夠分別表示成:get

(上圖爲x矩陣)it

(上圖爲Y矩陣)社區

數據通過這樣的拆解就很容易作用戶對音樂的評分預測。好比有聽衆6,他從沒聽過「紅豆「這首歌,可是咱們能夠拿到聽衆6在矩陣分解中X矩陣的向量M,這時候只有把向量M和」紅豆「在Y矩陣中的對應向量N相乘,就能預測出聽衆6對於」紅豆「這首歌的評分。table

ALS在PAI實驗

如今在PAI上面對ALS算法案例進行實驗。總體流程只須要包含輸入數據源和ALS矩陣分解組件便可。本案例已經集成於PAI-STUDIO首頁模板:模板

建立後如圖:

1.數據源

輸入數據源包含4個字段

  • User:用戶ID
  • Item:音樂ID
  • score:user對item的評分

2.ALS矩陣分解

須要設置3個對應字段,

參數名稱 參數描述 取值範圍 是否必選,默認值
userColName user列名 列的類型必須是bigint,能夠不連續編號 必選
itemColName item列名 列的類型必須是bigint,能夠不連續編號 必選
rateColName 打分列名 列的類型必須是數值類型 必選
numFactors 因子數 正整數 可選,默認值100
numIter 迭代數 正整數 可選,默認值10
lambda 正則化係數 浮點數 可選,默認值0.1
implicitPref 是否採用隱式偏好模型 布爾型 可選,默認值false
alpha 隱式偏好係數 浮點數,大於0 可選,默認值40

3.結果分析

本案例中會輸出2張表,對應ALS算法介紹中說的X矩陣和Y矩陣。

X矩陣表如圖:

Y矩陣表如圖:

好比要預測user1對音樂item994556636的評分,只要將下方兩個向量相乘便可

  • User1:[-0.14220297,0.8327106,0.5352268,0.6336995,1.2326205,0.7112976,0.9794858,0.8489773,0.330319,0.7426911]
  • item994556636:[0.71699333,0.5847747,0.96564907,0.36637592,0.77271074,0.52454436,0.69028413,0.2341857,0.73444265,0.8352135]

 

本文做者:傲海 

原文連接

本文爲雲棲社區原創內容,未經容許不得轉載。 

相關文章
相關標籤/搜索