天天看點

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

三、Spark MLlib應用

3.1、Spark ML線性模型

  • 資料準備

    基于Spark ML的線性模型需要DataFrame類型的模型資料,DataFrame需要包含:一列标簽列,一列由多個特征合并得到的特征列

  • 訓練模型
    學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用
  • 模型應用
    學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用
    學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用
  • 模型評估
    學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

任務1:

某專門面向年輕人制作肖像的公司計劃在國内再開設幾家分店,收集了目前已開設的分店的銷售資料(Y,萬元)及分店所在城市的16歲以下人數(X1,萬人)、人均可支配收入(X2,元)

要求:建構線性回歸模型,分析銷售資料與16歲以下人數(X1,萬人)、人均可支配收入(X2,元)的關系

資料 regressiondata.txt:

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

上傳到hdfs:

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

處理線性回歸模型資料:

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

建構線性回歸模型:

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

預測:

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

均方誤差:

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

3.2、協同過濾簡介

  • 協同過濾推薦(Collaborative Filtering recommendation)是一項在資訊過濾和資訊系統中很受歡迎的技術。與傳統的基于内容過濾直接分析内容進行推薦不同,協同過濾分析使用者興趣,在使用者群中找到指定使用者的相似(興趣)使用者,綜合這些相似使用者對某一資訊的評價,形成系統對該指定使用者對此資訊的喜好程度預測。
  • 協同過濾一般分為基于使用者的協同過濾和基于物品的協同過濾。基于使用者的協同過濾是依據使用者之間的相似性,将相似性高的使用者對于某種物品的喜好進行計算,進而推測指定使用者對于該物品的喜好

3.2.1、基于使用者的協同過濾

小明和小麗都喜歡A、C,說明小明小麗興趣比較相似,可把小明喜歡的B推薦給小麗,小麗喜歡的D推薦給小明

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

3.2.2、基于物品的協同過濾

小明喜歡A、B和C,小麗喜歡A、C和D,小張喜歡B、E和F。觀察三人擁有的物品,可以知道擁有A的也擁有C,可知A、C的關聯程度很高,即A、C相似度很高。如果此時指定使用者已經擁有A,顯然應該把C推薦給該使用者最合适。

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

3.2.3、基于ALS的協同過濾

從協同過濾的分類來說,ALS算法屬于User-Item CF,也叫做混合CF。它同時考慮了User和Item兩個方面。

ALS是交替最小二乘的簡稱。在機器學習中,ALS特指使用交替最小二乘求解的一個協同過濾算法。它通過觀察到的所有使用者給産品的打分,來推斷每個使用者的喜好并向使用者推薦适合的産品。

ALS算法不像基于使用者或者基于物品的協同過濾算法一樣,通過計算相似度來進行評分預測和推薦,而是通過矩陣分解的方法來進行預測使用者對物品的評分。

3.3、Spark ML ALS

官網:http://spark.apache.org/docs/latest/ml-features.html#vectorindexer
  • 資料準備

    需要3個列,使用者列、物品列、評分列

  • 模型建構
    學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用
  • 模型應用
    學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用
    學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用
  • 模型評估
    學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用
    學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

任務2:

現有一份資料,記錄了使用者對電影的評分,如下所示,包括使用者id、電影id、評分。

要求:根據使用者的電影評分記錄,通過協同過濾算法計算使用者之間的相似度,為使用者進行電影推薦。

資料 sample_movielens_data.txt:

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

上傳到hdfs:

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

建構ALS算法進行電影推薦:

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

預測:

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

均方誤差:

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

給參與使用者推薦:

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

給參與模型建構的商品推薦相似商品:

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

3.4、在IDEA實作ALS

在IDEA建立Spark工程見我部落格:學習筆記Spark(五)—— 配置Spark IDEA開發環境

3.4.1、實作ALS資料處理過程

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

3.4.2、實作ALS模型建構過程

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

3.4.3、實作ALS預測與評估過程

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

3.4.4、實作ALS模型推薦過程

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

3.4.5、送出ALS電影推薦模型到叢集

① 将程式打包成jar包,并上傳到linux的

/opt

目錄下

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

② spark-submit送出到叢集

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用
學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用
學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

推薦結果記錄:

學習筆記Spark(十)—— Spark MLlib應用(2)—— Spark MLlib應用三、Spark MLlib應用

繼續閱讀