機器學習解決問題五步驟之二:建立資料集為何最花時間?

1 前言
這篇是「機器學習入門觀念」系列的第四篇。上一篇「使用機器學習解決問題的五步驟:定義問題」講完了五個步驟的全貌,也把第一步「定義問題」拆開來看過一遍:先想清楚要解的到底是什麼任務,後面的每一步才有方向。
這篇要接著看第二步「建立資料集」。內容包含兩件事:為什麼這一步的份量遠比想像中重,以及實際動手時會經過哪四個階段。
2 建立資料集的意義

「建立資料集」大概是五個步驟裡最重要的一步。要用機器學習的技術解決問題,「資料」是一定得準備的,而且資料品質的好壞會直接反映在最後訓練出來的模型上。
這件事的邏輯其實很直觀:模型的規律是從資料裡學來的,資料本身如果有問題,模型就會把問題一起學走。同一套演算法、同一組超參數,換一份乾淨的資料,結果可能天差地遠。

根據統計,利用機器學習解決任務時,「資料準備」花了將近 80% 的時間,「其他步驟」則總共使用 20% 的時間。可見資料準備的過程其實相當的重要也不簡單!
換個角度看這個數字:真正在調模型的時間,只佔整個專案的一小部分。剛入門的時候很容易以為機器學習的重頭戲在演算法,實際做過一輪就會發現,大部分的力氣都花在把資料弄到堪用的狀態。
3 建立資料集的步驟

建立資料集的過程又可以拆分成以下 4 個步驟:
- Data Collection
- Data Inspection
- Summary Statistics
- Data Visualization
想要訓練出一個高品質的機器學習模型,資料數據的好壞相當重要。以下依序說明每一個步驟的意義。
4 Data Collection
Data Collection 顧名思義就是「收集資料」。這一步可能很容易,也可能很困難,落差非常大。
比較幸運的情況是,網路上已經有人針對你的任務整理好現成的資料集,下載下來就能用。但如果找不到現成的,可能就得自己寫一支「爬蟲程式」到網路上爬取大量資料,甚至得自己標註。
這個步驟的關鍵在於:收集到的資料,是否符合上一步驟中定義的機器學習任務? 資料量再大,只要跟任務對不上,對訓練就沒有幫助。
5 Data Inspection
Data Inspection 就是「檢查資料」。前面提過資料品質會直接影響模型,而網路上開源的資料集品質參差不齊,因此必須先經過檢查,再拿來訓練模型。
資料檢查可以朝以下三個方向前進:
- 資料集中的離群值 (Outlier)
- 資料集中的缺失數據 (Missing Value)
- 資料是否需進行預處理 (Preprocessed) 才能輸入模型
舉個具體一點的例子:一份使用者資料裡出現年齡欄位是 999 的紀錄,那多半是離群值;某些紀錄的欄位根本是空的,那就是缺失數據。這兩種狀況如果不處理就直接丟進模型,學出來的規律自然會被帶偏。
在不同的任務中,對於上述三種問題也有相對應的解決方法,將會在未來的文章中介紹。
6 Summary Statistics
Summary Statistics 的概念是:對手上已經處理過的資料做統計分析。透過一些統計指標,我們可以對資料集有初步的認知。
例如平均值 (Mean)、中位數 (Median)、最大與最小值 (Max & Min) 與標準差 (Standard Deviation)。這些都只是統計中的基本指標,作用是讓我們對資料集數值的分佈有初步理解。
即使只是這幾個數字,也常常能看出端倪。像是平均值跟中位數差很多,通常代表分佈被少數極端值拉歪了;標準差大得不合理,也是值得回頭確認資料的訊號。
7 Data Visualization

Data Visualization 也就是「資料視覺化」。透過各種類型的圖表把資料「視覺化」,資料就不再是生硬的數字,而是一張張有意義的圖表。
視覺化之後,我們可以更容易找到離群值 (Outlier) 或是趨勢 (Trend)。這也是它跟前一步 Summary Statistics 互補的地方:統計指標把整份資料壓縮成幾個數字,圖表則把分佈的形狀攤開來,有些問題用看的比用算的還快。
8 結論
這篇文章介紹了「機器學習解決問題五步驟」中的第二步「建立資料集」,也拆解了它底下的四個階段:Data Collection、Data Inspection、Summary Statistics 與 Data Visualization。
要記住的重點只有一個:資料集的準備是整個流程中最重要、也最花時間的一步,資料品質的好壞將大大影響訓練出來的模型。下一篇文章會接著介紹第三步「模型訓練」。




