自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何構(gòu)建穩(wěn)固的機器學(xué)習(xí)算法:Boosting&Bagging

人工智能 機器學(xué)習(xí) 算法
機器學(xué)習(xí)和數(shù)據(jù)科學(xué)工作遠(yuǎn)不是簡單地把數(shù)據(jù)交給 Python 庫處理,使用處理后的結(jié)果那么簡單。本文將簡要介紹一些利用 Bootstrapping 提升模型魯棒性的方法。

[[211376]]

機器學(xué)習(xí)和數(shù)據(jù)科學(xué)工作遠(yuǎn)不是簡單地把數(shù)據(jù)交給 Python 庫處理,使用處理后的結(jié)果那么簡單。本文將簡要介紹一些利用 Bootstrapping 提升模型魯棒性的方法。

數(shù)據(jù)科學(xué)家需要真正理解數(shù)據(jù)和如何處理數(shù)據(jù),以實現(xiàn)成功的系統(tǒng)。

一個重要方法就是了解什么時候模型可以利用 Bootstrapping 方法獲益。這就是集成模型。集成模型的一些示例有 AdaBoost 和隨機梯度提升(Stochastic Gradient Boosting)。

為什么使用集成模型?

它們可以幫助提高算法準(zhǔn)確率或改善模型的魯棒性嗎?集成學(xué)習(xí)是經(jīng)過試驗并效果屬實的方法嗎?Boosting 和 Bagging 是數(shù)據(jù)科學(xué)家和機器學(xué)習(xí)工程師必須了解的話題。特別是當(dāng)你計劃參加數(shù)據(jù)科學(xué)/機器學(xué)習(xí)面試的時候。

本質(zhì)上,集成學(xué)習(xí)是「集成」的。集成學(xué)習(xí)使用成百上千個同樣算法的模型尋找正確的分類。

對集成學(xué)習(xí)的另一種認(rèn)知是「盲人摸象」。每個盲人發(fā)現(xiàn)大象的一個特征,認(rèn)為大象是不同的事物。但是,聚在一起討論后,他們可能會發(fā)現(xiàn)大象到底是什么模樣。

使用 Boosting 和 Bagging 等技術(shù)可以提升統(tǒng)計模型的魯棒性,降低方差。

那么現(xiàn)在問題來了,這些以 B 開頭的單詞(Bootstrapping/Bagging/Boosting)有什么區(qū)別呢?

Bootstrapping

首先讓我們談一下這個非常重要的概念 Bootstrapping。當(dāng)很多數(shù)據(jù)科學(xué)家直接解釋 Boosting 和 Bagging 時,他們偶爾會記起 Bootstrapping,因為兩者都需要 Boosting 和 Bagging 。

圖 1 Bootstrapping

機器學(xué)習(xí)中,Bootstrap 方法指的是借助替換的隨機采樣,它是一個重采樣,允許模型或算法更好地理解存在于其中的偏差、方差和特征。數(shù)據(jù)的采樣允許重采樣包含不同的偏向,然后將其作為一個整體進(jìn)行包含。如圖 1 所示,其中每個樣本群有不同的部分,而且各不相同。接著這會影響到數(shù)據(jù)集的整體均值、標(biāo)準(zhǔn)差和其他描述性指標(biāo)。反過來,它可以發(fā)展出更多魯棒的模型。

Bootstrapping 同樣適用傾向于過擬合的小數(shù)據(jù)集。事實上,我們把它推薦給了一家有關(guān)注的公司,其數(shù)據(jù)集遠(yuǎn)稱不上「大數(shù)據(jù)」。Bootstrapping 是這一案例的一個解決方案,因為利用 Bootstrapping 的算法可以更魯棒,并根據(jù)已選的方法論(Boosting 或 Bagging)來處理新數(shù)據(jù)集。

使用 Bootstrap 的原因是它可以測試解決方案的穩(wěn)定性。使用多個樣本數(shù)據(jù)集測試多個模型可以提高魯棒性?;蛟S一個樣本數(shù)據(jù)集的平均值比其他數(shù)據(jù)集大,或者標(biāo)準(zhǔn)差不同。這種方式可以識別出過擬合且未使用不同方差數(shù)據(jù)集進(jìn)行測試的模型。

Bootstrapping 越來越普遍的原因之一是計算能力的提升。出現(xiàn)比之前更多次數(shù)的重排列、重采樣。Bagging 和 Boosting 都使用 Bootstrapping,下面將會具體介紹。

Bagging

Bagging 實際上指 Bootstrap Aggregator。大多數(shù)提到使用 Bagging 算法的論文或文章都會引用 Leo Breiman,他曾經(jīng)寫過一篇論文《Bagging Predictors》(1996)。

Leo 這么描述 Bagging:

「Bagging predictor 是一種生成多個預(yù)測器版本然后生成聚合預(yù)測器的方法?!?/p>

Bagging 的作用是降低只在訓(xùn)練數(shù)據(jù)上準(zhǔn)確率較高的模型的方差——這種情況也叫作過擬合。

過擬合即函數(shù)過于擬合數(shù)據(jù)。通常原因在于實際的公式過于復(fù)雜,無法考慮每個數(shù)據(jù)點和異常值。

 

圖 2. 過擬合

容易過擬合的另一種算法是決策樹。使用決策樹構(gòu)建的模型需要非常簡單的啟發(fā)式方法。決策樹由一系列特定順序的 if-else 語句組成。因此,如果把一個數(shù)據(jù)集變更成新的數(shù)據(jù)集,則新數(shù)據(jù)集可能在底層特征中與之前的數(shù)據(jù)集存在一些偏差或區(qū)別。該模型不可能準(zhǔn)確。原因在于數(shù)據(jù)無法非常好地擬合數(shù)據(jù)(前向聲明)。

Bagging 使用采樣和替換數(shù)據(jù)的方法在數(shù)據(jù)中創(chuàng)建自己的方差來規(guī)避這個問題,同時測試多個假設(shè)(模型)。通過使用多個樣本(很可能由不同屬性的數(shù)據(jù)組成)來減少噪聲。

直到每個模型提出一個假設(shè)。這些模型使用投票法(voting)進(jìn)行分類,用平均法進(jìn)行回歸。這里「Aggregating」和「Bootstrap Aggregating」將發(fā)揮作用。每個假設(shè)具備相同的權(quán)重。這是 Bagging 和 Boosting 方法的區(qū)別之一。

 

圖 3. Bagging

本質(zhì)上,所有這些模型同時運行,然后對哪個假設(shè)最準(zhǔn)確進(jìn)行投票。

這有助于降低方差,即減少過擬合。

Boosting

Boosting 指使用加權(quán)平均值使弱的學(xué)習(xí)器變強的一組算法。與 Bagging 不同,每個模型單獨運行,***在不偏向任何模型的前提下聚合輸出結(jié)果。Boosting 是一項「團(tuán)隊工作」。每個模型決定下一個模型要關(guān)注的特征。

Boosting 也需要 Bootstrapping。但是,這里還有一個區(qū)別。與 bagging 不同,boosting 為每個數(shù)據(jù)樣本加權(quán)。這意味著一些樣本運行的頻率比其他樣本高。

 

圖 4. Boosting

當(dāng) Boosting 運行在模型中時,它追蹤哪些數(shù)據(jù)樣本是成功的,哪些不成功。輸出結(jié)果分類錯誤最多的數(shù)據(jù)集會被賦予更高的權(quán)重。即這些數(shù)據(jù)更加復(fù)雜,需要更多次迭代才能恰當(dāng)?shù)赜?xùn)練模型。

在實際的分類階段中,Boosting 處理模型的方式也存在區(qū)別。Boosting 追蹤模型誤差率,因為更好的模型會獲得更好的權(quán)重。

這樣,當(dāng)「投票」(voting)出現(xiàn)時,結(jié)果更好的模型更有可能最終主導(dǎo)輸出。

總結(jié)

Boosting 和 Bagging 能夠有效降低方差。集成方法通常優(yōu)于單個模型。這就是那么多 Kaggle 獲勝者使用集成方法的原因。

但是,它們不適合所有問題,它們各自也有缺陷。Bagging 在模型過擬合時能夠有效降低方差,但 Boosting 可能是二者中較好的選擇。Boosting 更有可能導(dǎo)致性能問題,但它在模型欠擬合時也能有效降低偏差。

這就需要經(jīng)驗和專業(yè)知識了!***個模型能夠成功運行可能比較容易,但是分析算法和它選擇的所有特征非常重要。例如,如果一個決策樹設(shè)置了特定的葉,那么這么設(shè)置的原因是什么呢?如果你無法用其他數(shù)據(jù)點或圖支持它,它可能就不該實現(xiàn)。

 

這不只是在不同的數(shù)據(jù)集上嘗試 AdaBoost 或隨機森林。我們需要根據(jù)算法的傾向和獲得的支持來決定最終使用的算法。 

責(zé)任編輯:龐桂玉 來源: 36大數(shù)據(jù)
相關(guān)推薦

2019-06-20 13:50:44

BoostingBagging機器學(xué)習(xí)

2022-10-08 06:30:23

機器學(xué)習(xí)人工智能工具

2019-05-16 09:28:12

集成學(xué)習(xí)機器學(xué)習(xí)模型

2014-07-09 09:29:34

機器學(xué)習(xí)

2017-08-25 14:05:01

機器學(xué)習(xí)算法模型

2017-07-07 14:41:13

機器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)JavaScript

2021-11-02 09:40:50

TensorFlow機器學(xué)習(xí)人工智能

2024-05-23 16:48:42

機器學(xué)習(xí)算法人工智能

2023-12-01 10:21:00

機器學(xué)習(xí)算法

2018-07-03 15:26:35

算法機器學(xué)習(xí)數(shù)據(jù)

2020-11-19 10:04:45

人工智能

2016-11-15 15:02:00

機器學(xué)習(xí)算法

2023-11-28 12:08:56

機器學(xué)習(xí)算法人工智能

2020-12-16 15:56:26

機器學(xué)習(xí)人工智能Python

2017-05-25 11:14:21

機器學(xué)習(xí)算法神經(jīng)網(wǎng)絡(luò)

2017-05-25 13:37:46

機器學(xué)習(xí)算法神經(jīng)網(wǎng)絡(luò)

2024-06-13 08:36:11

2018-07-27 16:18:30

PythonTwitter機器人

2017-04-06 09:20:10

機器學(xué)習(xí)模型信用卡詐騙

2020-08-18 17:26:11

機器學(xué)習(xí)XGBoost人工智能
點贊
收藏

51CTO技術(shù)棧公眾號