ALS演算法實現使用者音樂打分預測
很多人在決定是否看一部電影之前都會去豆瓣看下評分作為參考,看完電影也會給一個自己的分數。每個人對每個商品或者電影或是音樂都有一個心理的分數,這個分數標明使用者是否對這個內容滿意。作為內容的提供方,如果可以預測出每個使用者對於內容的心理分數,就能更好的理解使用者,並給使用者提供好的內容推薦。今天就介紹下如何透過ALS矩陣分解演算法實現使用者對於音樂或者電影的評分預測。
ALS演算法介紹
ALS演算法是基於模型的推薦演算法,基本思想是對稀疏矩陣進行模型分解,評估出缺失項的值,以此來得到一個基本的訓練模型。然後依照此模型可以針對新的使用者和物品資料進行評估。ALS是採用交替的最小二乘法來算出缺失項的,交替的最小二乘法是在最小二乘法的基礎上發展而來的。
從協同過濾的分類來說,ALS演算法屬於User-Item CF,也叫做混合CF,它同時考慮了User和Item兩個方面。
我們透過音樂打分這個案例介紹下交替最小二乘法的原理,首先拿到的原始資料是每個聽眾對每首歌的評分矩陣A,這個評分可能是非常稀疏的,因為不是每個使用者都聽過所有的歌,也不是每個使用者都會對每首歌評分。
ALS矩陣分解會把矩陣A分解成兩個矩陣的相乘,分別是X矩陣和Y矩陣,
矩陣A=矩陣X和矩陣Y的轉秩的乘積
x的列表示和Y的橫表示可以稱之為ALS中的因子,這個因子是有隱含定義的,這裡假設有3個因子,分別是性格、教育程度、愛好。A矩陣經過ALS分解出的X、Y矩陣可以分別表示成:
(上圖為x矩陣)
(上圖為Y矩陣)
資料經過這樣的拆解就很容易做使用者對音樂的評分預測。比如有聽眾6,他從沒聽過“紅豆“這首歌,但是我們可以拿到聽眾6在矩陣分解中X矩陣的向量M,這時候只有把向量M和”紅豆“在Y矩陣中的對應向量N相乘,就能預測出聽眾6對於”紅豆“這首歌的評分。
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]
本文作者:傲海
本文為雲棲社群原創內容,未經允許不得轉載。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69947441/viewspace-2656255/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 推薦系統入門之使用ALS演算法實現打分預測演算法
- TouchEvent實現前端錄音打分功能前端
- 音樂App評測之QQ音樂篇:音樂圈多樣演算法差評APP演算法
- css 實現打分效果CSS
- 雲音樂預案平臺實踐
- jQuery實現高仿QQ音樂jQuery
- 機器學習模型在雲音樂指標異動預測的應用實踐機器學習模型指標
- 網易雲6億使用者音樂推薦演算法演算法
- Vue 實現網易雲音樂 WebAppVueWebAPP
- QQ音樂API koa2實現 - 全介面實現API
- 雲音樂預估系統建設與實踐
- 音樂格式轉換:java程式碼實現Java
- 音樂訊號分析演算法的樂理簡說(非音樂專業的樂理)演算法
- Electron+Vue實現仿網易雲音樂實戰Vue
- Android QQ音樂/酷狗音樂鎖屏控制實現原理,酷狗鎖屏Android
- 灰色預測java實現Java
- html網頁新增音樂影片的實現示例HTML網頁
- 如何使用 pyqt 實現 Groove 音樂播放器QT播放器
- Python實現多功能音樂播放器Python播放器
- Vue 全家桶實現網易雲音樂 WebAppVueWebAPP
- 音樂播放器的實現(簡易版)播放器
- 實用音樂剪緝第三講:音樂創作
- 『阿里大資料競賽』音樂流行趨勢預測_不斷更新阿里大資料
- 【泛微E9】流程打分表實現
- 網易雲音樂音影片演算法的 Serverless 探索之路演算法Server
- HTML5 實現的音樂播放器分享HTML播放器
- vue——一個頁面實現音樂播放器Vue播放器
- 實現一個網易雲音樂的 BottomSheetDialog
- Java 簡單拼圖遊戲(實現音樂播放功能)Java遊戲
- AI音樂,騰訊音樂、網易雲音樂的新版圖?AI
- pytorch實現股票預測PyTorch
- 基於落點打分的井字棋智慧下棋演算法(C語言實現)演算法C語言
- 網易雲音樂招股書詳解 線上音樂付費使用者1600萬
- 用PHP實現開心消消樂演算法PHP演算法
- 網易雲音樂音視訊演算法的 Serverless 探索之路演算法Server
- Maven+JSP+SSM+Mysql實現的音樂網站MavenJSSSMMySql網站
- Vue之網易雲音樂橫向選單的實現Vue
- 網易雲音樂推薦系統簡單實現系列