image

前言:

最後一週,只有Lab.而最後一個Lab其實也接著之後的進階課程Scalable Machine Learning. 所以最後一次的Lab開始介紹Spark關於Machine Learning的部分.喜好電影預測是個很有趣,很實用的課題.

相關文章

edx 課程網址在這裡 https://www.edx.org/course/introduction-big-data-apache-spark-uc-berkeleyx-cs100-1x

Lab4 - Predicting Movie Ratings

image

這一次的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的時候,你就只會用很多行的方式來解決.

如果可以熟練使用Lambda的方式,更可以搭配著Spark的一些transform (map, filter, flatMap 或是 reduceByKey…) 來解決更多的問題.

有人推薦這本Data Science from Scratch principles Python似乎也蠻適合我這種對於Data Science完全沒有概念的人. 關於這本書的範例程式在這裡可以找到.

相關鏈結:


Evan

Attitude is everything