推薦 基於Spark的ALS演算法

2021-08-07 13:33:38 字數 1289 閱讀 2924

als(alternating least squares ):交替最小二乘法

在現實中使用者-物品-評分矩陣是及其大的,使用者消費有限,對單個使用者來說,消費的物品的非常有限的,產生的評分也是比較少的,這樣就造成了使用者-物品矩陣有大量的空值。 

假定使用者的興趣只受少數因素的影響,所以使用者-物品矩陣可以分解為使用者的特徵向量矩陣和物品的特徵向量矩陣(降維了)。使用者的特徵向量距離表示使用者的興趣(u),物品的特徵向量矩陣代表使用者的特點(v),合起來(內積)表示使用者對物品的特點的興趣,也就是喜好程度。 

m=u*v

矩陣的奇異值分解是最簡單的一種矩陣分解演算法,主要是在u*v中間加了個乙個奇異值矩陣,公式如下: 

m=u*(奇異值矩陣)*(v的共軛) 

奇異值矩陣是對角矩陣,奇異值分解的缺點(沒試過不知道,書上說的),1不允許分解矩陣有null值,需要進行填分,2如果填分,又有兩個問題:1增加資料量,增加演算法複雜度,2簡單粗暴的填分方式會導致資料失真,如果將null值設定為0,那麼會導致過度學習問題。 

奇異值分解方式,感覺用的不多,我自己接觸的話。

原理

下面從文獻1中取材,來講解這個交替最小二乘法在推薦系統中應用的問題。如下圖,對於乙個r(觀眾對電影

的乙個評價矩陣)可以分解為u(觀眾的特徵矩陣)和v(電影的特徵矩陣)

現在假如觀眾有5個人,電影有5部,那麼r就是乙個5*5的矩陣。假設評分如下:

假設d是三個屬性(性格,文化程度,興趣愛好)那麼u的矩陣如下:

v的矩陣如下:

為什麼是交替,從處理步驟來看就是確定v,來優化u,再來優化v,再來優化u,。。。。直到收斂

因為採用梯度下降和最小二乘都可以解決這個問題,在此不寫**來講如何決定引數,可以看前面的最小二乘或者梯度下降演算法。

spark 2 3 ml 協同過濾推薦演算法ALS

一.spark ml 協同過濾推薦演算法 相似度演算法 在spark mllib中提供了余弦相似度的分布式實現,org.apache.spark.mllib.linalg.distributed包中的indexedrowmatrix是乙個分布式矩陣類,其中提供了乙個columnsimilaritie...

推薦系統之ALS演算法詳解

als演算法是2008年以來,用的比較多的協同過濾演算法。它已經整合到spark的mllib庫中,使用起來比較方便。從協同過濾的分類來說,als演算法屬於user item cf,也叫做混合cf。它同時考慮了user和item兩個方面。使用者和商品的關係,可以抽象為如下的三元組 其中,rating是...

基於Spark的電影推薦系統(推薦系統 1)

行業背景 快速 apache spark以記憶體計算為核心 通用 一站式解決各個問題,adhoc sql查詢,流計算,資料探勘,圖計算 完整的生態圈 只要掌握spark,就能夠為大多數的企業的大資料應用場景提供明顯的加速 猜你喜歡 為代表的推薦系統,從吃穿住行等專案背景介紹 本專案是乙個基於apac...