許多資料集會將資料儲存在表格 (格線) 中,例如以逗號分隔值 (CSV) 格式儲存,或直接從試算表或資料庫表格中儲存。資料表是機器學習模型的直覺輸入格式。您可以將表格的每一列視為一個示例,每一欄則視為潛在特徵或標籤。不過,資料集也可以從其他格式 (包括記錄檔和通訊協定緩衝區) 衍生而來。
無論格式為何,機器學習模型的品質取決於訓練資料的品質。本節將探討主要資料特性。
資料類型
資料集可能包含多種資料類型,包括但不限於:
資料量
根據大致的經驗法則,模型訓練時,樣本數量至少應比可訓練參數多一個數量級 (或兩個數量級)。不過,優質模型通常會以大量的例子進行訓練。
以特徵較少的大型資料集訓練的模型,通常會比以特徵較多的迷你資料集訓練的模型表現優異。Google 過去曾成功在大量資料集上訓練簡單的模型。
不同的機器學習程式需要不同的資料集,因此所需的範例數量可能差異極大,對於一些相對簡單的問題,幾十個範例可能就足夠了。對於其他問題,一兆個示例可能不足以解決。
如果您要調整已針對相同結構定義的大量資料訓練的現有模型,就能從小型資料集中取得良好結果。
資料的品質和可靠性
大家都喜歡高品質的內容,但品質這個概念相當模糊,可以用許多不同的方式定義。本課程會以實用的方式定義品質:
高品質的資料集有助於模型達成目標。資料集品質不佳會導致模型無法達成目標。
高品質的資料集通常也相當可靠。可靠性是指您對資料的信任程度。相較於以不可靠資料訓練的模型,以可靠資料訓練的模型更有可能產生實用的預測結果。
評估可靠性時,您必須決定下列項目:
- 標籤錯誤的發生頻率為何?舉例來說,如果您的資料是由人類標註,人類評分人員出錯的頻率為何?
- 您的功能是否過於吵雜?也就是說,您的功能是否含有錯誤值?請務必務實,您無法將所有雜訊從資料集中清除。有些雜訊屬於正常現象,例如任何地點的 GPS 測量值每週都會略有波動。
- 資料是否已針對您的問題進行適當篩選?舉例來說,您的資料集是否應納入機器人搜尋查詢?如果您正在建構垃圾郵件偵測系統,答案很可能是肯定的。不過,如果您想改善搜尋結果,則不建議使用這項功能。
以下是資料集資料不準確的常見原因:
- 省略的值。舉例來說,某人忘記輸入房屋的年齡值。
- 重複的範例。舉例來說,伺服器誤將相同的記錄項目上傳兩次。
- 錯誤的特徵值。例如有人輸入多一個數字,或是溫度計在陽光下曝曬。
- 標籤無效。例如,有人誤將橡樹標示為楓樹。
- 資料的錯誤部分。舉例來說,某項功能非常可靠,但在網路不斷當機的那一天,就會出現問題。
建議您使用自動化功能標示不準確的資料。舉例來說,定義或仰賴外部正式資料結構的單元測試,可以標示超出定義範圍的值。
完整和不完整的範例
在理想情況下,每個示例都應為「完整」,也就是每個示例都包含每個特徵的值。
不過,實際的例子通常都不完整,也就是說至少缺少一個特徵值。
請勿使用不完整的範例訓練模型。請改用下列任一方法修正或移除不完整的範例:
- 刪除不完整的範例。
- Impute缺少的值,也就是為缺少的值提供合理的推測,將不完整的範例轉換為完整的範例。
如果資料集包含足夠的完整範例,可用於訓練實用的模型,請考慮刪除不完整的範例。同樣地,如果只有一個特徵缺少大量資料,且該特徵可能無法對模型提供太多幫助,建議您考慮從模型輸入中刪除該特徵,並查看刪除後的品質損失程度。如果模型在沒有這項功能的情況下,也能正常運作或幾乎能正常運作,那就太棒了。反之,如果您沒有足夠的完整範例來訓練實用的模型,則可以考慮輸入缺少的值。
刪除無用或多餘的範例是可以的,但刪除重要的範例則不妥。很遺憾,我們很難區分有用和無用的範例。如果您不確定要刪除還是補全資料,建議您建立兩個資料集:一個是刪除不完整的示例,另一個則是補全資料。接著,判斷哪個資料集可訓練出品質較佳的模型。
其中一個常見的演算法是使用平均值或中位數做為推測值。因此,當您使用Z 分數來表示數值特徵時,補上值通常為 0 (因為 0 通常是平均 Z 分數)。
練習:檢查您的理解程度
以下是兩個以 Timestamp
排序的資料集欄。
時間戳記 | 溫度 |
---|---|
2023 年 6 月 8 日 09:00 | 12 |
2023 年 6 月 8 日 10:00 | 18 |
2023 年 6 月 8 日 11:00 | 遺漏 |
2023 年 6 月 8 日 12:00 | 24 |
2023 年 6 月 8 日 13:00 | 38 |
下列哪個值是溫度遺漏值的合理推論值?