微软面向初学者的机器学习课程:1.4-机器学习技术
寫在前面:最近在參與microsoft/ML-For-Beginners的翻譯活動,歡迎有興趣的朋友加入(https://github.com/microsoft/ML-For-Beginners/issues/71)
機器學(xué)習(xí)技術(shù)
構(gòu)建、使用和維護機器學(xué)習(xí)模型及其使用的數(shù)據(jù)的過程與許多其他開發(fā)工作流程截然不同。在本課中,我們將揭開該過程的神秘面紗,并概述您需要了解的主要技術(shù)。您會:
在高層次上理解支持機器學(xué)習(xí)的過程。
探索基本概念,例如“模型”、“預(yù)測”和“訓(xùn)練數(shù)據(jù)”。
課前測驗[1]
介紹
在較高的層次上,創(chuàng)建機器學(xué)習(xí)(ML)過程的工藝包括許多步驟:
決定問題。大多數(shù)機器學(xué)習(xí)過程都是從提出一個簡單的條件程序或基于規(guī)則的引擎無法回答的問題開始的。這些問題通常圍繞基于數(shù)據(jù)集合的預(yù)測展開。
收集和準(zhǔn)備數(shù)據(jù)。為了能夠回答您的問題,您需要數(shù)據(jù)。數(shù)據(jù)的質(zhì)量(有時是數(shù)量)將決定您回答最初問題的能力??梢暬瘮?shù)據(jù)是這個階段的一個重要方面。此階段還包括將數(shù)據(jù)拆分為訓(xùn)練和測試組以構(gòu)建模型。
選擇一種訓(xùn)練方法。根據(jù)您的問題和數(shù)據(jù)的性質(zhì),您需要選擇如何訓(xùn)練模型以最好地反映您的數(shù)據(jù)并對其進行準(zhǔn)確預(yù)測。這是您的ML過程的一部分,需要特定的專業(yè)知識,并且通常需要大量的實驗。
訓(xùn)練模型。使用您的訓(xùn)練數(shù)據(jù),您將使用各種算法來訓(xùn)練模型以識別數(shù)據(jù)中的模式。該模型可能會利用可以調(diào)整的內(nèi)部權(quán)重來使數(shù)據(jù)的某些部分優(yōu)于其他部分,從而構(gòu)建更好的模型。
評估模型。您使用收集到的集合中從未見過的數(shù)據(jù)(您的測試數(shù)據(jù))來查看模型的性能。
參數(shù)調(diào)整。根據(jù)模型的性能,您可以使用不同的參數(shù)或變量重做該過程,這些參數(shù)或變量控制用于訓(xùn)練模型的算法的行為。
預(yù)測。使用新輸入來測試模型的準(zhǔn)確性。
要問什么問題
計算機特別擅長發(fā)現(xiàn)數(shù)據(jù)中的隱藏模式。此實用程序?qū)τ趯o定領(lǐng)域有疑問的研究人員非常有幫助,這些問題無法通過創(chuàng)建基于條件的規(guī)則引擎來輕松回答。例如,給定一項精算任務(wù),數(shù)據(jù)科學(xué)家可能能夠圍繞吸煙者與非吸煙者的死亡率構(gòu)建手工規(guī)則。
然而,當(dāng)將許多其他變量納入等式時,ML模型可能會更有效地根據(jù)過去的健康史預(yù)測未來的死亡率。一個更令人愉快的例子可能是根據(jù)包括緯度、經(jīng)度、氣候變化、與海洋的接近程度、急流模式等在內(nèi)的數(shù)據(jù)對給定位置的4月份進行天氣預(yù)報。
? 這個關(guān)于天氣模型的幻燈片[2]為在天氣分析中使用機器學(xué)習(xí)提供了一個歷史視角。
預(yù)構(gòu)建任務(wù)
在開始構(gòu)建模型之前,您需要完成多項任務(wù)。要測試您的問題并根據(jù)模型的預(yù)測形成假設(shè),您需要識別和配置多個元素。
Data
為了能夠確定地回答您的問題,您需要大量正確類型的數(shù)據(jù)。此時您需要做兩件事:
收集數(shù)據(jù)。記住之前關(guān)于數(shù)據(jù)分析公平性的課程,小心收集數(shù)據(jù)。請注意此數(shù)據(jù)的來源、它可能具有的任何固有偏見,并記錄其來源。
準(zhǔn)備數(shù)據(jù)。數(shù)據(jù)準(zhǔn)備過程有幾個步驟。如果數(shù)據(jù)來自不同的來源,您可能需要整理數(shù)據(jù)并對其進行標(biāo)準(zhǔn)化。您可以通過各種方法提高數(shù)據(jù)的質(zhì)量和數(shù)量,例如將字符串轉(zhuǎn)換為數(shù)字(就像我們在聚類[3]中所做的那樣)。您還可以根據(jù)原始數(shù)據(jù)生成新數(shù)據(jù)(正如我們在分類[4]中所做的那樣)。您可以清理和編輯數(shù)據(jù)(就像我們在 Web App[5]課程之前所做的那樣)。最后,您可能還需要對其進行隨機化和打亂,具體取決于您的訓(xùn)練技術(shù)。
? 在收集和處理您的數(shù)據(jù)后,花點時間看看它的形狀是否能讓您解決您的預(yù)期問題。正如我們在聚類[6]課程中發(fā)現(xiàn)的那樣,數(shù)據(jù)可能在您的給定任務(wù)中表現(xiàn)不佳!
選擇特征變量
特征[7]是數(shù)據(jù)的可衡量屬性。在許多數(shù)據(jù)集中,它表示為列標(biāo)題,如“日期”、“大小”或“顏色”。您的特征變量(通常在代碼中表示為y)代表您試圖對數(shù)據(jù)提出的問題的答案:在12月,哪種顏色的南瓜最便宜?在舊金山,哪些街區(qū)的房地產(chǎn)價格最好?
???? 特征選擇和特征提取 構(gòu)建模型時如何知道選擇哪個變量?您可能會經(jīng)歷一個特征選擇或特征提取的過程,以便為性能最好的模型選擇正確的變量。然而,它們不是一回事:“特征提取是從基于原始特征的函數(shù)中創(chuàng)建新特征,而特征選擇返回特征的一個子集?!?#xff08;來源[8])
可視化數(shù)據(jù)
數(shù)據(jù)科學(xué)家工具包的一個重要方面是能夠使用多個優(yōu)秀的庫(例如 Seaborn 或 MatPlotLib)將數(shù)據(jù)可視化。直觀地表示您的數(shù)據(jù)可能會讓您發(fā)現(xiàn)可以利用的隱藏關(guān)聯(lián)。您的可視化還可以幫助您發(fā)現(xiàn)偏見或不平衡的數(shù)據(jù)(正如我們在 分類[9]中發(fā)現(xiàn)的那樣)。
拆分數(shù)據(jù)集
在訓(xùn)練之前,您需要將數(shù)據(jù)集拆分為兩個或多個大小不等但仍能很好地代表數(shù)據(jù)的部分。
訓(xùn)練。這部分數(shù)據(jù)集適合您的模型進行訓(xùn)練。這個集合構(gòu)成了原始數(shù)據(jù)集的大部分。
測試。測試數(shù)據(jù)集是一組獨立的數(shù)據(jù),通常從原始數(shù)據(jù)中收集,用于確認構(gòu)建模型的性能。
驗證。驗證集是一個較小的獨立示例組,用于調(diào)整模型的超參數(shù)或架構(gòu),以改進模型。根據(jù)您的數(shù)據(jù)大小和您提出的問題,您可能不需要構(gòu)建第三組(正如我們在時間序列預(yù)測[10]中所述)。
建立模型
使用您的訓(xùn)練數(shù)據(jù),您的目標(biāo)是構(gòu)建模型或數(shù)據(jù)的統(tǒng)計表示,并使用各種算法對其進行訓(xùn)練。訓(xùn)練模型將其暴露給數(shù)據(jù),并允許它對其發(fā)現(xiàn)、驗證和接受或拒絕的感知模式做出假設(shè)。
決定一種訓(xùn)練方法
根據(jù)您的問題和數(shù)據(jù)的性質(zhì),您將選擇一種方法來訓(xùn)練它。逐步完成 Scikit-learn的文檔[11] - 我們在本課程中使用 - 您可以探索多種訓(xùn)練模型的方法。根據(jù)您的經(jīng)驗,您可能需要嘗試多種不同的方法來構(gòu)建最佳模型。您可能會經(jīng)歷一個過程,在該過程中,數(shù)據(jù)科學(xué)家通過提供未見過的數(shù)據(jù)來評估模型的性能,檢查準(zhǔn)確性、偏差和其他降低質(zhì)量的問題,并為手頭的任務(wù)選擇最合適的訓(xùn)練方法。
訓(xùn)練模型
有了您的訓(xùn)練數(shù)據(jù),您就可以“擬合”它以創(chuàng)建模型。您會注意到,在許多ML庫中,您會找到代碼'model.fit'——此時您將數(shù)據(jù)作為值數(shù)組(通常為'X')和特征變量(通常為'y')發(fā)送)。
評估模型
訓(xùn)練過程完成后(訓(xùn)練大型模型可能需要多次迭代或“時期”),您將能夠通過使用測試數(shù)據(jù)來衡量模型的性能來評估模型的質(zhì)量。此數(shù)據(jù)是模型先前未分析的原始數(shù)據(jù)的子集。您可以打印出有關(guān)模型質(zhì)量的指標(biāo)表。
???? **模型擬合 **
在機器學(xué)習(xí)的背景下,模型擬合是指模型在嘗試分析不熟悉的數(shù)據(jù)時其底層功能的準(zhǔn)確性。
???? 欠擬合和過擬合是降低模型質(zhì)量的常見問題,因為模型擬合得不夠好或太好。這會導(dǎo)致模型做出與其訓(xùn)練數(shù)據(jù)過于緊密對齊或過于松散對齊的預(yù)測。過擬合模型對訓(xùn)練數(shù)據(jù)的預(yù)測太好,因為它已經(jīng)很好地了解了數(shù)據(jù)的細節(jié)和噪聲。欠擬合模型并不準(zhǔn)確,因為它既不能準(zhǔn)確分析其訓(xùn)練數(shù)據(jù),也不能準(zhǔn)確分析尚未“看到”的數(shù)據(jù)。
作者Jen Looper[12]
參數(shù)調(diào)優(yōu)
初始訓(xùn)練完成后,觀察模型的質(zhì)量并考慮通過調(diào)整其“超參數(shù)”來改進它。在此文檔中[13]閱讀有關(guān)該過程的更多信息。
預(yù)測
這是您可以使用全新數(shù)據(jù)來測試模型準(zhǔn)確性的時刻。在“應(yīng)用”ML設(shè)置中,您正在構(gòu)建Web資源以在生產(chǎn)中使用模型,此過程可能涉及收集用戶輸入(例如按下按鈕)以設(shè)置變量并將其發(fā)送到模型進行推理,或者評估。
在這些課程中,您將了解如何使用這些步驟來準(zhǔn)備、構(gòu)建、測試、評估和預(yù)測—所有這些都是數(shù)據(jù)科學(xué)家的姿態(tài),而且隨著您在成為一名“全棧”ML工程師的旅程中取得進展,您將了解更多。
????挑戰(zhàn)
畫一個流程圖,反映ML的步驟。在這個過程中,您認為自己現(xiàn)在在哪里?您預(yù)測您在哪里會遇到困難?什么對您來說很容易?
閱讀后測驗[14]
復(fù)習(xí)與自學(xué)
在線搜索對討論日常工作的數(shù)據(jù)科學(xué)家的采訪。這是其中之一[15]。
任務(wù)
采訪一名數(shù)據(jù)科學(xué)家[16]
歡迎關(guān)注我的個人公眾號”My IO“
參考
[1]
課前測驗: https://jolly-sea-0a877260f.azurestaticapps.net/quiz/7/
[2]幻燈片: https://www2.cisl.ucar.edu/sites/default/files/0900%20June%2024%20Haupt_0.pdf
[3]聚類: ../../5-Clustering/1-Visualize/README.md
[4]分類: ../../4-Classification/1-Introduction/README.md
[5]Web App: ../3-Web-App/README.md
[6]聚類: ../../5-Clustering/1-Visualize/README.md
[7]特征: https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection
[8]來源: https://wikipedia.org/wiki/Feature_selection
[9]分類: ../../4-Classification/2-Classifiers-1/README.md
[10]時間序列預(yù)測: ../7-TimeSeries/1-Introduction/README.md
[11]Scikit-learn的文檔: https://scikit-learn.org/stable/user_guide.html
[12]Jen Looper: https://twitter.com/jenlooper
[13]在此文檔中: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-15963-cxa
[14]閱讀后測驗: https://jolly-sea-0a877260f.azurestaticapps.net/quiz/8/
[15]其中之一: https://www.youtube.com/watch?v=Z3IjgbbCEfs
[16]采訪一名數(shù)據(jù)科學(xué)家: assignment.md
總結(jié)
以上是生活随笔為你收集整理的微软面向初学者的机器学习课程:1.4-机器学习技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在 C# 9 中使用record类型
- 下一篇: Blazor Server 和 WebA