前言:
最後一週,只有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的時候,你就只會用很多行的方式來解決.
如果可以熟練使用Lambda的方式,更可以搭配著Spark的一些transform (map, filter, flatMap 或是 reduceByKey…) 來解決更多的問題.
有人推薦這本Data Science from Scratch principles Python似乎也蠻適合我這種對於Data Science完全沒有概念的人. 關於這本書的範例程式在這裡可以找到.
相關鏈結:
Movie Lens
Wiki: 協同過濾
Wiki: Collaborative filtering
Book: Data Science from Scratch principles Python
Python Data Science Sample Code fro Book “Data Science from Scratch principles Python”
前言 剩下兩週了,不過家中寶貝誕生.必須要把時間做更好的調配,才能完成這個課程. 相關文章 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 (四) Lecture 7 Data Management Data Clean: Deal with: Missing Data Entity Resolution Unit mismatch 對於現實世界中數值可能出現的Dirty Data分為以下各種: 失真(distortion): 當發現在連續作業中的某段資料不見的時候. 選擇性偏差(Selection Bias):由於樣本的選擇不同,所以得到差異相當大的數值.比如說訪問政黨傾向不同得民眾.這裡有更詳細資料. Left and Right Censorship: 由於樣本不斷地來來去去,不能知道樣本是否有跑完所有採樣流程. 相依的(Denpendence): 每個樣本應該是比次獨立,但是有一些沒有而造成資料的偏差. Data Gathering的重要性: 資料在取得的時候存在許多發生錯誤的可能性,比如說硬體或軟體的問題或是欄位的問題..等等 若是能在取得資料的時候做一定程度的驗證,可以讓資料精確度更高. 其他名詞解釋: Big rot: 資料超過一定時間的沒有數值跟精準度. Data Delivery可能發生的問題與解決方式: 資料遺失或是毀損: 透過可信賴的傳輸方式或是透過Relay,也可以增加checksum來增加資料傳遞的可信任程度. 資料來源的相依性與可信任程度: 必須跟資料提供者有相當程度協調與協議. Lecture 8 Exploratory Data Analysis and Machine Learning 敘述性統計(Descriptice Statistics): 透過統計數量來對事件作敘述,比如說,本班的成績平均. 推論性統計(Inferencial Statistics): 透過收集到的統計數字,對事件作一定的推論.比如說,選前問卷調查. 探索性數據分析(Explortory Data Analysis): 透過先行的探索來進行數據的分析,進行的活動可能有以下數種: Visualizing the data distributions Calculating summary statistics for the data Examining the distributions of the data Rhine Paradox: 找了一千個人來猜連續十張為藍色或紅色的卡片.進而判斷出不能告訴超能力的人他有超能力的心理分析結果. Rhine’s Error: 但是真正的錯誤是,由於要猜測10張完全顏色一樣的機率為1 / 2^10 =>(1/1024) 也就是說一千個人要猜對一次也不到1個.其實要講解的是對於數據的不清楚造成錯誤的結論. Spark Machine Learning Toolkit(mllib): 提供許多功能比如說分類與回歸分析或是一些數值分析的工具. Lab3 這次的Lab3更加深難度的要讓我們學習Text Analysis 跟 Entity Resolution並且有提到“詞袋模型”(Bag-of-words model),裡面有幾個比較需要注意的地方: 關於 python dictionary 的 lambda: 這次比較困擾我的,其實是Python 的dict...