# 機器學習技術 建立、使用和維護機器學習模型及其所需數據的過程,與許多其他開發工作流程有很大的不同。在本課中,我們將揭開這個過程的神秘面紗,並概述您需要了解的主要技術。您將學到: - 從高層次理解機器學習的基本流程。 - 探索基本概念,例如「模型」、「預測」和「訓練數據」。 ## [課前小測驗](https://ff-quizzes.netlify.app/en/ml/) [![機器學習初學者 - 機器學習技術](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "機器學習初學者 - 機器學習技術") > 🎥 點擊上方圖片觀看一段簡短的影片,了解本課內容。 ## 簡介 從高層次來看,創建機器學習(ML)流程的技術包括以下幾個步驟: 1. **確定問題**。大多數機器學習流程始於提出一個無法通過簡單條件程序或基於規則的引擎解答的問題。這些問題通常圍繞基於數據集合進行的預測。 2. **收集和準備數據**。為了回答您的問題,您需要數據。數據的質量,有時還包括數量,將決定您能多好地回答最初的問題。數據可視化是這個階段的重要部分。這個階段還包括將數據分為訓練組和測試組以構建模型。 3. **選擇訓練方法**。根據您的問題和數據的性質,您需要選擇如何訓練模型,以便最好地反映數據並對其進行準確預測。這是機器學習過程中需要專業知識且通常需要大量試驗的部分。 4. **訓練模型**。使用訓練數據,您將使用各種算法訓練模型以識別數據中的模式。模型可能會利用內部權重,這些權重可以調整以優化某些數據部分,從而構建更好的模型。 5. **評估模型**。使用從未見過的數據(測試數據)來檢查模型的表現。 6. **參數調整**。根據模型的表現,您可以使用不同的參數或變量重新進行訓練,這些參數或變量控制訓練模型時所用算法的行為。 7. **進行預測**。使用新輸入測試模型的準確性。 ## 該問什麼問題 電腦特別擅長發現數據中的隱藏模式。這對於研究人員來說非常有用,因為他們可能有一些無法通過條件規則引擎輕鬆回答的問題。例如,針對精算任務,數據科學家可能能夠手工構建關於吸煙者與非吸煙者死亡率的規則。 然而,當涉及到許多其他變量時,機器學習模型可能更有效地根據過去的健康記錄預測未來的死亡率。一個更令人愉快的例子可能是根據包括緯度、經度、氣候變化、靠近海洋的距離、噴流模式等數據,預測某地四月份的天氣。 ✅ 這份[簡報](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)提供了使用機器學習進行天氣分析的歷史視角。 ## 構建前的任務 在開始構建模型之前,您需要完成幾項任務。為了測試您的問題並根據模型的預測形成假設,您需要識別並配置幾個元素。 ### 數據 為了能夠以任何確定性回答您的問題,您需要足夠數量且類型正確的數據。在這個階段,您需要完成以下兩件事: - **收集數據**。記住上一課關於數據分析公平性的內容,謹慎收集數據。注意數據的來源、可能存在的內在偏見,並記錄其來源。 - **準備數據**。數據準備過程包括多個步驟。如果數據來自不同來源,您可能需要整理並標準化數據。您可以通過各種方法提高數據的質量和數量,例如將字符串轉換為數字(如我們在[聚類](../../5-Clustering/1-Visualize/README.md)中所做的)。您還可以基於原始數據生成新數據(如我們在[分類](../../4-Classification/1-Introduction/README.md)中所做的)。您可以清理和編輯數據(如我們在[Web 應用](../../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`,代表您試圖從數據中回答的問題。例如:在十二月,哪種**顏色**的南瓜最便宜?在舊金山,哪些街區的房地產**價格**最好?有時目標也被稱為標籤屬性。 ### 選擇您的特徵變量 🎓 **特徵選擇與特徵提取** 如何知道在構建模型時選擇哪個變量?您可能需要通過特徵選擇或特徵提取的過程來選擇最合適的變量以構建性能最佳的模型。然而,這兩者並不相同:「特徵提取通過原始特徵的函數創建新特徵,而特徵選擇則返回特徵的子集。」([來源](https://wikipedia.org/wiki/Feature_selection)) ### 可視化數據 數據科學家工具箱中的一個重要部分是使用 Seaborn 或 MatPlotLib 等優秀庫來可視化數據的能力。通過可視化數據,您可能會發現可以利用的隱藏相關性。您的可視化還可能幫助您發現偏見或數據不平衡(如我們在[分類](../../4-Classification/2-Classifiers-1/README.md)中發現的那樣)。 ### 分割數據集 在訓練之前,您需要將數據集分為兩部分或更多部分,這些部分的大小不相等,但仍能很好地代表數據。 - **訓練集**。這部分數據集用於訓練模型。它構成了原始數據集的大部分。 - **測試集**。測試數據集是從原始數據中獨立提取的一組數據,用於確認構建的模型的性能。 - **驗證集**。驗證集是一組較小的獨立數據,用於調整模型的超參數或架構以改進模型。根據數據的大小和您提出的問題,您可能不需要構建這第三組數據(如我們在[時間序列預測](../../7-TimeSeries/1-Introduction/README.md)中提到的那樣)。 ## 構建模型 使用您的訓練數據,您的目標是使用各種算法**訓練**模型,從而構建數據的統計表示。訓練模型使其接觸數據,並讓其對發現的模式進行假設、驗證並接受或拒絕。 ### 決定訓練方法 根據您的問題和數據的性質,您將選擇一種訓練方法。通過瀏覽[Scikit-learn 的文檔](https://scikit-learn.org/stable/user_guide.html)(我們在本課程中使用),您可以探索多種訓練模型的方法。根據您的經驗,您可能需要嘗試多種方法以構建最佳模型。您可能會經歷一個過程,數據科學家通過向模型提供未見過的數據來評估其性能,檢查準確性、偏差和其他質量問題,並選擇最適合當前任務的訓練方法。 ### 訓練模型 有了訓練數據,您可以開始「擬合」數據以創建模型。您會注意到,在許多機器學習庫中,代碼中會出現「model.fit」——這時您將特徵變量作為值的數組(通常是 `X`)以及目標變量(通常是 `y`)傳入。 ### 評估模型 訓練過程完成後(對於大型模型,可能需要多次迭代或「epoch」),您可以使用測試數據來評估模型的質量,檢查其性能。這些數據是原始數據的一部分,模型之前未曾分析過。您可以打印出一個關於模型質量的指標表。 🎓 **模型擬合** 在機器學習的背景下,模型擬合指的是模型的底層函數在嘗試分析未見過的數據時的準確性。 🎓 **欠擬合**和**過擬合**是常見問題,會降低模型質量。欠擬合的模型無法很好地分析訓練數據或未見過的數據,而過擬合的模型則過於貼合訓練數據,因為它過於詳細地學習了數據的細節和噪聲。 ![過擬合模型](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) > 圖表由 [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) --- **免責聲明**: 此文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤詮釋概不負責。