如何用ALS算法實現(xiàn)用戶音樂打分預(yù)測,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
成都創(chuàng)新互聯(lián)公司長期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為岑鞏企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、成都網(wǎng)站制作,岑鞏網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。ALS算法介紹
ALS算法是基于模型的推薦算法,基本思想是對稀疏矩陣進(jìn)行模型分解,評估出缺失項的值,以此來得到一個基本的訓(xùn)練模型。然后依照此模型可以針對新的用戶和物品數(shù)據(jù)進(jìn)行評估。ALS是采用交替的最小二乘法來算出缺失項的,交替的最小二乘法是在最小二乘法的基礎(chǔ)上發(fā)展而來的。
從協(xié)同過濾的分類來說,ALS算法屬于User-Item CF,也叫做混合CF,它同時考慮了User和Item兩個方面。
我們通過音樂打分這個案例介紹下交替最小二乘法的原理,首先拿到的原始數(shù)據(jù)是每個聽眾對每首歌的評分矩陣A,這個評分可能是非常稀疏的,因為不是每個用戶都聽過所有的歌,也不是每個用戶都會對每首歌評分。
ALS矩陣分解會把矩陣A分解成兩個矩陣的相乘,分別是X矩陣和Y矩陣,
矩陣A=矩陣X和矩陣Y的轉(zhuǎn)秩的乘積
x的列表示和Y的橫表示可以稱之為ALS中的因子,這個因子是有隱含定義的,這里假設(shè)有3個因子,分別是性格、教育程度、愛好。A矩陣經(jīng)過ALS分解出的X、Y矩陣可以分別表示成:
(上圖為x矩陣)
(上圖為Y矩陣)
數(shù)據(jù)經(jīng)過這樣的拆解就很容易做用戶對音樂的評分預(yù)測。比如有聽眾6,他從沒聽過“紅豆“這首歌,但是我們可以拿到聽眾6在矩陣分解中X矩陣的向量M,這時候只有把向量M和”紅豆“在Y矩陣中的對應(yīng)向量N相乘,就能預(yù)測出聽眾6對于”紅豆“這首歌的評分。
現(xiàn)在在PAI上面對ALS算法案例進(jìn)行實驗。整體流程只需要包含輸入數(shù)據(jù)源和ALS矩陣分解組件即可。本案例已經(jīng)集成于PAI-STUDIO首頁模板:
創(chuàng)建后如圖:
輸入數(shù)據(jù)源包含4個字段
User:用戶ID
Item:音樂ID
score:user對item的評分
需要設(shè)置3個對應(yīng)字段,
參數(shù)名稱 | 參數(shù)描述 | 取值范圍 | 是否必選,默認(rèn)值 |
---|---|---|---|
userColName | user列名 | 列的類型必須是bigint,可以不連續(xù)編號 | 必選 |
itemColName | item列名 | 列的類型必須是bigint,可以不連續(xù)編號 | 必選 |
rateColName | 打分列名 | 列的類型必須是數(shù)值類型 | 必選 |
numFactors | 因子數(shù) | 正整數(shù) | 可選,默認(rèn)值100 |
numIter | 迭代數(shù) | 正整數(shù) | 可選,默認(rèn)值10 |
lambda | 正則化系數(shù) | 浮點數(shù) | 可選,默認(rèn)值0.1 |
implicitPref | 是否采用隱式偏好模型 | 布爾型 | 可選,默認(rèn)值false |
alpha | 隱式偏好系數(shù) | 浮點數(shù),大于0 | 可選,默認(rèn)值40 |
本案例中會輸出2張表,對應(yīng)ALS算法介紹中說的X矩陣和Y矩陣。
X矩陣表如圖:
Y矩陣表如圖:
比如要預(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]
看完上述內(nèi)容,你們掌握如何用ALS算法實現(xiàn)用戶音樂打分預(yù)測的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!