前言:
最後一週,只有Lab.而最後一個Lab其實也接著之後的進階課程Scalable Machine Learning. 所以最後一次的Lab開始介紹Spark關於Machine Learning的部分.喜好電影預測是個很有趣,很實用的課題.
相關文章
edx 課程網址在這裡 https://www.edx.org/course/introduction-big-data-apache-spark-uc-berkeleyx-cs100-1x
- [MOOCS:edx]BerkeleyX CS100.1x- Introduction to Big Data with Apache Spark (一)
- [MOOCS:edx]BerkeleyX CS100.1x- Introduction to Big Data with Apache Spark (二)
- [MOOCS:edx]BerkeleyX CS100.1x- Introduction to Big Data with Apache Spark (三)
- [MOOCS:edx]BerkeleyX CS100.1x- Introduction to Big Data with Apache Spark (四)
Lab4 - Predicting Movie Ratings
這一次的Lab主要是要做透過使用者對於喜愛電影的評分,加上從MovieLen上面超過10M資料抽出50萬筆一般大眾的評分資料.來預測你可能會喜歡的電影.運用的技術是所謂的“協同過濾”(Collaborative filtering)的方式來達成.
簡單的概念就是: 如果一般人喜歡A電影的同時,大多也喜歡B電影.當你輸入你喜歡A電影的時候,系統就會預測出你可能也喜歡B電影.
上面的圖片可以有一個簡單的概述,也就是透過以下流程達成:
- 建立參考數值(也就是我們所認知的一般人喜好)
- 計算每部電影的平均評分跟評分個數
- 找出500個評分以上的資料.這些資料要來當作預測數值衡量基準.
- 訓練模型
- 找出訓練的資料群組
- 針對Matrix Factorization Model的資料類型,Spark提供ALS.train的方式來train
- 計算出預測出的RMSE(Root Mean Square Error),也就是與大眾偏好的偏差值
- 當預測數值越精確,RMSE會越趨近於零.反之,越趨近於一.
- 透過rank的變化,挑選出最好的模型(RMSE最低的)來進行下一個階段
- 預測你可能會喜歡的電影
- 輸入你對於電影的評分
- 透過ALS.train預測結果
心得
關於最後的Lab,一開始還稍微卡住.不過跟一些人請教之後.一下子就把最後的Lab寫完.
我才發現其實Spark的使用上並不會困擾我,我反而是困擾在Python的Lambda運用.
因為題目裡面很多都只給一個
如果可以熟練使用Lambda的方式,更可以搭配著Spark的一些transform (map, filter, flatMap 或是 reduceByKey…) 來解決更多的問題.
有人推薦這本Data Science from Scratch principles Python似乎也蠻適合我這種對於Data Science完全沒有概念的人. 關於這本書的範例程式在這裡可以找到.