iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
0
Google Developers Machine Learning

ML Study Jam -機器學習系列 第 11

Day 11 Generalization and Sampling part 1 (如何概括、取樣數據)

  • 分享至 

  • xImage
  •  

Launching into Machine Learning

Generalization and Sampling part 1

Underfitting、Fitting、Overfitting

在介紹這次實驗之前,有幾個滿重要的觀念以及技巧要先提及,第一個就是有關如何利用圖形來判別此次的結果是否可以使用,大多會分為三種underfitting、fitting、overfitting,其中只有fitting是可以使用的,另外兩個叫做欠擬合、過擬合,很好理解的是過擬合就是太符合實驗數據,如果有新的資料進來就很有機會判斷錯誤,因為它能判斷其訓練的數據。
而欠擬合顧名思義就是欠缺擬合,就是連訓練資料丟進去他都不知道是甚麼,這種模型你敢用嗎ㄏㄏ?

https://ithelp.ithome.com.tw/upload/images/20190916/20120289JGHrYOuPaG.png

Dataset的設置

另外一個觀念就是dataset的設置,很重要的一點就是我們必須把所有資料集分成兩塊,一組是實驗數據、一組是測試數據,這樣分別的原因是為了不讓測試數據參雜實驗數據進而在預測的時候影響其結果;接著必須再將實驗數據分成訓練與驗證,做這個的目的主要為了在訓練的時候,能夠避免過擬合的情況發生,因為全部都是訓練資料模型就只會解同樣的問題,更好的方式是加入cross-validation的觀念,在訓練時輪流使用測試與驗證集,確保模型都學會所有數據集藉此提高準確率。

https://ithelp.ithome.com.tw/upload/images/20190916/20120289FkUsPRiRP6.pnghttps://ithelp.ithome.com.tw/upload/images/20190916/20120289seVzRHIIJh.png


Lab: Creating Repeatable Dataset Splits in BigQuery

接著開始介紹實作部分,此次要做實驗的主題是Lab: Creating Repeatable Dataset Splits in BigQuery。這個實驗最主要的目的也就是希望我們利用GCP平台來進行資料的分類。

  1. 第一步就是要創建一個AI平台,並且要需有編輯程式碼功能

    • 所以我們這邊就點選AI Platform裡面的Notebooks來創建。
      https://ithelp.ithome.com.tw/upload/images/20190916/20120289XCD7FYptHJ.png
  2. 進入畫面後要來設定相關規格

    • 所以按下NEW INSTANCE,來做相關的設定就可以看到相關內容是否符合開發需求。
      https://ithelp.ithome.com.tw/upload/images/20190916/201202892KxfO9XjDC.pnghttps://ithelp.ithome.com.tw/upload/images/20190916/201202896axBFpzITD.png
  3. 等待一段時間就可以看到有一個選項OPEN JUPYTERLAB

    • 點選進去來進行notebook的使用
    • 進入畫面後點選Terminal的選項輸入熟悉的git clone https://github.com/GoogleCloudPlatform/training-data-analyst下載教材
      https://ithelp.ithome.com.tw/upload/images/20190916/20120289oFq66eQgXC.pnghttps://ithelp.ithome.com.tw/upload/images/20190916/201202894kErqIkEz1.pnghttps://ithelp.ithome.com.tw/upload/images/20190916/20120289IWvqfGfCGW.png
  4. 接著切換至training-data-analyst > courses > machine_learning > deepdive > 02_generalization路徑下

    • 打開repeatable_splitting.ipynb開始今天的實驗。
      https://ithelp.ithome.com.tw/upload/images/20190916/20120289lE0Fkp3LS2.png
  5. 首先匯入BigQuery套件from google.cloud import bigquery

    • 我們必須先定義一個簡單的檢驗公式,來驗證我們的數據,此次的題目為預測飛機在出發時延遲是否到達時也會延遲,下方這張圖是其詳細的計算公式用來計算α,其中α代表兩者之間的相關性。
      https://ithelp.ithome.com.tw/upload/images/20190916/201202898SgkMnJxBn.pnghttps://ithelp.ithome.com.tw/upload/images/20190916/20120289yqaFLkPNLc.png
  6. 接著利用BigQuery來抓取資料

    • 而這邊是用最簡單的方式,使用RAND()函數來進行隨機分配,但會發現一個非常明顯的問題,仔細看下列數字α,會發現其實每次執行結果都會不一樣,這個原因就是使用RAND()函數,它是從0~1隨機取一個數值來進行切割。
      https://ithelp.ithome.com.tw/upload/images/20190916/201202892KvZ1jI6bH.jpghttps://ithelp.ithome.com.tw/upload/images/20190916/20120289dYlKff6Wr7.jpghttps://ithelp.ithome.com.tw/upload/images/20190916/20120289zq3j9KMbWv.png
  7. 但這樣對於我們實驗的數據有甚麼影響呢?

    • 我們可以依照下方輸出的結果來觀察,第一個不好的地方是,每次重新載入所分配的資料都會不一樣,第二個是有時候rmse值若很相近,表示訓練與驗證集相似性非常高,這樣在訓練過程中會有很高的準確率,但實際在應用時則會造成過擬合的狀況。

https://ithelp.ithome.com.tw/upload/images/20190916/20120289K3YqZtHOUB.png

  1. 那要怎麼避免上述兩個問題呢?
    • 最簡單的方式就是使用HASH的方式來做切割,這邊作者是使用date取得的時間進行切割,因為時間數據時間並不會一直變,所以可以看到結果,α並不會因為我一直重複執行而有所改變,並且分割的資料集每次都會一樣,這才是我們真正想要的分割方式。

https://ithelp.ithome.com.tw/upload/images/20190916/201202898OOlFkIDKP.png

※圖片參考至 Launching into Machine Learning slide


上一篇
Day 10 Optimization part 2 (TensorFlow Playground模擬與評估方式)
下一篇
Day 12 Generalization and Sampling part 2 (試著分配數據吧)
系列文
ML Study Jam -機器學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言