1. 程式人生 > >spark高階資料分析-推薦系統(學習筆記)

spark高階資料分析-推薦系統(學習筆記)

1.資料準備

資料集地址
http://www-etud.iro.umontreal.ca/~bergstrj/audioscrobbler_data.html
主要的資料集在檔案user_artist_data.txt 中,它包含141 000 個使用者和160 萬個藝術家,記錄了約2420 萬條使用者播放藝術家歌曲的資訊,其中包括播放次數資訊。資料集在artist_data.txt 檔案中給出了每個藝術家的ID 和對應的名字。請注意,記錄播放資訊時,客戶端應用提交的是藝術家的名字。名字如果有拼寫錯誤,或使用了非標準的名稱,事後才能被發現。比如,“The Smiths”“Smiths, The”和“the smiths”看似代表不同藝術家的ID,但它們其實明顯是指同一個藝術家。因此,為了將拼寫錯誤的藝術家ID 或ID 變體對應到該藝術家的規範ID,資料集提供了artist_alias.txt 檔案。

2.交替最小二乘推薦演算法

(http://en.wikipedia.org/wiki/Factor_analysis
矩陣分解(http://en.wikipedia.org/wiki/Nonnegative_matrix_factorization
QR 分解(http://en.wikipedia.org/wiki/QR_decomposition
SVD,也稱為矩陣補全,把稀疏矩陣X分解為兩個稠密‘瘦’矩陣,X,Y。
為了求解X 和Y 時,本章使用交替最小二乘(Alternating Least Squares,ALS)演算法。
雖然Y 是未知的,但我們可以把它初始化為隨機行向量矩陣。接著運用簡單的線性代數,
就能在給定A 和Y 的條件下求出X 的最優解。實際上,X 的第i 行是A 的第i 行和Y 的函
數,因此可以很容易分開計算X 的每一行。因為X 的每一行可以分開計算,所以我們可以
將其並行化,而並行化是大規模計算的一大優點。
A_iY/(Y’Y)= X_i
要想兩邊精確相等是不可能的,因此實際的目標是最小化|A_iY/(Y’Y) -Xi|,或者最小化兩個矩陣的平方誤差。

3.資料準備