來源:DeepNoMind
對于初學(xué)者來說,機器學(xué)習(xí)相當復(fù)雜,可能很容易迷失在細節(jié)的海洋里。本文通過將機器學(xué)習(xí)算法分為三個類別,梳理出一條相對清晰的路線,幫助初學(xué)者理解機器學(xué)習(xí)算法的基本原理,從而更高效地學(xué)習(xí)機器學(xué)習(xí)。原文:Machine Learning in Three Steps: How to Efficiently Learn It[1]
當有志于成為數(shù)據(jù)科學(xué)家的學(xué)習(xí)者試圖學(xué)習(xí)機器學(xué)習(xí)算法時,通常會采用兩種極端方法。第一種方法是學(xué)習(xí)并從頭實現(xiàn)所有復(fù)雜算法,從而期待真正掌握這些算法。另一種方法假設(shè)計算機可以自己"學(xué)習(xí)",因此個人沒有必要學(xué)習(xí)算法,從而導(dǎo)致一些人只依賴于諸如lazypredict之類的工具軟件包。
在學(xué)習(xí)機器學(xué)習(xí)算法時,比較現(xiàn)實的是在這兩個極端中間采取某種方法。不過還有問題,那就是從哪里開始呢?本文中我將把機器學(xué)習(xí)算法分為三類,并就從什么開始和可以跳過什么提供一些拙見。
機器學(xué)習(xí)算法的復(fù)雜性
由于可用算法眾多,開始學(xué)習(xí)機器學(xué)習(xí)可能很快就會被壓垮。線性回歸(linear regression)、支持向量機(SVM, support vector machine)、梯度下降(gradient descent)、梯度增強(gradient boosting)、決策樹(decision tree)、LASSO(Least Absolute Shrinkage and Selection Operator)、嶺回歸(ridge)、網(wǎng)格搜索(grid search)、等等,都是在提出這個問題時立馬能夠想到的一些算法。
在監(jiān)督學(xué)習(xí)領(lǐng)域,這些算法有不同的目的和目標。本文只討論監(jiān)督學(xué)習(xí)。
為了更好地理解各種技術(shù),根據(jù)其目標和復(fù)雜度級別進行分類是有幫助的。通過將這些算法組織成不同類別和復(fù)雜度,可以簡化概念,使其更容易理解。這種方法可以極大增強人們對機器學(xué)習(xí)的理解,并幫助確定用于特定任務(wù)或目標的最合適的技術(shù)。
當學(xué)生深入研究機器學(xué)習(xí)領(lǐng)域時,可能會因為其復(fù)雜性而感到氣餒。然而,在付諸實踐之前,沒有必要學(xué)習(xí)或熟悉所有算法。機器學(xué)習(xí)領(lǐng)域的不同職位可能需要不同熟練程度,在某些方面缺乏知識是可以接受的。例如,數(shù)據(jù)科學(xué)家、數(shù)據(jù)分析師、數(shù)據(jù)工程師和機器學(xué)習(xí)研究人員這些不同的角色有不同的要求。
對整個過程有廣泛的理解可以使機器學(xué)習(xí)從業(yè)者在時間緊迫的情況下跳過某些技術(shù)細節(jié),同時仍然理解整個過程。
1. 分解機器學(xué)習(xí)算法
1.1 模型、訓(xùn)練和調(diào)優(yōu)
"機器學(xué)習(xí)算法"的范圍相當廣泛,可以分為三種主要類型的算法:
- 用于接收輸入數(shù)據(jù)并隨后生成預(yù)測的機器學(xué)習(xí)模型,如線性回歸、支持向量機、決策樹、KNN等。
- 用于創(chuàng)建或優(yōu)化模型的**模型訓(xùn)練/擬合算法(model training/fitting algorithms)**,即為特定數(shù)據(jù)集找到模型的參數(shù)。不同的機器學(xué)習(xí)模型有其特定的訓(xùn)練算法。雖然梯度下降是最著名的訓(xùn)練基于數(shù)學(xué)函數(shù)的模型的方法,但其他機器學(xué)習(xí)模型可以使用不同的技術(shù)進行訓(xùn)練,本文將在后面的部分中更詳細探討這些技術(shù)。
- **超參數(shù)調(diào)優(yōu)(hyperparameter tuning)**,即尋找機器學(xué)習(xí)模型的最優(yōu)超參數(shù)。與訓(xùn)練過程相反,超參數(shù)調(diào)優(yōu)的過程通常不依賴于機器學(xué)習(xí)模型。盡管還有其他替代方法,但網(wǎng)格搜索是執(zhí)行此任務(wù)的一種流行且常用的方法,我們將在本文后面深入討論。
1.2 三類ML模型
第一種類型涉及能夠接收數(shù)據(jù)并根據(jù)該數(shù)據(jù)生成預(yù)測的模型。這些模型可以分為三大類:
- 基于距離(Distance-based)的模型,包括K-近鄰(K-nearest-neighbors)、線性判別分析(Linear Discriminant Analysis)和二次判別分析(Quadratic Discriminant Analysis)。在scikit-learn庫中,這些也被稱為"估算器(estimators)"。
- 基于決策樹(Decision tree)的模型,例如單個決策樹(用于分類或回歸)、隨機森林(Random Forest)和梯度增強決策樹(Gradient-Boosted Decision Trees)。
- 基于數(shù)學(xué)函數(shù)(Mathematical functions)的模型,也被稱為參數(shù)模型,是假設(shè)輸入和輸出之間關(guān)系的特定函數(shù)形式的模型??梢赃M一步分為線性模型(linear model),如OLS回歸、SVM(具有線性核)、Ridge和LASSO,以及非線性模型,如具有非線性核的SVM和神經(jīng)網(wǎng)絡(luò)。
1.3 元模型和集成方法
在機器學(xué)習(xí)中,元模型(meta-model)是一種將多個個體模型的預(yù)測結(jié)果結(jié)合起來以獲得更準確預(yù)測的模型,也被稱為"堆疊模型(stacked model)"或"超級學(xué)習(xí)器(super learner)"。構(gòu)成元模型的個體模型可以是不同類型的或使用不同算法,它們的預(yù)測結(jié)果可以通過加權(quán)平均或其他技術(shù)進行組合。
元模型的目標是通過減少個體模型可能存在的方差和偏差來提高預(yù)測的總體準確性和魯棒性,并且通過捕捉數(shù)據(jù)中更復(fù)雜的模式來克服個體模型的局限性。
常見的創(chuàng)建元模型的方法是基于集成的方法,比如打包(bagging)、增強(boosting)或堆疊(stacking)。
- 打包(Bagging)或Bootstrap Aggregating是一種通過組合基于數(shù)據(jù)集的不同樣本訓(xùn)練多個模型來減少模型方差的機器學(xué)習(xí)技術(shù)。Bagging背后的思想是生成多個模型,每個模型都有一個數(shù)據(jù)子集,然后組合起來創(chuàng)建一個更健壯、更不易過擬合的模型。
- 增強(Boosting)是另一種集成方法,將多個弱模型組合在一起創(chuàng)建一個強模型。與Bagging不同的不同之處在于,Bagging是獨立訓(xùn)練每個模型,而Boosting是按順序訓(xùn)練模型,每個新模型都是在之前模型錯誤分類的數(shù)據(jù)上進行訓(xùn)練,通過匯總所有模型的預(yù)測來完成最終的預(yù)測。
- 堆疊(Stacking)或堆疊泛化(stacked generalization),是一種元模型集成方法,方法是訓(xùn)練多個基本模型,并以基本模型的預(yù)測作為更高級模型的輸入,高級模型通過結(jié)合基本模型的預(yù)測來做出最終預(yù)測。
- 隨機森林(Random forests)是Bagging的延伸,增加了額外的隨機性。除了對數(shù)據(jù)進行隨機抽樣外,隨機森林還為每個分割隨機選擇特征子集,從而有助于減少過擬合并增加集合中模型的多樣性。
集成方法最常應(yīng)用于決策樹,而非線性回歸等線性模型。這是因為決策樹比線性模型更容易出現(xiàn)過擬合,而集成方法通過組合多個模型有助于減少過擬合。
決策樹有高方差和低偏差,意味著容易過度擬合訓(xùn)練數(shù)據(jù),導(dǎo)致在新的、未見過的數(shù)據(jù)上表現(xiàn)不佳。集成方法通過聚合多個決策樹的預(yù)測來解決這個問題,從而產(chǎn)生更健壯和準確的模型。
另一方面,線性模型(如線性回歸)具有低方差和高偏差,意味著不太容易過度擬合,但可能造成欠擬合。集成方法對線性模型不那么有效,因為模型已經(jīng)是低方差的,無法從聚合中獲益。
然而,在某些情況下,集成方法仍然可以應(yīng)用于線性模型。例如,Bagging中使用的自舉聚合技術(shù)可以應(yīng)用于任何類型模型,包括線性回歸。在這種情況下,Bagging算法會對訓(xùn)練數(shù)據(jù)進行采樣,并在自舉樣本上擬合多個線性回歸模型,從而使模型更穩(wěn)定、更具有魯棒性。然而,值得注意的是,得到的模型仍然是線性回歸模型,而不是元模型。
總的來說,雖然集成方法最常用于決策樹,但在某些情況下,也可以與線性模型一起使用,重要的是要記住每種模型的優(yōu)點和局限性,并為手頭的問題選擇合適的方法。
1.4 機器學(xué)習(xí)算法概述
下圖提供了三類機器學(xué)習(xí)算法的摘要,本文后續(xù)部分將更深入研究每個類別。
機器學(xué)習(xí)算法概述
2. 機器學(xué)習(xí)模型
本節(jié)我們將仔細研究機器學(xué)習(xí)模型的三大類別:
(1) 基于距離的模型
基于距離的模型:KNN
貝葉斯分類:LDA, QDA
(2) 決策樹模型
(3) 基于數(shù)學(xué)函數(shù)的模型
- 線性模型
- 核支持向量機(kernel SVM)或核嶺(kernel ridge)等核化模型(Kernelized models)
- 神經(jīng)網(wǎng)絡(luò)
2.1 基于距離的模型
第一類機器學(xué)習(xí)模型是基于距離的模型,這些模型利用數(shù)據(jù)點之間的距離進行預(yù)測。
最簡單、最具代表性的模型是K近鄰模型(KNN, K-Nearest Neighbors),可以計算新數(shù)據(jù)點與數(shù)據(jù)集中所有現(xiàn)有數(shù)據(jù)點之間的距離,然后選擇K個最近的鄰居,并將新數(shù)據(jù)點分配給K個鄰居中最常見的類。
在檢驗K近鄰(KNN)算法時,注意到在訓(xùn)練階段沒有建立顯式模型。在KNN中,對新觀測值的預(yù)測是通過在訓(xùn)練集中找到與該觀測值最近的K個鄰居,并取其目標值的平均值或多數(shù)投票來完成的。
與其他算法在訓(xùn)練期間將模型擬合到數(shù)據(jù)不同,KNN存儲整個訓(xùn)練數(shù)據(jù)集,并簡單地計算新觀測值與現(xiàn)有數(shù)據(jù)集之間的距離來進行預(yù)測。因此,KNN可以被認為是一種"懶學(xué)習(xí)(lazy learning)"算法,在訓(xùn)練階段不主動構(gòu)建模型,并將決策過程推遲到推理時。
因此,推理/測試階段可能很慢,可以用更有效的算法(如k-d樹)進行優(yōu)化。
2.2 貝葉斯分類
線性判別分析(LDA,Linear Discriminant Analysis)和二次判別分析(QDA,Quadratic Discriminant Analysis)都是基于距離的模型,利用馬氏距離(Mahalanobis distance)進行預(yù)測,馬氏距離是點和分布之間距離的度量,因此考慮到了變量之間的相關(guān)性。
LDA假設(shè)不同類別的方差相同,而QDA假設(shè)每個類別的方差不同。這意味著LDA假設(shè)所有類別的協(xié)方差矩陣是相同的,而QDA允許每個類別有自己的協(xié)方差矩陣。
2.3 基于決策樹的模型
第二種機器學(xué)習(xí)模型是基于決策樹的模型,也被稱為基于規(guī)則的模型(rule-based models)。這種模型生成一組規(guī)則,用來解釋如何做出決策或預(yù)測。
決策樹的每個分支代表一個規(guī)則或條件,用于確定接下來要遵循的數(shù)據(jù)子集。這些規(guī)則通常采用簡單的if-then語句的形式,例如"如果變量X的值大于5,則遵循左分支,否則遵循右分支"。
決策樹的最終葉節(jié)點表示的是基于輸入變量值以及相關(guān)規(guī)則所做出的目標變量預(yù)測類/值。
決策樹的優(yōu)點是易于解釋和理解,因為規(guī)則可以以清晰直觀的方式可視化和解釋,因此對于向非技術(shù)相關(guān)方解釋預(yù)測或決策背后的原因非常有用。
然而,決策樹也容易出現(xiàn)過擬合,當模型變得過于復(fù)雜,與訓(xùn)練數(shù)據(jù)擬合過于緊密時,就會出現(xiàn)過擬合,從而導(dǎo)致對新數(shù)據(jù)的泛化能力差。為了解決這個問題,通常將集成方法應(yīng)用于決策樹。
2.4 基于數(shù)學(xué)函數(shù)的模型
第三類機器學(xué)習(xí)模型是基于數(shù)學(xué)函數(shù)的模型,基于數(shù)學(xué)函數(shù)模擬輸入變量和目標變量之間的關(guān)系。線性模型(如普通最小二乘(OLS,Ordinary Least Squares)回歸、具有線性核的支持向量機(SVM,Support Vector Machines)、Ridge、LASSO)假設(shè)輸入變量與目標變量之間的關(guān)系是線性的。非線性模型,如具有非線性核的支持向量機和神經(jīng)網(wǎng)絡(luò),可以模擬輸入變量和目標變量之間更復(fù)雜的關(guān)系。
對于基于數(shù)學(xué)函數(shù)的模型,如線性回歸或邏輯回歸,必須定義損失函數(shù)。損失函數(shù)衡量模型的預(yù)測與實際數(shù)據(jù)的匹配程度,目標是通過調(diào)整模型參數(shù)最小化損失函數(shù)。
相比之下,對于非數(shù)學(xué)函數(shù)為基礎(chǔ)的模型(如KNN或決策樹),不需要定義損失函數(shù),而是通過不同的方法進行匹配,例如在KNN的情況下找到最近的鄰居,或者在決策樹的情況下根據(jù)特征值遞歸分割數(shù)據(jù)。
在基于數(shù)學(xué)函數(shù)的模型中,定義合適的損失函數(shù)至關(guān)重要,因為它決定了模型要解決的優(yōu)化問題??梢愿鶕?jù)手頭問題使用不同的損失函數(shù),例如回歸問題的均方誤差或二元分類問題的交叉熵。
值得注意的是,所有具有線性核的線性模型(如OLS、LASSO、Ridge、SVM等),都可以寫成線性方程y = wX + b的形式。然而,這些模型之間的區(qū)別在于用于估計模型參數(shù)w和b的最優(yōu)值的代價函數(shù)。
因此,雖然所有這些模型都可以以相同的數(shù)學(xué)函數(shù)的形式編寫,但重要的是要注意選擇的代價函數(shù)決定了模型的行為和性能,因此可以將它們視為具有不同代價函數(shù)的不同模型,而不是具有不同代價函數(shù)的同一模型。
非線性模型是解決復(fù)雜機器學(xué)習(xí)問題的強大工具,而線性模型無法充分解決這些問題。在實踐中基本上有兩種方法:核技巧(kernel trick)和神經(jīng)網(wǎng)絡(luò)。
核技巧是一種有效實現(xiàn)特征映射的方法,無需顯式計算轉(zhuǎn)換后的特征。相反,它定義核函數(shù)來計算轉(zhuǎn)換后的特征空間中輸入樣本對之間的相似性。通過使用核函數(shù),可以隱式地將輸入數(shù)據(jù)映射到高維空間,在高維空間中可以更容易地分離和建模。
從這個意義上說,核部分可以看作是特征工程的一種形式,其中模型能夠創(chuàng)建更適合手頭任務(wù)的新特征。這與傳統(tǒng)特征工程不一樣,在傳統(tǒng)特征工程中,人類專家根據(jù)領(lǐng)域知識和直覺手動創(chuàng)建新特征。
另一種創(chuàng)建非線性模型的方法是使用神經(jīng)網(wǎng)絡(luò)。它們由相互連接的節(jié)點或"神經(jīng)元"層組成,每個節(jié)點對其輸入執(zhí)行簡單的數(shù)學(xué)運算,并將結(jié)果傳遞給下一層。
神經(jīng)網(wǎng)絡(luò)強大的關(guān)鍵在于能夠?qū)W習(xí)輸入和輸出之間復(fù)雜的非線性關(guān)系。這是通過在訓(xùn)練期間根據(jù)預(yù)測輸出和實際輸出之間的誤差調(diào)整神經(jīng)元之間連接的權(quán)重來實現(xiàn)的。
2.5 深度學(xué)習(xí)模型
深度學(xué)習(xí)的重點是通過多層結(jié)構(gòu)來學(xué)習(xí)數(shù)據(jù)的表示。近年來,由于其在計算機視覺、自然語言處理和語音識別等應(yīng)用中的廣泛成功,變得越來越受歡迎。雖然深度學(xué)習(xí)模型有大量參數(shù)和層,實現(xiàn)相對復(fù)雜,但其特征工程也是其重要部分之一。
卷積神經(jīng)網(wǎng)絡(luò)(CNN,convolutional neural network)是深度學(xué)習(xí)模型的一個例子,其核心是對輸入圖像應(yīng)用一系列濾波器,每個濾波器尋找特定的特征,如邊緣或角,然后網(wǎng)絡(luò)的下一層使用這些提取的特征對輸入圖像進行分類。
像CNN這樣的深度學(xué)習(xí)模型可以被認為是特征工程和可訓(xùn)練模型的結(jié)合。該模型的特征工程涉及設(shè)計網(wǎng)絡(luò)架構(gòu)以從輸入數(shù)據(jù)中提取有用的特征,而可訓(xùn)練模型涉及優(yōu)化網(wǎng)絡(luò)參數(shù)以擬合數(shù)據(jù)并做出準確的預(yù)測。
3. 模型訓(xùn)練/擬合
訓(xùn)練機器學(xué)習(xí)模型是通過向模型展示一組標記的示例來教模型做出預(yù)測或決策的過程。標記的示例,也稱為訓(xùn)練數(shù)據(jù),由成對的輸入特征和輸出標簽組成。
在訓(xùn)練過程中,機器學(xué)習(xí)模型學(xué)習(xí)識別輸入特征及其對應(yīng)的輸出標簽中的模式。該模型使用特定算法從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)并調(diào)整其內(nèi)部參數(shù),以提高對新數(shù)據(jù)的預(yù)測或分類能力。
一旦模型在標記的例子上進行了訓(xùn)練,就可以用來對新的、沒見過的數(shù)據(jù)進行預(yù)測或決策,這個過程被稱為推理或測試。
不同的機器學(xué)習(xí)模型有不同的訓(xùn)練算法,以下是不同機器學(xué)習(xí)模型使用的訓(xùn)練算法的一些示例。
3.1 基于距離的模型訓(xùn)練
KNN是一種不需要顯式訓(xùn)練的非參數(shù)算法。它存儲整個訓(xùn)練數(shù)據(jù)集,并用來預(yù)測新實例的標簽,方法是根據(jù)一些距離度量在訓(xùn)練數(shù)據(jù)集中找到K個最接近的實例,然后根據(jù)K個最近鄰居的多數(shù)投票進行預(yù)測。
LDA是一種用于分類任務(wù)的監(jiān)督學(xué)習(xí)算法。LDA對每個類的輸入特征的分布進行建模,并用該信息找到輸入特征的線性組合,使類之間的分離最大化。得到的線性判別式可以用來對新實例進行分類。
LDA的訓(xùn)練過程包括估計每個類別的輸入特征的均值和協(xié)方差矩陣,然后用這些估值來計算類內(nèi)和類間散點矩陣,這些散點矩陣用于導(dǎo)出線性判別式,線性判別式的數(shù)量等于類的數(shù)量減一。
3.2 基于決策樹的模型訓(xùn)練
至于決策樹,通常用一種稱為遞歸劃分的方法進行訓(xùn)練。
遞歸分區(qū)從整個數(shù)據(jù)集開始,自上而下根據(jù)一組規(guī)則或條件將其分成子集。在每個子集上遞歸重復(fù)分割過程,直到滿足停止條件(通常是當子集變得太小或進一步分割無法提高模型性能時)。
分割規(guī)則基于數(shù)據(jù)集特征或?qū)傩?,算法在每一步中選擇對模型性能改善最顯著的特征。分割過程產(chǎn)生一個樹狀結(jié)構(gòu),其中內(nèi)部節(jié)點表示分割條件,葉節(jié)點表示最終預(yù)測。
在訓(xùn)練過程中,可以使用各種度量來評估決策樹,例如信息增益或基尼雜質(zhì)(Gini impurity),以確定最佳分割標準。一旦訓(xùn)練好決策樹,就可以根據(jù)輸入特征從根節(jié)點找到適當?shù)娜~節(jié)點路徑,對新的、未知的數(shù)據(jù)進行預(yù)測。
3.3 基于數(shù)學(xué)函數(shù)的模型訓(xùn)練
基于數(shù)學(xué)函數(shù)的模型,也稱為參數(shù)模型,是為輸入和輸出之間的關(guān)系假設(shè)特定函數(shù)形式的模型。
用于優(yōu)化基于數(shù)學(xué)函數(shù)的模型參數(shù)的最基本算法是梯度下降(gradient descent)。梯度下降是一種迭代優(yōu)化算法,它首先對參數(shù)值進行初始猜測,然后根據(jù)損失函數(shù)相對于參數(shù)的梯度對參數(shù)值進行更新,持續(xù)這一過程直到算法收斂到損失函數(shù)最小為止。
對于非凸函數(shù)(non-convex functions),通常用隨機梯度下降(SGD, stochastic gradient descent)來代替梯度下降,SGD在每次迭代時隨機抽取一個數(shù)據(jù)子集來計算梯度,這種方法比梯度下降算法更快、更有效。
在神經(jīng)網(wǎng)絡(luò)中,反向傳播(backpropagation)用于計算損失函數(shù)相對于參數(shù)的梯度。反向傳播本質(zhì)上就是將微積分的鏈式法則應(yīng)用于由神經(jīng)網(wǎng)絡(luò)表示的復(fù)合函數(shù),可以有效計算網(wǎng)絡(luò)每層的梯度,對于訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)必不可少。
對于深度學(xué)習(xí)模型,通常使用更高級的優(yōu)化技術(shù)來提高性能,包括動量(momentum)和自適應(yīng)學(xué)習(xí)率(adaptive learning rate)等技術(shù),動量可以幫助算法避免陷入局部最小值,自適應(yīng)學(xué)習(xí)率可以在訓(xùn)練過程中自動調(diào)整學(xué)習(xí)率,以提高收斂速度和穩(wěn)定性。
綜上所述,梯度下降是優(yōu)化函數(shù)模型參數(shù)的基本算法。對于非凸函數(shù),通常使用隨機梯度下降法。反向傳播用于計算神經(jīng)網(wǎng)絡(luò)中的梯度,此外還有其他更高級的技術(shù)用于深度學(xué)習(xí)模型。
4. 模型優(yōu)化
機器學(xué)習(xí)的第三個方面包括通過使用網(wǎng)格搜索來優(yōu)化模型的超參數(shù)(hyperparameters)。超參數(shù)是模型的設(shè)置或配置,這些設(shè)置或配置不是在訓(xùn)練過程中學(xué)習(xí)到的,而必須手動指定。
超參數(shù)的例子包括學(xué)習(xí)率、神經(jīng)網(wǎng)絡(luò)中隱藏層的數(shù)量以及正則化強度等,通過使用網(wǎng)格搜索,評估多個超參數(shù)組合,從而可以確定模型的最佳配置。
網(wǎng)格搜索是一種用于優(yōu)化機器學(xué)習(xí)模型超參數(shù)的常用技術(shù)。然而,這并不是唯一可用的方法,還有其他幾種可用于微調(diào)模型參數(shù)的替代方法,一些最流行的替代方案包括:
- 隨機網(wǎng)格搜索:與網(wǎng)格搜索相比,隨機搜索涉及從預(yù)定義范圍內(nèi)隨機采樣超參數(shù),從而更有效的探索參數(shù)空間。
- 貝葉斯優(yōu)化:貝葉斯優(yōu)化利用概率模型,通過迭代評估模型性能,更新超參數(shù)的概率分布,找到超參數(shù)的最優(yōu)集合。
- 遺傳算法:遺傳算法模擬自然選擇過程,通過產(chǎn)生一組潛在的解決方案,評估其性能,并選擇最適合的個體進行繁殖,從而找到最優(yōu)的超參數(shù)集。
- 基于梯度的優(yōu)化:基于梯度的優(yōu)化涉及使用梯度迭代調(diào)整超參數(shù),目的是最大化模型性能。
- 基于集成的優(yōu)化:基于集成的優(yōu)化涉及將具有不同超參數(shù)的多個模型組合在一起,以創(chuàng)建更具魯棒性和更準確的最終模型。
每種替代方法都有其優(yōu)缺點,需要根據(jù)所處理的特定問題、參數(shù)空間大小和可用計算資源選擇最佳方法。
5. 高效學(xué)習(xí)機器學(xué)習(xí)的幾個技巧
現(xiàn)在我們對機器學(xué)習(xí)算法的不同類別有了大致了解,接下來探索一下為了創(chuàng)建有效的預(yù)測模型,需要學(xué)習(xí)什么。
5.1 算法太難學(xué)?
如果我們從一些乍一看可能很復(fù)雜的算法開始,就會覺得機器學(xué)習(xí)是個具有挑戰(zhàn)性的領(lǐng)域。然而,通過將該過程分解為三個階段(建模、擬合和調(diào)優(yōu)),就能夠獲得更清晰的理解。
例如,學(xué)習(xí)支持向量機(SVM)對于數(shù)據(jù)科學(xué)家來說可能令人生畏,因為有大量的技術(shù)術(shù)語,如最優(yōu)超平面(optimal hyperplane)、無約束最小化(unconstrained minimization)、對偶性(原始和對偶形式)、拉格朗日乘子(Lagrange multipliers)、Karush-Kuhn-Tucker條件、二次規(guī)劃等等。然而,有必要將SVM只是理解為一個線性模型,和OLS回歸類似,方程為y = wX + b。
雖然上面提到的各種技術(shù)可以被用來優(yōu)化SVM,但重要的是不要陷入技術(shù)問題的泥潭,而是要關(guān)注SVM作為線性模型的基本概念。
5.2 了解模型
我們已經(jīng)討論了三種類型的機器學(xué)習(xí)算法——模型、擬合算法和調(diào)優(yōu)算法。在我看來,對于數(shù)據(jù)科學(xué)家來說,重要的是將理解模型置于其他兩個步驟之上。
從這個角度來看,將機器學(xué)習(xí)模型分為三種主要類型,從而有助于理解其功能:
基于距離的模型:在這種類型中,KNN不是一個合適的模型,因為新數(shù)據(jù)的距離是直接計算的,而在LDA或QDA中,是基于分布距離計算。
基于決策樹的模型:決策樹遵循if-else規(guī)則,形成一組可用于決策的規(guī)則。
基于數(shù)學(xué)函數(shù)的模型:可能不太容易理解,然而函數(shù)通常都很簡單。
一旦對模型如何工作有了堅實的理解,就可以使用預(yù)先存在的包來進行擬合和調(diào)優(yōu):對于擬合,流行的scikit-learn庫提供了model.fit方法。而對于調(diào)優(yōu),像Optuna這樣的工具通過study.optimize提供了高效的學(xué)習(xí)優(yōu)化技術(shù)。通過專注于理解模型本身,數(shù)據(jù)科學(xué)家可以更好地為自己在該領(lǐng)域的成功做好準備。
對于一些獨立模型,如果采用這種方法,可以提升對其的理解,這里有一些例子:
- 多項式回歸是對特征進行不同次冪變換后的線性回歸。
- 線性回歸、ridge、LASSO和SVR是相同的模型,只是底層代價函數(shù)不同。
- 線性回歸、邏輯回歸和支持向量機是同一模型,只是底層代價函數(shù)不同。你可能會注意到線性回歸是回歸量而邏輯回歸和支持向量機是分類器,請閱讀SGDClassifier的文檔或查看關(guān)于SGDClassifier的這篇文章[2]。
10個最常見但最令人困惑的機器學(xué)習(xí)模型名稱說明[3]這篇文章說明理解模型并不總是直截了當?shù)摹?/p>
5.3 模型可視化
在理解模型時,可視化是一個非常有用的工具。當使用機器學(xué)習(xí)模型時,使用簡單的數(shù)據(jù)集創(chuàng)建可視化可以幫助說明模型是如何創(chuàng)建以及如何工作的。
下面一些文章涵蓋的主題包括線性回歸的可視化,也可以應(yīng)用于ridge、lasso、SVM以及神經(jīng)網(wǎng)絡(luò)。
另一種方法是在Excel中實現(xiàn)模型,因為它可以提供一種可視化的方式來查看數(shù)據(jù)和模型的輸出。
- Visualization of linear regression[4]
- Visualization of neural networks[5]
- Visualization of Decision Tree Regressors[6]
- Nearest Neighbors Regressors — A Visual Guide[7]
線性回歸的可視化
不同特征尺度的KNN回歸器
5.4 使用Excel了解擬合過程
一開始,了解擬合過程可能會讓人望而生畏。但是,如果想要學(xué)習(xí),那么首先要對模型的工作原理有一個堅實的理解。在這方面,一個特別有用的工具是微軟Excel。
Excel是一個廣泛使用的電子表格程序,可用于可視化和操作數(shù)據(jù)。在機器學(xué)習(xí)領(lǐng)域,可以用來演示擬合過程是如何工作的簡單模型(如線性回歸)。通過使用Excel,可以看到這個算法是如何一步步實現(xiàn)的。
要記住,雖然Excel可以是一種理解簡單數(shù)據(jù)集的擬合過程的有效方法,但并不是機器學(xué)習(xí)最有效工具。
用Excel來理解擬合過程對于機器學(xué)習(xí)初學(xué)者來說是一個有用的工具,它提供了一種簡單易用的方法來可視化算法并了解它們是如何工作的。
下面是幾篇關(guān)于線性回歸、邏輯回歸和神經(jīng)網(wǎng)絡(luò)梯度下降的文章。
- K-Nearest neighbors in Excel[8]
- Linear Regression With Gradient Descent in Excel[9]
- Logistic Regression With Gradient Descent in Excel[10]
- Neural Network Classifier from Scratch in Excel[11]
- Decision Tree Regressors in Excel[12]
- Implementing KNN in Excel[13]
- K-means from Scratch in Excel[14]
- Neural Network with Backpropagation in Excel[15]
基于Excel的機器學(xué)習(xí)算法
5.5 使用簡單數(shù)據(jù)集進行測試
為了全面理解機器學(xué)習(xí)算法,從頭開始實現(xiàn)可能是一種有效方法,然而這種方法可能相當耗時,并且可能需要高水平的技術(shù)熟練度。另一種方法是使用預(yù)先訓(xùn)練好的包或庫來使用簡單的數(shù)據(jù)集創(chuàng)建和可視化模型的輸出。
通過這些包,可以輕松試驗不同參數(shù)并測試各種機器學(xué)習(xí)算法。這種方法可以幫助我們了解算法的內(nèi)部工作原理,同時也使我們能夠快速評估在特定數(shù)據(jù)集上的有效性。
通過使用這樣的數(shù)據(jù)集,可以很容易可視化模型的輸入和輸出。反過來,也可以讓我們更深入了解模型是如何進行預(yù)測的。此外,通過改變模型的超參數(shù)和其他方面,還可以可視化這些變化對模型預(yù)測的影響。
這種方法可以幫助初學(xué)者開始機器學(xué)習(xí),并更好地理解不同算法的工作原理。這是一種獲得實踐經(jīng)驗和試驗不同模型的極好方法,而無需在實現(xiàn)上花費太多時間。
6. 結(jié)論
總之,機器學(xué)習(xí)是一個復(fù)雜的領(lǐng)域。然而,了解三種主要類型的機器學(xué)習(xí)算法(模型、擬合算法和調(diào)優(yōu)算法),并根據(jù)它們的目標和復(fù)雜性進行分類,可以幫助我們?nèi)媪私馄涔ぷ髟?。通過優(yōu)先理解模型,將它們可視化,并在Excel等工具中實現(xiàn),可以揭開擬合和調(diào)優(yōu)過程的神秘面紗。
不斷學(xué)習(xí)機器學(xué)習(xí)的不同方面至關(guān)重要,例如分類與回歸、處理缺失值和變量權(quán)重,以不斷加深對該領(lǐng)域的理解。如果想了解更多,請查看這篇文章:監(jiān)督機器學(xué)習(xí)算法概述[16]。
你好,我是俞凡,在Motorola做過研發(fā),現(xiàn)在在Mavenir做技術(shù)工作,對通信、網(wǎng)絡(luò)、后端架構(gòu)、云原生、DevOps、CICD、區(qū)塊鏈、AI等技術(shù)始終保持著濃厚的興趣,平時喜歡閱讀、思考,相信持續(xù)學(xué)習(xí)、終身成長,歡迎一起交流學(xué)習(xí)。
微信公眾號:DeepNoMind
-
人工智能
+關(guān)注
關(guān)注
1789文章
46652瀏覽量
237071 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8349瀏覽量
132312
發(fā)布評論請先 登錄
相關(guān)推薦
評論