數(shù)據(jù)科學家必備:從回歸到CNN,簡明概述常見機器學習模型
機器學習是現(xiàn)代人工智能的核心,支撐著從推薦系統(tǒng)到自動駕駛汽車等各類應用。但每一個智能應用背后,都離不開那些奠定基礎(chǔ)的模型。本文將為你簡明而全面地梳理關(guān)鍵的機器學習模型,幫助你系統(tǒng)掌握核心概念與應用。
線性回歸(Linear Regression)
線性回歸旨在通過尋找一條“最佳擬合直線”,來建立自變量與因變量之間的關(guān)系。它使用最小二乘法(least square method),使所有數(shù)據(jù)點到直線的距離之和最小化。最小二乘法通過最小化殘差平方和(SSR,Sum of Squared Residuals),來確定最終的線性方程。
例如,下圖中的綠色直線相比藍色直線擬合得更好,因為它與所有數(shù)據(jù)點的距離更小。
圖片
Lasso 回歸(L1 正則化)
Lasso 回歸是一種正則化技術(shù),通過在模型中引入一定的偏差來減少過擬合。它的做法是在最小化殘差平方差的基礎(chǔ)上,增加一個懲罰項,這個懲罰項等于 λ(lambda)乘以斜率的絕對值。這里的 λ 表示懲罰的強度,是一個可以調(diào)整的超參數(shù),用來控制過擬合并獲得更好的擬合效果。
Lasso 回歸的代價函數(shù)
當特征數(shù)量較多時,L1 正則化通常是更優(yōu)的選擇,因為它可以忽略掉那些斜率值非常小的變量,從而實現(xiàn)特征選擇。
展示正則化對過擬合回歸線影響的圖表
Ridge 回歸(L2 正則化)
Ridge 回歸與 Lasso 回歸非常相似,唯一的區(qū)別在于懲罰項的計算方式。它在損失函數(shù)中增加了一個懲罰項,這個懲罰項等于各系數(shù)幅值的平方乘以 λ(lambda)。
Ridge 回歸的代價函數(shù)
當數(shù)據(jù)中存在多重共線性(即自變量之間高度相關(guān))時,L2 正則化是更好的選擇,因為它可以將所有系數(shù)收縮(Shrinkage)向零,從而緩解共線性問題。
Elastic Net 回歸
Elastic Net 回歸結(jié)合了 Lasso 回歸和 Ridge 回歸的懲罰項,從而得到一個更加正則化的模型。它可以在兩種懲罰之間取得平衡,通常比單獨使用 L1 或 L2 正則化獲得更優(yōu)的模型性能。
圖片
多項式回歸(Polynomial Regression)
多項式回歸將因變量與自變量之間的關(guān)系建模為一個 n 次多項式。多項式是由形如 k·x? 的各項之和組成的,其中 n 是非負整數(shù),k 是常數(shù),x 是自變量。多項式回歸主要用于處理非線性數(shù)據(jù)。
在非線性數(shù)據(jù)上擬合簡單線性回歸線與多項式回歸線的對比
邏輯回歸(Logistic Regression)
邏輯回歸是一種分類技術(shù),旨在為數(shù)據(jù)找到最佳擬合曲線。它使用Sigmoid 函數(shù)將輸出值壓縮到 0 到 1 的范圍內(nèi)。不同于線性回歸通過最小二乘法尋找最佳擬合直線,邏輯回歸采用最大似然估計(MLE)來確定最佳擬合曲線。
線性回歸與邏輯回歸在二分類輸出上的對比
K 近鄰算法(K-Nearest Neighbours,KNN)
KNN 是一種分類算法,它根據(jù)新數(shù)據(jù)點與已分類數(shù)據(jù)點之間的距離進行分類。它假設(shè)彼此接近的數(shù)據(jù)點具有高度相似性。
由于 KNN 在訓練階段僅存儲數(shù)據(jù)而不進行實際分類,直到遇到新的數(shù)據(jù)點進行預測,因此被稱為懶惰學習算法(lazy learner)。
默認情況下,KNN 使用歐幾里得距離來尋找新數(shù)據(jù)點最近的已分類數(shù)據(jù)點,并通過最近鄰居中出現(xiàn)次數(shù)最多的類別(眾數(shù))來確定新數(shù)據(jù)點的預測類別。
如果 k 值設(shè)置得過小,新數(shù)據(jù)點可能被誤判為異常值;如果 k 值設(shè)置得過大,則可能忽略樣本數(shù)量較少的類別。
應用 KNN 前后的數(shù)據(jù)分布變化
樸素貝葉斯(Naive Bayes)
樸素貝葉斯是一種基于貝葉斯定理的分類技術(shù),主要用于文本分類。
貝葉斯定理描述了在已知與事件相關(guān)的條件的先驗知識基礎(chǔ)上,計算事件發(fā)生的概率。它的公式如下所示:
貝葉斯定理公式
樸素貝葉斯被稱為“樸素”的原因是,它假設(shè)某一特征的出現(xiàn)與其他特征的出現(xiàn)是相互獨立的。
支持向量機(Support Vector Machines,SVM)
支持向量機的目標是找到一個超平面,在 n 維空間(即特征的數(shù)量為 n)中將數(shù)據(jù)點分割成不同的類別。這個超平面是通過最大化類之間的邊距(即距離)來確定的。
支持向量是離超平面最近的數(shù)據(jù)點,它們能夠影響超平面的定位和方向,幫助最大化類之間的邊距。超平面的維度取決于輸入特征的數(shù)量。
支持向量機在線性可分數(shù)據(jù)上的應用
決策樹(Decision Tree)
決策樹是一種基于樹形結(jié)構(gòu)的分類器,包含一系列條件語句,這些條件語句決定了樣本沿著哪條路徑走,直到到達樹的底部。
決策樹示例
決策樹的內(nèi)部節(jié)點表示特征,分支表示決策規(guī)則,葉節(jié)點表示結(jié)果。樹的決策節(jié)點類似于 if-else 條件,葉節(jié)點包含決策節(jié)點的輸出。
決策樹的構(gòu)建從選擇一個特征作為根節(jié)點開始,使用特征選擇度量(如 ID3 或 CART),然后遞歸地將剩余的特征與父節(jié)點進行比較,創(chuàng)建子節(jié)點,直到樹達到其葉節(jié)點。
隨機森林(Random Forest)
隨機森林是一種集成技術(shù),由多個決策樹組成。在構(gòu)建每個獨立的決策樹時,隨機森林使用了自助法(bagging)和特征隨機化,目的是創(chuàng)建一個無關(guān)的決策樹森林。
隨機森林中的每棵樹都是在數(shù)據(jù)的不同子集上訓練的,用于預測結(jié)果,然后選擇大多數(shù)樹投票的結(jié)果作為最終的預測值。
包含 4 個估計器的隨機森林分類器
例如,如果我們只創(chuàng)建了一棵決策樹,第二棵樹的預測結(jié)果為類 0,但依賴于四棵樹的眾數(shù)后,我們的預測結(jié)果變成了類 1,這就是隨機森林的強大之處。
極限隨機樹(Extra Trees)
極限隨機樹與隨機森林分類器非常相似,唯一的區(qū)別在于它們選擇根節(jié)點的方式。在隨機森林中,使用最優(yōu)特征進行分割,而在極限隨機樹分類器中,隨機選擇特征進行分割。極限隨機樹提供了更多的隨機性,并且特征之間的相關(guān)性非常小。
另外,兩者的另一個區(qū)別是,隨機森林使用自助法(bootstrap replicas)生成大小為 N 的子集來訓練集成成員(決策樹),而極限隨機樹則使用整個原始樣本。
由于極限隨機樹在訓練到預測的整個過程中,每棵決策樹的操作都是相同的,并且隨機選擇分割點,因此它的計算速度比隨機森林快得多。
隨機森林與極限隨機樹的比較
ADA Boost
ADA Boost 是一種提升算法,它與隨機森林相似,但也有一些顯著的區(qū)別:
- 與構(gòu)建決策樹森林不同,ADA Boost 構(gòu)建的是決策樹樁的森林。(決策樹樁是只有一個節(jié)點和兩個葉子的決策樹)
- 每個決策樹樁在最終決策中被賦予不同的權(quán)重。
- 它會對被錯誤分類的數(shù)據(jù)點賦予更高的權(quán)重,以便在構(gòu)建下一個模型時,這些數(shù)據(jù)點能得到更多的關(guān)注。
- 它有助于將多個“弱分類器”組合成一個強分類器。
提升集成學習算法的一般過程
梯度提升(Gradient Boosting)
梯度提升通過構(gòu)建多個決策樹,其中每棵樹都從前一棵樹的錯誤中學習。它使用殘差誤差來提高預測性能。梯度提升的整個目標是盡可能減少殘差誤差。
梯度提升與 ADA Boost 相似,兩者的區(qū)別在于,ADA Boost 構(gòu)建決策樹樁,而梯度提升則構(gòu)建具有多個葉子的決策樹。
梯度提升的過程從構(gòu)建一棵基本的決策樹開始,并做出初步預測,通常使用平均值作為初始預測。然后,通過使用初始特征和殘差誤差作為自變量,創(chuàng)建新的一棵決策樹。對于新決策樹的預測,是通過將模型的初始預測加上樣本的殘差誤差乘以學習率得到的,整個過程會不斷重復,直到我們達到最小誤差為止。
K-Means 聚類
KMeans 聚類是一種無監(jiān)督的機器學習算法,它將沒有標簽的數(shù)據(jù)分成 K 個不同的簇,其中 K 是用戶定義的整數(shù)。
它是一個迭代算法,通過使用簇的質(zhì)心(centroid)將沒有標簽的數(shù)據(jù)劃分為 K 個簇,使得具有相似屬性的數(shù)據(jù)點屬于同一簇。
- 定義 K 并創(chuàng)建 K 個簇
- 計算每個數(shù)據(jù)點與 K 個質(zhì)心的歐幾里得距離
- 將最近的數(shù)據(jù)點分配給質(zhì)心,并創(chuàng)建一個簇
- 通過計算均值重新計算質(zhì)心
使用不同 K 值的 K-Means 聚類對無標簽數(shù)據(jù)進行聚類
層次聚類(Hierarchical Clustering)
層次聚類是另一種基于聚類的算法,它以樹狀結(jié)構(gòu)的形式創(chuàng)建簇的層次,以劃分數(shù)據(jù)。它自動發(fā)現(xiàn)數(shù)據(jù)之間的關(guān)系,并將它們劃分為 n 個不同的簇,其中 n 是數(shù)據(jù)的大小。
層次聚類有兩種主要方法:凝聚式(Agglomerative)和分裂式(Divisive)。
凝聚式和分裂式層次聚類在簇創(chuàng)建過程中的比較
在凝聚式聚類中,我們將每個數(shù)據(jù)點視為一個單獨的簇,然后將這些簇合并,直到只剩下一個簇(即完整的數(shù)據(jù)集)。而分裂式層次聚類則從整個數(shù)據(jù)集(視為一個單獨的簇)開始,然后將其劃分為不太相似的簇,直到每個數(shù)據(jù)點成為一個獨立的簇。
DBSCAN 聚類
DBSCAN(基于密度的空間聚類算法,帶噪聲)假設(shè),如果一個數(shù)據(jù)點離一個簇的許多數(shù)據(jù)點比較近,而不是離某個單獨的點很近,那么該數(shù)據(jù)點屬于該簇。
圖片
(圖:來自 Wikipedia 的 DBSCAN 聚類示例,minPts = 4。點 A 和其他紅點是核心點,因為這些點周圍的 ε 半徑內(nèi)包含至少 4 個點(包括點 A 本身)。由于它們之間都可以相互到達,因此形成一個簇。點 B 和點 C 不是核心點,但可以通過其他核心點從 A 到達,因此它們也屬于這個簇。點 N 是噪聲點,既不是核心點,也不能直接從其他點到達。)
epsilon 和 min_points 是兩個重要的參數(shù),用于將數(shù)據(jù)劃分為小簇。epsilon 指定了一個點需要與另一個點多近才能認為它是簇的一部分,而 min_points 則決定了形成一個簇所需的最小數(shù)據(jù)點數(shù)。
Apriori 算法
Apriori 算法是一種關(guān)聯(lián)規(guī)則挖掘算法,它通過分析數(shù)據(jù)項之間的依賴關(guān)系,將相關(guān)的數(shù)據(jù)項關(guān)聯(lián)在一起。
使用 Apriori 算法創(chuàng)建關(guān)聯(lián)規(guī)則的關(guān)鍵步驟包括:
- 確定每個大小為 1 的項集的支持度,其中支持度是數(shù)據(jù)集中項出現(xiàn)的頻率。
- 剪枝所有低于最小支持度閾值的項(由用戶決定)。
- 創(chuàng)建大小為 n+1 的項集(n 是前一個項集的大?。⒅貜筒襟E 1 和 2,直到所有項集的支持度都超過閾值。
- 使用置信度生成規(guī)則(即在已知 x 出現(xiàn)的情況下,x 和 y 一起出現(xiàn)的頻率)。
分層 K 折交叉驗證 (Stratified K-fold Cross-Validation)
分層 K 折交叉驗證是 K 折交叉驗證的一個變體,它使用分層抽樣(而非隨機抽樣)來創(chuàng)建數(shù)據(jù)的子集。在分層抽樣中,數(shù)據(jù)被劃分為 K 個不重疊的組,每個組的分布與整個數(shù)據(jù)集的分布相似。每個子集都會包含每個類標簽的相同數(shù)量的樣本,如下圖所示。
圖示:5 折分層交叉驗證
分層抽樣的優(yōu)點在于確保每一折的數(shù)據(jù)中都能代表各類標簽的分布,避免了類別不平衡問題,尤其是在處理類別不均衡的數(shù)據(jù)集時。通過這種方式,模型的訓練和驗證可以更好地反映數(shù)據(jù)的整體分布,從而提升模型的穩(wěn)定性和性能。
主成分分析 (PCA)
主成分分析(PCA)是一種線性降維技術(shù),它將一組相關(guān)的特征轉(zhuǎn)換為較少的(k<p)不相關(guān)的特征,這些不相關(guān)的特征被稱為主成分。通過應用PCA,我們會丟失一定量的信息,但它提供了許多好處,比如提高模型性能、減少硬件需求,并為數(shù)據(jù)可視化提供更好的理解機會。
PCA 降維的可視化示例
PCA 的核心思想是通過將數(shù)據(jù)投影到新的坐標系中,選擇數(shù)據(jù)方差最大的方向作為主成分,從而在減少維度的同時保留盡可能多的數(shù)據(jù)信息??梢暬瘯r,PCA 可以幫助我們將高維數(shù)據(jù)映射到二維或三維空間,從而更容易理解和分析。
人工神經(jīng)網(wǎng)絡(luò)(ANN)
人工神經(jīng)網(wǎng)絡(luò)(ANN)靈感來源于人類大腦的結(jié)構(gòu),由多層互聯(lián)的神經(jīng)元組成。它們由輸入層、隱藏層和輸出層構(gòu)成,每個神經(jīng)元對傳入的數(shù)據(jù)應用權(quán)重和激活函數(shù)。由于能夠從數(shù)據(jù)中學習復雜的模式,人工神經(jīng)網(wǎng)絡(luò)廣泛應用于圖像識別、自然語言處理和預測分析等任務(wù)。
多層人工神經(jīng)網(wǎng)絡(luò)的示例
卷積神經(jīng)網(wǎng)絡(luò)(CNN)
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種專門為圖像和視頻處理設(shè)計的神經(jīng)網(wǎng)絡(luò)類型。與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)不同,后者將每個像素作為獨立輸入,CNN使用卷積層掃描圖像,檢測邊緣、紋理和形狀等模式。這使得CNN在識別圖像中的物體時非常有效,即使物體在不同位置出現(xiàn)。CNN通過自動學習在視覺數(shù)據(jù)中識別模式,推動了面部識別、自動駕駛汽車和醫(yī)學圖像分析等技術(shù)的發(fā)展。
典型的CNN模型架構(gòu)
Q學習(Q-Learning)
Q學習是一種強化學習算法,通過試驗和錯誤的方式幫助機器學習。它通常用于游戲AI、機器人技術(shù)和自學習交易機器人。其原理很簡單:“代理”(如機器人或游戲角色)與環(huán)境互動,嘗試不同的動作,并根據(jù)其選擇獲得獎勵或懲罰。隨著時間的推移,代理通過將所學的內(nèi)容存儲在一個稱為Q表的表格中,學習在不同情況下采取最佳行動。這種技術(shù)廣泛應用于需要自主做出決策的AI系統(tǒng),例如自動駕駛汽車在交通中導航,或者AI驅(qū)動的游戲角色學習如何下棋。
Q學習算法示例
詞頻-逆文檔頻率 (TF-IDF)
TF-IDF 是一種文本分析算法,旨在幫助識別文檔中的重要詞匯。它通過計算一個詞出現(xiàn)的頻率(詞頻,TF)以及該詞在所有文檔中出現(xiàn)的稀有程度(逆文檔頻率,IDF)來工作。這樣可以避免像“the”和“is”這樣的常見詞被賦予過高的權(quán)重,同時突顯出更有意義的詞匯。TF-IDF 廣泛應用于搜索引擎(如 Google、Bing)、關(guān)鍵詞提取和文檔排名,幫助系統(tǒng)理解哪些詞匯與特定主題最相關(guān)。
LDA(Latent Dirichlet Allocation)
LDA(Latent Dirichlet Allocation)是一種主題建模算法,用于在大量文本集合中發(fā)現(xiàn)隱藏的主題。它假設(shè)每篇文檔由不同的主題組成,而每個主題由一些經(jīng)常一起出現(xiàn)的單詞構(gòu)成。LDA 特別適用于新聞分類、學術(shù)論文分類和客戶評論分析,因為它有助于揭示大量非結(jié)構(gòu)化文本中的潛在主題。如果你曾在研究工具中看到過自動主題建議功能,那么很可能它正在使用 LDA 來將相似的文本分組在一起。
圖片
Word2Vec
Word2Vec 是一種自然語言處理(NLP)算法,通過將詞語轉(zhuǎn)換為數(shù)值向量,幫助計算機理解詞語的含義。與像 TF-IDF 這樣的舊方法只關(guān)注詞頻不同,Word2Vec 捕捉了詞語之間的語義關(guān)系。例如,它可以學會“king”和“queen”之間的關(guān)系,或者“Paris”與“France”之間的關(guān)系就像“Berlin”與“Germany”之間的關(guān)系一樣。這使得它在聊天機器人、情感分析和推薦系統(tǒng)中非常有用,因為理解詞語的含義和上下文至關(guān)重要。許多現(xiàn)代語言模型,包括用于 Google 翻譯和語音助手的模型,都依賴 Word2Vec 作為更深層次語言理解的基礎(chǔ)。
圖片
以上是常用的簡明而全面地梳理關(guān)鍵的機器學習模型,幫助你系統(tǒng)掌握核心概念與應用。