学习笔记Spark(十)—— Spark MLlib应用(2)—— Spark MLlib应用
三、Spark MLlib應(yīng)用
3.1、Spark ML線性模型
-
數(shù)據(jù)準(zhǔn)備
基于Spark ML的線性模型需要DataFrame類型的模型數(shù)據(jù),DataFrame需要包含:一列標(biāo)簽列,一列由多個特征合并得到的特征列 -
訓(xùn)練模型
-
模型應(yīng)用
-
模型評估
任務(wù)1:
某專門面向年輕人制作肖像的公司計劃在國內(nèi)再開設(shè)幾家分店,收集了目前已開設(shè)的分店的銷售數(shù)據(jù)(Y,萬元)及分店所在城市的16歲以下人數(shù)(X1,萬人)、人均可支配收入(X2,元)
要求:構(gòu)建線性回歸模型,分析銷售數(shù)據(jù)與16歲以下人數(shù)(X1,萬人)、人均可支配收入(X2,元)的關(guān)系
數(shù)據(jù) regressiondata.txt:
上傳到hdfs:
處理線性回歸模型數(shù)據(jù):
構(gòu)建線性回歸模型:
預(yù)測:
均方誤差:
3.2、協(xié)同過濾簡介
- 協(xié)同過濾推薦(Collaborative Filtering recommendation)是一項在信息過濾和信息系統(tǒng)中很受歡迎的技術(shù)。與傳統(tǒng)的基于內(nèi)容過濾直接分析內(nèi)容進(jìn)行推薦不同,協(xié)同過濾分析用戶興趣,在用戶群中找到指定用戶的相似(興趣)用戶,綜合這些相似用戶對某一信息的評價,形成系統(tǒng)對該指定用戶對此信息的喜好程度預(yù)測。
- 協(xié)同過濾一般分為基于用戶的協(xié)同過濾和基于物品的協(xié)同過濾。基于用戶的協(xié)同過濾是依據(jù)用戶之間的相似性,將相似性高的用戶對于某種物品的喜好進(jìn)行計算,從而推測指定用戶對于該物品的喜好
3.2.1、基于用戶的協(xié)同過濾
小明和小麗都喜歡A、C,說明小明小麗興趣比較相似,可把小明喜歡的B推薦給小麗,小麗喜歡的D推薦給小明
3.2.2、基于物品的協(xié)同過濾
小明喜歡A、B和C,小麗喜歡A、C和D,小張喜歡B、E和F。觀察三人擁有的物品,可以知道擁有A的也擁有C,可知A、C的關(guān)聯(lián)程度很高,即A、C相似度很高。如果此時指定用戶已經(jīng)擁有A,顯然應(yīng)該把C推薦給該用戶最合適。
3.2.3、基于ALS的協(xié)同過濾
從協(xié)同過濾的分類來說,ALS算法屬于User-Item CF,也叫做混合CF。它同時考慮了User和Item兩個方面。
ALS是交替最小二乘的簡稱。在機(jī)器學(xué)習(xí)中,ALS特指使用交替最小二乘求解的一個協(xié)同過濾算法。它通過觀察到的所有用戶給產(chǎn)品的打分,來推斷每個用戶的喜好并向用戶推薦適合的產(chǎn)品。
ALS算法不像基于用戶或者基于物品的協(xié)同過濾算法一樣,通過計算相似度來進(jìn)行評分預(yù)測和推薦,而是通過矩陣分解的方法來進(jìn)行預(yù)測用戶對物品的評分。
3.3、Spark ML ALS
官網(wǎng):http://spark.apache.org/docs/latest/ml-features.html#vectorindexer
- 數(shù)據(jù)準(zhǔn)備
需要3個列,用戶列、物品列、評分列 - 模型構(gòu)建
- 模型應(yīng)用
- 模型評估
任務(wù)2:
現(xiàn)有一份數(shù)據(jù),記錄了用戶對電影的評分,如下所示,包括用戶id、電影id、評分。
要求:根據(jù)用戶的電影評分記錄,通過協(xié)同過濾算法計算用戶之間的相似度,為用戶進(jìn)行電影推薦。
數(shù)據(jù) sample_movielens_data.txt:
上傳到hdfs:
構(gòu)建ALS算法進(jìn)行電影推薦:
預(yù)測:
均方誤差:
給參與用戶推薦:
給參與模型構(gòu)建的商品推薦相似商品:
3.4、在IDEA實現(xiàn)ALS
在IDEA創(chuàng)建Spark工程見我博客:學(xué)習(xí)筆記Spark(五)—— 配置Spark IDEA開發(fā)環(huán)境
3.4.1、實現(xiàn)ALS數(shù)據(jù)處理過程
3.4.2、實現(xiàn)ALS模型構(gòu)建過程
3.4.3、實現(xiàn)ALS預(yù)測與評估過程
3.4.4、實現(xiàn)ALS模型推薦過程
3.4.5、提交ALS電影推薦模型到集群
① 將程序打包成jar包,并上傳到linux的/opt目錄下
② spark-submit提交到集群
推薦結(jié)果記錄:
總結(jié)
以上是生活随笔為你收集整理的学习笔记Spark(十)—— Spark MLlib应用(2)—— Spark MLlib应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记Spark(九)—— Spark
- 下一篇: 学习笔记Flink(一)—— Flink