交替最小二乘法

2021-08-07 16:16:18 字數 2517 閱讀 3107

矩陣的奇異值分解 svd

(特別詳細的總結,參考 

1)低秩近似

2)特徵降維

相似度和距離度量

(參考 

)在機器學習中,als指使用交替最小二乘求解的乙個協同推薦演算法。

每一行代表乙個使用者(u1,u2,…,u8),每一列代表乙個商品(v1,v2,…,v8),使用者的打分為1-9分。

這個矩陣只顯示了觀察到的打分,我們需要推測沒有觀察到的打分。

換句話說,就是乙個m*n的打分矩陣可以由分解的兩個小矩陣u(m*k)v(k*n)的乘積來近似,即 a=uvt,k<=m,n。這就是als的矩陣分解方法。

這樣我們把系統的自由度從o(mn)降到了o((m+n)k)

這個低維空間要能夠很好的區分事物,那麼就需要乙個明確的可量化目標,這就是重構誤差

als中我們使用f範數來量化重構誤差,就是每個元素重構誤差的平方和。這裡存在乙個問題,我們只觀察到部分打分,a中的大量未知元是我們想推斷的,所以這個重構誤差是包含未知數的。

解決方案很簡單:只計算已知打分的重構誤差。

協同過濾分析使用者以及使用者相關的產品的相關性,用以識別新的使用者-產品相關性。

協同過濾系統需要的唯一資訊是使用者過去的行為資訊,比如對產品的評價資訊。

通過內積rij = ui

t vj 來**,另外加入正則化引數 lamda 來預防過擬合

最小化重構誤差:

偏好:二元變數 ,它表示使用者u對商品v的偏好

信任度:變數 ,它衡量了我們觀察到的信任度

最小化損失函式:

1)顯示和隱式的異同:

2) 交替最小二乘求解:

即固定uivi+1再固定vi+1ui+1

importorg.apache.spark.mllib.recommendation._<br>//處理訓練資料

valdata=sc.textfile("data/mllib/als/test.data")

valratings=data.map(_.split(',')match)

// 使用als訓練推薦模型

valrank=10

valnumiterations=10

valmodel=als.train(ratings, rank, numiterations,0.01)

Spark MLlib交替最小二乘法ALS原始碼解析

請先閱讀leboop發布的博文 spark mllib協同過濾之交替最小二乘法als原理與實踐 核心 如下 定義als,引數初始化 val als new als setrank 50 setmaxiter 10 setregparam 0.01 setusercol userid setitemc...

可交替的最小二乘法(ALS WR)

為什麼要在推薦系統中用隱式因子分解 隱語義模型?因為在實際專案中,我們的使用者很多專案都是沒有評分的,並且很多情況下評分值都是缺失的。或者很稀疏。那麼我們分解為使用者因子矩陣和專案因子矩陣,然後在低維空間進行計算,這樣的話資料會更加稠密。然後反過來我們來 缺失值,這就是目的。在這裡為什麼不用隨機梯度...

最小二乘法

include stdafx.h include include const int n 2 const int m 5 int sgn double x void lss double g n 1 int xm,int xn,double x m double p,double w m lss函式...