|
|
# 機器學習技術
|
|
|
|
|
|
建立、使用和維護機器學習模型及其所用數據的過程,與許多其他開發工作流程截然不同。在本課程中,我們將揭開這個過程的神秘面紗,並概述您需要知道的主要技術。您將會:
|
|
|
|
|
|
- 從宏觀層面了解支撐機器學習的過程。
|
|
|
- 探討基本概念,如「模型」、「預測」和「訓練數據」。
|
|
|
|
|
|
## [課前測驗](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
|
|
[](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning")
|
|
|
|
|
|
> 🎥 點擊上方圖片觀看簡短影片,講解本課程內容。
|
|
|
|
|
|
## 介紹
|
|
|
|
|
|
從高層次來看,創建機器學習(ML)流程的技藝包括多個步驟:
|
|
|
|
|
|
1. <strong>決定問題</strong>。大多數機器學習流程從提出一個無法用簡單條件程式或規則引擎回答的問題開始。這些問題通常圍繞基於一組數據的預測。
|
|
|
2. <strong>收集與準備數據</strong>。為了能回答您的問題,您需要數據。數據的質量,有時還有數量,會決定您回答初始問題的能力。數據可視化是此階段的重要部分。此階段還包括將數據分為訓練組和測試組,以建立模型。
|
|
|
3. <strong>選擇訓練方法</strong>。根據您的問題和數據的特性,您需要選擇如何訓練模型,以最佳反映數據並進行準確預測。這是 ML 流程中需要專門知識,且常需大量實驗的部分。
|
|
|
4. <strong>訓練模型</strong>。使用訓練數據,運用各種算法來訓練模型,讓其識別數據中的模式。模型可能利用可調整的內部權重,強調數據中的某些部分,以建立更好的模型。
|
|
|
5. <strong>評估模型</strong>。使用您未曾見過的數據(測試數據)來檢視模型的表現。
|
|
|
6. <strong>參數調整</strong>。根據模型的表現,您可以使用不同的參數或變量重新訓練,這些參數控制訓練模型的算法行為。
|
|
|
7. <strong>預測</strong>。使用新的輸入測試模型的準確度。
|
|
|
|
|
|
## 該問什麼問題
|
|
|
|
|
|
電腦特別擅長發現數據中隱藏的模式。這種功能對於在某領域有問題但無法用條件規則引擎輕易回答的研究者非常有幫助。例如,對於精算任務,數據科學家或許可以手工建立關於吸菸者與非吸菸者死亡率的規則。
|
|
|
|
|
|
然而,當引入更多變量時,機器學習模型可能更有效,能根據過去健康記錄預測未來死亡率。一個較樂觀的例子是,根據含有緯度、經度、氣候變化、海洋鄰近度、噴射氣流模式等數據,對特定地點的四月天氣做預測。
|
|
|
|
|
|
✅ 這份[氣象模型簡報](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)提供有關使用機器學習分析氣象的歷史觀點。
|
|
|
|
|
|
## 建模前任務
|
|
|
|
|
|
在開始建立模型前,有幾項任務需完成。為了測試問題並基於模型的預測形成假設,您需識別並設定數個要素。
|
|
|
|
|
|
### 數據
|
|
|
|
|
|
為了能用一定的確定性回答您的問題,您需要足夠且類型合適的數據。此階段需做兩件事:
|
|
|
|
|
|
- <strong>收集數據</strong>。記得先前課程中對數據分析公平性的說明,請謹慎收集數據。留意數據來源、潛在偏差並記錄其來源。
|
|
|
- <strong>準備數據</strong>。數據準備包含多步驟。若數據來自不同來源,可能需要合併及正規化。您也可以透過多種方法提升數據量和品質,例如把字串轉換成數字(如同我們在[分群](../../5-Clustering/1-Visualize/README.md)課程中所示)。您也可以根據原始資料產生新數據(如在[分類](../../4-Classification/1-Introduction/README.md)中)。還能清理和編輯數據(如在[網頁應用程式](../../3-Web-App/README.md)課程前)。最後,依訓練技術可能需要隨機化和打亂數據。
|
|
|
|
|
|
✅ 收集並處理數據後,稍作檢視數據形態是否能回答您的問題。某些任務中數據表現不佳,我們在[分群](../../5-Clustering/1-Visualize/README.md)課程中有所發現!
|
|
|
|
|
|
### 特徵與目標
|
|
|
|
|
|
[特徵](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)是可量化的數據屬性。在多數數據集中以欄位標題表現,如「日期」、「大小」或「顏色」。特徵變量,程式碼中通常以 `X` 表示,為用來訓練模型的輸入變量。
|
|
|
|
|
|
目標是您希望預測的結果。通常以 `y` 表示,它是您向數據提出問題的答案:十二月時,哪種<strong>顏色</strong>的南瓜最便宜?在舊金山,哪些社區的房價<strong>價格</strong>最好?有時目標也稱為標籤屬性。
|
|
|
|
|
|
### 選擇特徵變量
|
|
|
|
|
|
🎓 <strong>特徵選擇與特徵提取</strong>:如何知道建立模型時該選哪個變量?您或許會透過特徵選擇或特徵提取來挑選關鍵變量以建置最有效模型。但兩者並不相同:「特徵提取從原始特徵的函數中創造新特徵,而特徵選擇則挑出特徵的一個子集。」([來源](https://wikipedia.org/wiki/Feature_selection))
|
|
|
|
|
|
### 可視化數據
|
|
|
|
|
|
數據科學家的重要工具之一,是利用 Seaborn 或 MatPlotLib 等優秀函式庫將數據視覺化。視覺呈現數據,有助於您發現可利用的隱藏關聯,亦能幫助揭露偏差或不平衡數據(我們在[分類](../../4-Classification/2-Classifiers-1/README.md)課程中探討過此議題)。
|
|
|
|
|
|
### 分割數據集
|
|
|
|
|
|
訓練前,需將數據集拆分為兩個或以上大小不等但仍能代表數據的子集。
|
|
|
|
|
|
- <strong>訓練集</strong>:用來擬合模型的數據集,通常占原始數據的大多數。
|
|
|
- <strong>測試集</strong>:獨立的測試數據組,通常從原始數據中取得,用於確認模型表現。
|
|
|
- <strong>驗證集</strong>:較小的獨立數據組,用於調整模型的超參數或結構以優化模型。依據數據大小和問題,有時不必建立此第三個集合(如在[時間序列預測](../../7-TimeSeries/1-Introduction/README.md)中所述)。
|
|
|
|
|
|
## 建立模型
|
|
|
|
|
|
使用訓練數據,運用多種算法,您的目標是建置一個模型,或是數據的統計表徵,並<strong>訓練</strong>它。模型訓練階段會讓它接觸數據,依發現的模式進行假設、驗證並接受或拒絕。
|
|
|
|
|
|
### 選擇訓練方法
|
|
|
|
|
|
根據您的問題和數據性質,選擇適合的訓練方法。透過瀏覽 [Scikit-learn 文件](https://scikit-learn.org/stable/user_guide.html) — 本課程使用的套件 — 您能探究多種訓練模型方式。依經驗,您可能需嘗試幾種方法,才能打造最佳模型。數據科學家通常會透過讓模型分析未見過的數據,檢查準確度、偏差和其他品質問題,再挑選最合適的訓練方式。
|
|
|
|
|
|
### 訓練模型
|
|
|
|
|
|
準備好訓練數據後,便可「擬合」數據以建立模型。您會發現多數 ML 函式庫中均有 'model.fit' 代碼,這是將特徵變量(通常是 'X')和目標變量(通常是 'y')傳入模型的時候。
|
|
|
|
|
|
### 評估模型
|
|
|
|
|
|
當訓練完成後(大型模型可能需多次迭代或「週期」),您就能使用測試數據評估模型品質。測試數據是原始數據子集,模型之前未接觸過。您可列印模型品質指標表。
|
|
|
|
|
|
🎓 <strong>模型擬合</strong>
|
|
|
|
|
|
在機器學習語境中,模型擬合指模型基礎函數在分析不熟悉數據時的準確度。
|
|
|
|
|
|
🎓 <strong>欠擬合</strong> 和 <strong>過擬合</strong> 是常見問題,會降低模型質量。欠擬合指模型擬合不佳,無法準確分析訓練數據或未知數據;過擬合則表示模型對訓練數據過度擬合,將細節和雜訊也學會,導致預測過於貼合訓練數據,降低泛化能力。
|
|
|
|
|
|

|
|
|
> 資訊圖表由 [Jen Looper](https://twitter.com/jenlooper) 提供
|
|
|
|
|
|
## 參數調整
|
|
|
|
|
|
完成初始訓練後,觀察模型品質,考慮透過調整「超參數」來改善。如要了解更多過程,請參考[官方文件](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)。
|
|
|
|
|
|
## 預測
|
|
|
|
|
|
這個階段您可以使用全新數據來測試模型準確度。在應用型機器學習場景中,您建置網頁資產以在正式環境中使用模型,過程可能需要接收用戶輸入(例如按鈕點擊),將變量送入模型進行推論或評估。
|
|
|
|
|
|
在這些課程中,您將學習如何利用這些步驟來準備、建立、測試、評估和預測——執行數據科學家的所有基本動作,並在成長過程中成為一名「全端」機器學習工程師。
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🚀挑戰
|
|
|
|
|
|
畫出反映機器學習從業者流程步驟的流程圖。您認為自己目前處於哪個階段?您預見會在哪裡遇到困難?哪部分對您來說比較容易?
|
|
|
|
|
|
## [課後測驗](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
|
|
## 複習與自學
|
|
|
|
|
|
線上搜尋數據科學家的訪談,了解他們的日常工作。這裡有[一段](https://www.youtube.com/watch?v=Z3IjgbbCEfs)。
|
|
|
|
|
|
## 作業
|
|
|
|
|
|
[訪問一位數據科學家](assignment.md)
|
|
|
|
|
|
---
|
|
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
|
**免責聲明**:
|
|
|
本文件係透過人工智能翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯而成。雖然我們致力於確保準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原文件以其母語版本為權威資料。對於重要資訊,建議採用專業人工翻譯。我們不對因使用此翻譯而引起的任何誤解或曲解負責。
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |