不少人在決定是否看一部電影以前都會去豆瓣看下評分做爲參考,看完電影也會給一個本身的分數。每一個人對每一個商品或者電影或是音樂都有一個心理的分數,這個分數標明用戶是否對這個內容滿意。做爲內容的提供方,若是能夠預測出每一個用戶對於內容的心理分數,就能更好的理解用戶,並給用戶提供好的內容推薦。今天就介紹下如何經過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
如今在PAI上面對ALS算法案例進行實驗。總體流程只須要包含輸入數據源和ALS矩陣分解組件便可。本案例已經集成於PAI-STUDIO首頁模板:模板
建立後如圖:
輸入數據源包含4個字段
須要設置3個對應字段,
參數名稱 | 參數描述 | 取值範圍 | 是否必選,默認值 |
---|---|---|---|
userColName | user列名 | 列的類型必須是bigint,能夠不連續編號 | 必選 |
itemColName | item列名 | 列的類型必須是bigint,能夠不連續編號 | 必選 |
rateColName | 打分列名 | 列的類型必須是數值類型 | 必選 |
numFactors | 因子數 | 正整數 | 可選,默認值100 |
numIter | 迭代數 | 正整數 | 可選,默認值10 |
lambda | 正則化係數 | 浮點數 | 可選,默認值0.1 |
implicitPref | 是否採用隱式偏好模型 | 布爾型 | 可選,默認值false |
alpha | 隱式偏好係數 | 浮點數,大於0 | 可選,默認值40 |
本案例中會輸出2張表,對應ALS算法介紹中說的X矩陣和Y矩陣。
X矩陣表如圖:
Y矩陣表如圖:
好比要預測user1對音樂item994556636的評分,只要將下方兩個向量相乘便可
本文做者:傲海
本文爲雲棲社區原創內容,未經容許不得轉載。