推薦系統之ALS演算法詳解

2021-10-03 18:30:36 字數 2298 閱讀 6818

als演算法是2023年以來,用的比較多的協同過濾演算法。它已經整合到spark的mllib庫中,使用起來比較方便。

從協同過濾的分類來說,als演算法屬於user-item cf,也叫做混合cf。它同時考慮了user和item兩個方面。

使用者和商品的關係,可以抽象為如下的三元組:。其中,rating是使用者對商品的評分,表徵使用者對該商品的喜好程度。

als演算法是基於模型的推薦演算法。起基本思想是對稀疏矩陣進行模型分解,評估出缺失項的值,以此來得到乙個基本的訓練模型。然後依照此模型可以針對新的使用者和物品資料進行評估。als是採用交替的最小二乘法來算出缺失項的。交替的最小二乘法是在最小二乘法的基礎上發展而來的。

假設我們有一批使用者資料,其中包含m個user和n個item,則我們定義rating矩陣,其中的元素表示第u個user對第i個item的評分。

一般情況下,k的值遠小於n和m的值,從而達到了資料降維的目的。在實際使用中,由於n和m的數量都十分巨大,因此r矩陣的規模很容易就會突破1億項。這時候,傳統的矩陣分解方法對於這麼大的資料量已經是很難處理了。

另一方面,乙個使用者也不可能給所有商品評分,因此,r矩陣注定是個稀疏矩陣。矩陣中所缺失的評分,又叫做missing item。

針對這樣的特點,我們可以假設使用者和商品之間存在若干關聯維度(比如使用者年齡、性別、受教育程度和商品的外觀、**等),我們只需要將r矩陣投射到這些維度上即可。這個投射的數學表示是:

這裡的表明這個投射只是乙個近似的空間變換。一般情況下,k的值遠小於n和m的值,從而達到了資料降維的目的。

幸運的是,我們並不需要顯式的定義這些關聯維度,而只需要假定它們存在即可,因此這裡的關聯維度又被稱為latent factor。k的典型取值一般是20~200。

這種方法被稱為概率矩陣分解演算法(probabilistic matrix factorization,pmf)。als演算法是pmf在數值計算方面的應用。

為了使低秩矩陣x和y盡可能地逼近r,需要最小化下面的平方誤差損失函式:

考慮到矩陣的穩定性問題,使用tikhonov regularization,則上式變為:

優化上式,得到訓練結果矩陣。**時,將user和item代入,即可得到相應的評分**值。

同時,矩陣x和y,還可以用於比較不同的user(或item)之間的相似度,如下圖所示

als演算法的缺點在於:

1.它是乙個離線演算法。

2.無法準確評估新加入的使用者或商品。這個問題也被稱為cold start問題。

使用者給商品評分是個非常簡單粗暴的使用者行為。在實際的電商**中,還有大量的使用者行為,同樣能夠間接反映使用者的喜好,比如使用者的購買記錄、搜尋關鍵字,甚至是滑鼠的移動。我們將這些間接使用者行為稱之為隱式反饋(implicit feedback),以區別於評分這樣的顯式反饋(explicit feedback)。

隱式反饋有以下幾個特點:

1.沒有負面反饋(negative feedback)。使用者一般會直接忽略不喜歡的商品,而不是給予負面評價。

3.顯式反饋表現的是使用者的喜好(preference),而隱式反饋表現的是使用者的信任(confidence)。比如使用者最喜歡的一般是電影,但**時間最長的卻是連續劇。大公尺購買的比較頻繁,量也大,但未必是使用者最想吃的食物。

4.隱式反饋非常難以量化。

ALS推薦系統實戰

拿到某超市的銷售資料,將資料整理後得到一年三千萬條交易記錄,想試試用spark中的推薦系統做一下 先把資料匯入到hdfs中,資料需要使用者id,商品id,和購買次數,這裡我拿購買次數當作電影推薦系統中的電影評分 hdfs中的資料用 分割開。如下 461365 22535 1.0 461365 505...

推薦系統ALS矩陣分解

思想類似線性回歸做 大致如下 定義乙個 模型 數學公式 然後確定乙個損失函式,將已有資料作為訓練集,不斷迭代來最小化損失函式的值,最終確定引數,把引數套到 模型中做 矩陣分解的 模型是 損失函式是 我們就是要最小化損失函式,從而求得引數q和p。矩陣分解模型的物理意義 我們希望學習到乙個p代表user...

推薦 基於Spark的ALS演算法

als alternating least squares 交替最小二乘法 在現實中使用者 物品 評分矩陣是及其大的,使用者消費有限,對單個使用者來說,消費的物品的非常有限的,產生的評分也是比較少的,這樣就造成了使用者 物品矩陣有大量的空值。假定使用者的興趣只受少數因素的影響,所以使用者 物品矩陣可...