精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

AdaBoost分類器完全圖解 原創(chuàng)

發(fā)布于 2024-11-20 08:25
瀏覽
1收藏

本文將通過完整的源碼與圖解方式向你展示AdaBoost算法運(yùn)行邏輯,并指出其優(yōu)點(diǎn)與不足,還將其與隨機(jī)森林算法進(jìn)行對(duì)比分析。

簡(jiǎn)介

每個(gè)人都會(huì)犯錯(cuò),即使是機(jī)器學(xué)習(xí)領(lǐng)域最簡(jiǎn)單的決策樹也存在這個(gè)問題。AdaBoost(自適應(yīng)增強(qiáng))算法不會(huì)忽略這些錯(cuò)誤,而是會(huì)做一些不同的事情:它會(huì)從這些錯(cuò)誤中學(xué)習(xí)(或適應(yīng))以變得更好。

與一次生成多棵樹的隨機(jī)森林不同,AdaBoost算法從一棵簡(jiǎn)單的樹開始,并識(shí)別它錯(cuò)誤分類的實(shí)例。然后,它會(huì)構(gòu)建新的樹來修復(fù)這些錯(cuò)誤,從錯(cuò)誤中學(xué)習(xí),并在每一步中變得更好。

在本文中,我們將詳細(xì)探討AdaBoost算法是如何進(jìn)行預(yù)測(cè)的。我們將會(huì)看到AdaBoost算法能夠通過結(jié)合有針對(duì)性的弱學(xué)習(xí)器來增強(qiáng)力量,就像將有針對(duì)性的鍛煉變成全身力量的鍛煉程序一樣。

AdaBoost分類器完全圖解-AI.x社區(qū)

作者本人使用Canva Pro創(chuàng)建(針對(duì)移動(dòng)設(shè)備進(jìn)行了優(yōu)化;在桌面PC上可能顯得過大)。

定義

AdaBoost算法是一種集成機(jī)器學(xué)習(xí)模型,它能夠創(chuàng)建一系列加權(quán)決策樹,通常使用淺樹(通常只是單層“樹樁”)來實(shí)現(xiàn)。每棵樹都在整個(gè)數(shù)據(jù)集上進(jìn)行訓(xùn)練,但采用了自適應(yīng)樣本權(quán)重,使先前分類錯(cuò)誤的樣本更加重要。

對(duì)于分類任務(wù),AdaBoost通過加權(quán)投票系統(tǒng)組合樹,其中表現(xiàn)更好的樹在最終決策中具有更大的影響力。

該模型的優(yōu)勢(shì)來自其自適應(yīng)學(xué)習(xí)過程——雖然每棵簡(jiǎn)單的樹可能都是“弱學(xué)習(xí)器”,其表現(xiàn)僅略優(yōu)于隨機(jī)猜測(cè),但樹的加權(quán)組合創(chuàng)造了一個(gè)“強(qiáng)學(xué)習(xí)器”,可以逐步關(guān)注和糾正錯(cuò)誤。

AdaBoost分類器完全圖解-AI.x社區(qū)

AdaBoost是增強(qiáng)算法系列的一部分,因?yàn)樗淮螛?gòu)建一棵樹。每棵新樹都會(huì)嘗試修復(fù)先前樹所犯的錯(cuò)誤。然后,它使用加權(quán)投票來組合它們的答案并做出最終預(yù)測(cè)。

測(cè)試數(shù)據(jù)集

在本文中,我們將重點(diǎn)介紹經(jīng)典高爾夫數(shù)據(jù)集作為分類的樣本。

AdaBoost分類器完全圖解-AI.x社區(qū)

各列含義:“Outlook(展望)”——獨(dú)熱編碼為3列、“Temperature(溫度)”——華氏度、“Humidity(濕度)”——百分比、“Windy(有風(fēng))——(是/否)和“播放(Play)”——是/否,代表目標(biāo)特征。

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
# 創(chuàng)建和準(zhǔn)備數(shù)據(jù)集
dataset_dict = {
    'Outlook': ['sunny', 'sunny', 'overcast', 'rainy', 'rainy', 'rainy', 'overcast', 
                'sunny', 'sunny', 'rainy', 'sunny', 'overcast', 'overcast', 'rainy',
                'sunny', 'overcast', 'rainy', 'sunny', 'sunny', 'rainy', 'overcast',
                'rainy', 'sunny', 'overcast', 'sunny', 'overcast', 'rainy', 'overcast'],
    'Temperature': [85.0, 80.0, 83.0, 70.0, 68.0, 65.0, 64.0, 72.0, 69.0, 75.0, 75.0,
                   72.0, 81.0, 71.0, 81.0, 74.0, 76.0, 78.0, 82.0, 67.0, 85.0, 73.0,
                   88.0, 77.0, 79.0, 80.0, 66.0, 84.0],
    'Humidity': [85.0, 90.0, 78.0, 96.0, 80.0, 70.0, 65.0, 95.0, 70.0, 80.0, 70.0,
                 90.0, 75.0, 80.0, 88.0, 92.0, 85.0, 75.0, 92.0, 90.0, 85.0, 88.0,
                 65.0, 70.0, 60.0, 95.0, 70.0, 78.0],
    'Wind': [False, True, False, False, False, True, True, False, False, False, True,
             True, False, True, True, False, False, True, False, True, True, False,
             True, False, False, True, False, False],
    'Play': ['No', 'No', 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'Yes',
             'Yes', 'Yes', 'No', 'No', 'Yes', 'Yes', 'No', 'No', 'No', 'Yes', 'Yes',
             'Yes', 'Yes', 'Yes', 'Yes', 'No', 'Yes']
}
# 準(zhǔn)備數(shù)據(jù)
df = pd.DataFrame(dataset_dict)
df = pd.get_dummies(df, columns=['Outlook'], prefix='', prefix_sep='', dtype=int)
df['Wind'] = df['Wind'].astype(int)
df['Play'] = (df['Play'] == 'Yes').astype(int)

# 重新安排各列
column_order = ['sunny', 'overcast', 'rainy', 'Temperature', 'Humidity', 'Wind', 'Play']
df = df[column_order]

# 準(zhǔn)備特征和目標(biāo)
X,y = df.drop('Play', axis=1), df['Play']
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.5, shuffle=False)Main Mechanism

AdaBoost算法主要機(jī)制

AdaBoost算法的工作原理如下:

  • 初始化權(quán)重:為每個(gè)訓(xùn)練樣本分配相同的權(quán)重。
  • 迭代學(xué)習(xí):在每個(gè)步驟中,訓(xùn)練一個(gè)簡(jiǎn)單的決策樹并檢查其性能。錯(cuò)誤分類的樣本獲得更多權(quán)重,使其成為下一棵樹的優(yōu)先級(jí)。正確分類的樣本保持不變,所有權(quán)重都調(diào)整為總和為1。
  • 構(gòu)建弱學(xué)習(xí)器:每個(gè)新的簡(jiǎn)單樹都針對(duì)前幾棵樹的錯(cuò)誤,創(chuàng)建一系列專門的弱學(xué)習(xí)器。
  • 最終預(yù)測(cè):通過加權(quán)投票合并所有樹,其中每棵樹的投票都基于其重要性值,從而為更準(zhǔn)確的樹提供更大的影響力。

AdaBoost分類器完全圖解-AI.x社區(qū)

AdaBoost分類器使用許多簡(jiǎn)單的決策樹(通常為50~100棵)進(jìn)行預(yù)測(cè)。每棵樹稱為“樹樁”,專注于一個(gè)重要特征,如溫度或濕度。最終預(yù)測(cè)是通過合并所有樹的投票做出的,每個(gè)投票都根據(jù)該樹的重要性(“alpha”)加權(quán)。

訓(xùn)練步驟

在這里,我們將遵循SAMME(使用多類指數(shù)損失函數(shù)的分階段加性建模)算法,這是scikit-learn庫(kù)中處理二分類和多類分類的標(biāo)準(zhǔn)方法。

1.1.決定要使用的弱學(xué)習(xí)器。其中,單級(jí)決策樹(或“樹樁”)是默認(rèn)選擇。

1.2.決定要構(gòu)建多少個(gè)弱學(xué)習(xí)器(在本例中為樹的數(shù)量)(默認(rèn)值為50棵樹)。

AdaBoost分類器完全圖解-AI.x社區(qū)

我們從深度為1的決策樹(樹樁)開始作為弱學(xué)習(xí)器。每個(gè)樹樁只進(jìn)行一次分割,我們將按順序訓(xùn)練其中的50個(gè),并在此過程中調(diào)整權(quán)重。

1.3.開始時(shí),為每個(gè)訓(xùn)練樣本賦予相同的權(quán)重:

  • 每個(gè)樣本的權(quán)重=1/N(N是樣本總數(shù))
  • 所有權(quán)重加起來為1

AdaBoost分類器完全圖解-AI.x社區(qū)

所有數(shù)據(jù)點(diǎn)的權(quán)重都相同(0.0714),總權(quán)重加起來為1。這確保在訓(xùn)練開始時(shí)每個(gè)樣本都同等重要。

對(duì)于第一棵樹

2.1.在考慮樣本權(quán)重的同時(shí)構(gòu)建決策樹樁

AdaBoost分類器完全圖解-AI.x社區(qū)

在進(jìn)行第一次分割之前,算法會(huì)檢查所有數(shù)據(jù)點(diǎn)及其權(quán)重,以找到最佳分割點(diǎn)。這些權(quán)重會(huì)影響每個(gè)樣本在進(jìn)行分割決策時(shí)的重要性。

計(jì)算根節(jié)點(diǎn)的初始加權(quán)基尼不純度

AdaBoost分類器完全圖解-AI.x社區(qū)

算法計(jì)算根節(jié)點(diǎn)的基尼不純度分?jǐn)?shù),但現(xiàn)在考慮所有數(shù)據(jù)點(diǎn)的權(quán)重。

對(duì)于每個(gè)特征:

  • 按特征值對(duì)數(shù)據(jù)進(jìn)行排序(與決策樹分類器完全相同)

AdaBoost分類器完全圖解-AI.x社區(qū)

對(duì)于每個(gè)特征,算法都會(huì)對(duì)數(shù)據(jù)進(jìn)行排序并識(shí)別潛在的分割點(diǎn),與標(biāo)準(zhǔn)決策樹完全相同。

對(duì)于每個(gè)可能的分割點(diǎn):

  • 將樣本分成左組和右組
  • 計(jì)算兩個(gè)組的加權(quán)基尼不純度
  • 計(jì)算此分割的加權(quán)基尼不純度減少量

AdaBoost分類器完全圖解-AI.x社區(qū)

該算法計(jì)算每個(gè)潛在分割的加權(quán)基尼不純度并將其與父節(jié)點(diǎn)進(jìn)行比較。對(duì)于分割點(diǎn)為0.5的特征“sunny”,此不純度減少量(0.066)顯示了此分割對(duì)數(shù)據(jù)分離的改善程度。

選擇提供最大基尼不純度減少量的分割

AdaBoost分類器完全圖解-AI.x社區(qū)

在檢查所有可能的分割特征后,“overcast”列(分割點(diǎn)為0.5)提供最高的不純度減少量0.102。這意味著它是分離類別的最有效方法,使其成為第一次分割的最佳選擇。

d. 使用此決策創(chuàng)建一個(gè)簡(jiǎn)單的單分割樹

AdaBoost分類器完全圖解-AI.x社區(qū)

使用找到的最佳分割點(diǎn),算法將數(shù)據(jù)分成兩組,每組保留其原始權(quán)重。這個(gè)簡(jiǎn)單的決策樹故意保持較小和不完美,使其略優(yōu)于隨機(jī)猜測(cè)。

2.2.評(píng)估這棵樹有多好

a. 使用樹預(yù)測(cè)訓(xùn)練集的標(biāo)簽。

b. 將所有錯(cuò)誤分類的樣本的權(quán)重相加以獲得錯(cuò)誤率。

AdaBoost分類器完全圖解-AI.x社區(qū)

第一個(gè)弱學(xué)習(xí)器對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行預(yù)測(cè),我們檢查它在哪里犯了錯(cuò)誤(標(biāo)記為X)。0.357的錯(cuò)誤率表明這棵簡(jiǎn)單的樹對(duì)一些預(yù)測(cè)有誤,這是預(yù)料之中的,并將有助于指導(dǎo)接下來的訓(xùn)練步驟。

c. 使用以下方法計(jì)算樹重要性(α):

α = learning_rate × log((1-error)/error)

AdaBoost分類器完全圖解-AI.x社區(qū)

我們使用錯(cuò)誤率計(jì)算樹的影響力得分(α = 0.5878)。分?jǐn)?shù)越高意味著樹越準(zhǔn)確,這棵樹因其良好的性能獲得了中等重要性。

2.3.更新樣本權(quán)重

a. 保留正確分類樣本的原始權(quán)重。

b.將錯(cuò)誤分類的樣本的權(quán)重乘以e^(α)。

c. 將每個(gè)權(quán)重除以所有權(quán)重的總和。此歸一化可確保所有權(quán)重的總和仍為1,同時(shí)保持其相對(duì)比例。

AdaBoost分類器完全圖解-AI.x社區(qū)

樹出錯(cuò)的情況(標(biāo)記為X)在下一輪中獲得更高的權(quán)重。增加這些權(quán)重后,所有權(quán)重均被歸一化為總和為1,確保錯(cuò)誤分類的樣本在下一棵樹中得到更多關(guān)注。

對(duì)于第二棵樹

2.1.構(gòu)建新的樹樁,但現(xiàn)在使用更新后的權(quán)重

a. 計(jì)算根節(jié)點(diǎn)的新加權(quán)基尼不純度:

  • 將會(huì)有所不同,因?yàn)殄e(cuò)誤分類的樣本現(xiàn)在具有更大的權(quán)重
  • 正確分類的樣本現(xiàn)在具有更小的權(quán)重

AdaBoost分類器完全圖解-AI.x社區(qū)

使用更新后的權(quán)重(其中錯(cuò)誤分類的樣本現(xiàn)在具有更高的重要性),算法計(jì)算根節(jié)點(diǎn)的加權(quán)基尼不純度。這開始了構(gòu)建第二棵決策樹的過程。

b. 對(duì)于每個(gè)特征:

  • 使用與之前相同的過程,但權(quán)重已更改。

c. 選擇具有最佳加權(quán)基尼不純度減少的分割。

  • 通常與第一棵樹的分割完全不同。
  • 關(guān)注第一棵樹錯(cuò)誤的樣本。

AdaBoost分類器完全圖解-AI.x社區(qū)

使用更新后的權(quán)重,不同的分割點(diǎn)顯示出不同的有效性。請(qǐng)注意,“overcast(陰天)”不再是最佳分割——算法現(xiàn)在發(fā)現(xiàn)溫度(84.0)可以最大程度地減少不純度,從而顯示權(quán)重變化如何影響分割選擇。

d.創(chuàng)建第二個(gè)樹樁。

AdaBoost分類器完全圖解-AI.x社區(qū)

使用溫度≤84.0作為分割點(diǎn),算法根據(jù)哪個(gè)類在該組中的總權(quán)重更大,而不是僅通過計(jì)算樣本,為每個(gè)葉子分配YES/NO。這種加權(quán)投票有助于糾正前一棵樹的錯(cuò)誤。

2.2.評(píng)估這棵新樹

a.用當(dāng)前權(quán)重計(jì)算錯(cuò)誤率。

b.使用與之前相同的公式計(jì)算其重要性(α)。

2.3.再次更新權(quán)重——相同的過程(增加錯(cuò)誤權(quán)重,然后歸一化)

AdaBoost分類器完全圖解-AI.x社區(qū)

第二棵樹的錯(cuò)誤率(0.222)和重要性得分(α=1.253)比第一棵樹低。和以前一樣,錯(cuò)誤分類的樣本在下一輪中獲得更高的權(quán)重。

對(duì)于第三棵樹及以后的所有剩余樹

重復(fù)上述步驟2.1-2.3。

AdaBoost分類器完全圖解-AI.x社區(qū)

該算法按順序構(gòu)建50棵簡(jiǎn)單決策樹,每棵都有自己的重要性得分(α)。每棵樹通過關(guān)注數(shù)據(jù)的不同方面從以前的錯(cuò)誤中學(xué)習(xí),從而創(chuàng)建一個(gè)強(qiáng)大的組合模型。請(qǐng)注意,有些樹(如樹2)在表現(xiàn)更好時(shí)會(huì)獲得更高的權(quán)重分?jǐn)?shù)。

第3步:組合到一起

3.1.保留所有樹及其重要性分?jǐn)?shù)

AdaBoost分類器完全圖解-AI.x社區(qū)

50棵簡(jiǎn)單決策樹作為一個(gè)團(tuán)隊(duì)一起工作,每棵都有自己的重要性分?jǐn)?shù)(α)。在進(jìn)行預(yù)測(cè)時(shí),具有較高α值的樹(如樹2的1.253)對(duì)最終決策的影響比分?jǐn)?shù)較低的樹更大。

from sklearn.tree import plot_tree
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import plot_tree
import matplotlib.pyplot as plt

#訓(xùn)練AdaBoost算法
np.random.seed(42)  # 可重復(fù)性
clf = AdaBoostClassifier(algorithm='SAMME', n_estimators=50, random_state=42)
clf.fit(X_train, y_train)

# 為樹1、2和50創(chuàng)建可視化形式
trees_to_show = [0, 1, 49]
feature_names = X_train.columns.tolist()
class_names = ['No', 'Yes']

#設(shè)置繪圖
fig, axes = plt.subplots(1, 3, figsize=(14,4), dpi=300)
fig.suptitle('Decision Stumps from AdaBoost', fontsize=16)

#繪制每棵樹
for idx, tree_idx in enumerate(trees_to_show):
    plot_tree(clf.estimators_[tree_idx],
              feature_names=feature_names,
              class_names=class_names,
              filled=True,
              rounded=True,
              ax=axes[idx],
              fontsize=12)  #增加字體大小
    axes[idx].set_title(f'Tree {tree_idx + 1}', fontsize=12)

plt.tight_layout(rect=[0, 0.03, 1, 0.95])

AdaBoost分類器完全圖解-AI.x社區(qū)

每個(gè)節(jié)點(diǎn)將其“值”參數(shù)顯示為[weight_NO, weight_YES],表示該節(jié)點(diǎn)上每個(gè)類型的加權(quán)比例。這些權(quán)重來自我們?cè)谟?xùn)練期間計(jì)算的樣本權(quán)重。

測(cè)試步驟

為了預(yù)測(cè),需要:

  1. 獲取每棵樹的預(yù)測(cè)值。
  2. 將每個(gè)預(yù)測(cè)值乘以其權(quán)重得分(α)。
  3. 將它們?nèi)考悠饋怼?/span>
  4. 總權(quán)重較高的類型將是最終預(yù)測(cè)結(jié)果。

AdaBoost分類器完全圖解-AI.x社區(qū)

在預(yù)測(cè)新數(shù)據(jù)時(shí),每棵樹都會(huì)做出預(yù)測(cè)并將其乘以其權(quán)重得分(α)。最終決定來自將所有加權(quán)投票相加。在這里,NO類型獲得更高的總分(23.315相對(duì)于15.440),因此模型預(yù)測(cè)這個(gè)未見過的樣本為NO。

評(píng)估步驟

構(gòu)建完所有樹后,接下來,我們就可以進(jìn)行測(cè)試集評(píng)估了。

AdaBoost分類器完全圖解-AI.x社區(qū)

通過迭代訓(xùn)練和加權(quán)弱學(xué)習(xí)器以關(guān)注錯(cuò)誤分類的樣本,AdaBoost創(chuàng)建了一個(gè)強(qiáng)大的分類器,可實(shí)現(xiàn)高精度——通常比單個(gè)決策樹或更簡(jiǎn)單的模型更好!

#獲得預(yù)測(cè)結(jié)果
y_pred = clf.predict(X_test)

#使用實(shí)際值和預(yù)測(cè)值創(chuàng)建數(shù)據(jù)幀
results_df = pd.DataFrame({
    'Actual': y_test,
    'Predicted': y_pred
})
print(results_df) # 顯示結(jié)果數(shù)據(jù)幀

# 計(jì)算和顯示精度
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print(f"\nModel Accuracy: {accuracy:.4f}")

關(guān)鍵參數(shù)解釋

以下是AdaBoost算法的關(guān)鍵參數(shù)解釋(特別是在scikit-learn庫(kù)中提供的那些):

estimator(估計(jì)器)

這是AdaBoost用來構(gòu)建最終解決方案的基本模型。三個(gè)最常見的弱學(xué)習(xí)器是:

  • 深度為1的決策樹(決策樹樁):這是默認(rèn)且最受歡迎的選擇。由于它只有一個(gè)分割,因此它被認(rèn)為是一種非常弱的學(xué)習(xí)器,比隨機(jī)猜測(cè)略好一點(diǎn),這正是提升過程所需要的。
  • 邏輯回歸:邏輯回歸(尤其是高懲罰)也可以在這里使用,即使它并不是真正的弱學(xué)習(xí)器。它可能對(duì)具有線性關(guān)系的數(shù)據(jù)有用。
  • 深度較小的決策樹(例如深度2或3):這些比決策樹樁稍微復(fù)雜一些。它們?nèi)匀幌喈?dāng)簡(jiǎn)單,但可以處理比決策樹樁稍微復(fù)雜一些的模式。

AdaBoost分類器完全圖解-AI.x社區(qū)

AdaBoost的基礎(chǔ)模型可以是簡(jiǎn)單的決策樹樁(深度=1)、小型樹(深度2-3)或懲罰線性模型。每種類型都保持簡(jiǎn)單以避免過度擬合,同時(shí)提供不同的方法來捕獲模式。

n_estimators

要組合的弱學(xué)習(xí)器的數(shù)量,通常約為50-100;當(dāng)這個(gè)值超過100時(shí)很少有更好的效果。

learning_rate

控制每個(gè)分類器對(duì)最終結(jié)果的影響程度。常見的起始值為0.1、0.5或1.0。較低的數(shù)字(如0.1)和稍高的n_estimator通常效果更好。

與隨機(jī)森林算法的主要區(qū)別

由于隨機(jī)森林和AdaBoost都適用于多棵樹,因此很容易混淆所涉及的參數(shù)。關(guān)鍵區(qū)別在于隨機(jī)森林獨(dú)立組合多棵樹(裝袋),而AdaBoost一棵樹接一棵樹地構(gòu)建樹以修復(fù)錯(cuò)誤(提升)。以下是關(guān)于它們之間的差異的其他一些細(xì)節(jié):

  • 沒有bootstrap參數(shù),因?yàn)锳daBoost使用所有數(shù)據(jù),但權(quán)重會(huì)發(fā)生變化
  • 沒有oob_score參數(shù),因?yàn)锳daBoost不使用bootstrap放回抽樣
  • learning_rate變得至關(guān)重要(隨機(jī)森林中不存在)
  • 與隨機(jī)森林的較深樹不同,樹的深度通常保持得很淺(通常只是樹樁)
  • 關(guān)鍵之處從并行獨(dú)立樹轉(zhuǎn)移到順序依賴樹,這使得n_jobs等參數(shù)不那么重要

AdaBoost算法的優(yōu)點(diǎn)與缺點(diǎn)

優(yōu)點(diǎn):

  • 自適應(yīng)學(xué)習(xí):AdaBoost通過賦予其所犯錯(cuò)誤更多權(quán)重而變得更好。每棵新樹都會(huì)更加關(guān)注它出錯(cuò)的困難情況。
  • 抵抗過度擬合:盡管它不斷逐一添加更多樹,但AdaBoost通常不會(huì)過于專注于訓(xùn)練數(shù)據(jù)。這是因?yàn)樗褂眉訖?quán)投票,因此沒有一棵樹可以過多地控制最終答案。
  • 內(nèi)置特征的選擇:AdaBoost自然會(huì)找到最重要的特征。每棵簡(jiǎn)單樹都會(huì)為該輪選擇最有用的特征,這意味著它在訓(xùn)練時(shí)會(huì)自動(dòng)選擇重要特征。

缺點(diǎn):

  • 對(duì)噪聲敏感:由于它更重視錯(cuò)誤,AdaBoost可能會(huì)在處理混亂或錯(cuò)誤的數(shù)據(jù)時(shí)遇到麻煩。如果一些訓(xùn)練樣本帶有錯(cuò)誤標(biāo)簽,它可能會(huì)過于關(guān)注這些不好的樣本,從而使整個(gè)模型變得更糟。
  • 必須是連續(xù)的:與可以同時(shí)訓(xùn)練多棵樹的隨機(jī)森林不同,AdaBoost必須一次訓(xùn)練一棵樹,因?yàn)槊靠眯聵涠夹枰乐暗臉涞谋憩F(xiàn)。這使得訓(xùn)練速度變慢。
  • 學(xué)習(xí)率敏感性:雖然它比隨機(jī)森林需要調(diào)整的設(shè)置更少,但學(xué)習(xí)率確實(shí)會(huì)影響它的效果。如果學(xué)習(xí)率太高,它可能會(huì)過于精確地學(xué)習(xí)訓(xùn)練數(shù)據(jù)。如果學(xué)習(xí)率太低,它需要更多的樹才能正常工作。

結(jié)語(yǔ)

AdaBoost是一種關(guān)鍵的增強(qiáng)算法,許多新方法都從中吸取了教訓(xùn)。它的主要思想——通過關(guān)注錯(cuò)誤來變得更好——幫助塑造了許多現(xiàn)代機(jī)器學(xué)習(xí)工具。雖然其他方法都試圖從一開始就做到完美,但AdaBoost卻試圖表明,有時(shí)解決問題的最佳方法是從錯(cuò)誤中學(xué)習(xí)并不斷改進(jìn)。

AdaBoost在二元分類問題中以及數(shù)據(jù)干凈時(shí)也最有效。雖然隨機(jī)森林可能更適合更一般的任務(wù)(如預(yù)測(cè)數(shù)字)或混亂的數(shù)據(jù),但AdaBoost在正確使用時(shí)可以產(chǎn)生非常好的結(jié)果。這么多年后人們?nèi)栽谑褂盟@一事實(shí)表明其核心思想有多好用!

AdaBoost分類器代碼歸納

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier

# 創(chuàng)建數(shù)據(jù)集
dataset_dict = {
    'Outlook': ['sunny', 'sunny', 'overcast', 'rainy', 'rainy', 'rainy', 'overcast', 
                'sunny', 'sunny', 'rainy', 'sunny', 'overcast', 'overcast', 'rainy',
                'sunny', 'overcast', 'rainy', 'sunny', 'sunny', 'rainy', 'overcast',
                'rainy', 'sunny', 'overcast', 'sunny', 'overcast', 'rainy', 'overcast'],
    'Temperature': [85.0, 80.0, 83.0, 70.0, 68.0, 65.0, 64.0, 72.0, 69.0, 75.0, 75.0,
                   72.0, 81.0, 71.0, 81.0, 74.0, 76.0, 78.0, 82.0, 67.0, 85.0, 73.0,
                   88.0, 77.0, 79.0, 80.0, 66.0, 84.0],
    'Humidity': [85.0, 90.0, 78.0, 96.0, 80.0, 70.0, 65.0, 95.0, 70.0, 80.0, 70.0,
                 90.0, 75.0, 80.0, 88.0, 92.0, 85.0, 75.0, 92.0, 90.0, 85.0, 88.0,
                 65.0, 70.0, 60.0, 95.0, 70.0, 78.0],
    'Wind': [False, True, False, False, False, True, True, False, False, False, True,
             True, False, True, True, False, False, True, False, True, True, False,
             True, False, False, True, False, False],
    'Play': ['No', 'No', 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'Yes',
             'Yes', 'Yes', 'No', 'No', 'Yes', 'Yes', 'No', 'No', 'No', 'Yes', 'Yes',
             'Yes', 'Yes', 'Yes', 'Yes', 'No', 'Yes']
}
df = pd.DataFrame(dataset_dict)

#準(zhǔn)備數(shù)據(jù)
df = pd.get_dummies(df, columns=['Outlook'], prefix='', prefix_sep='', dtype=int)
df['Wind'] = df['Wind'].astype(int)
df['Play'] = (df['Play'] == 'Yes').astype(int)

#拆分特征和目標(biāo)
X, y = df.drop('Play', axis=1), df['Play']
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.5, shuffle=False)

# 訓(xùn)練AdaBoost
ada = AdaBoostClassifier(
    estimator=DecisionTreeClassifier(max_depth=1), # 創(chuàng)建基本估計(jì)器(決策樁)
    n_estimators=50,        #典型情況下使用比隨機(jī)森林算法更少的樹
    learning_rate=1.0,      # 默認(rèn)學(xué)習(xí)率
    algorithm='SAMME',      # 目前唯一可用的算法(將在未來的scikit-learn更新中刪除)
    random_state=42
)
ada.fit(X_train, y_train)

#預(yù)測(cè)和評(píng)估
y_pred = ada.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred)}")

進(jìn)一步閱讀

有關(guān)??AdaBoostClassifier??及其在scikit-learn中的實(shí)現(xiàn)的詳細(xì)說明,讀者可以參考官方文檔,其中提供了有關(guān)其用法和參數(shù)的全面信息。

本文編程技術(shù)環(huán)境

本文使用Python 3.7和 scikit-learn 1.6。雖然討論的概念普遍適用,但具體代碼實(shí)現(xiàn)可能會(huì)因版本不同而略有不同。

關(guān)于插圖

除非另有說明,本文所有圖像均由作者本人創(chuàng)建,并采用了Canva Pro的授權(quán)設(shè)計(jì)元素。

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。

原文標(biāo)題:??AdaBoost Classifier, Explained: A Visual Guide with Code Examples??,作者:Samy Baladram

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
收藏 1
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
国产乱色精品成人免费视频| 欧美激情中文字幕一区二区| 亚洲精品国产品国语在线app| 91精品国产手机| 国产区一区二区三区| 香蕉成人在线视频| 蜜桃视频m3u8在线观看| 国产一区二区三区在线观看免费| 精品无人区乱码1区2区3区在线| 青青草原网站在线观看| 中文字幕一区二区免费| 一区二区小说| 午夜精品免费在线观看| 国产高清在线精品一区二区三区| 欧美多人猛交狂配| 男人久久天堂| 国产精品麻豆视频| 日韩三级精品电影久久久| 日韩精品视频观看| 日韩精品一区二区三区电影| 国产性生活视频| gogo久久日韩裸体艺术| 国产精品国产三级国产有无不卡| 中文字幕欧美人妻精品一区| 极品人妻videosss人妻| 国产精品高颜值在线观看| 欧美亚洲精品在线| 丰满岳妇乱一区二区三区| av成人免费观看| 亚洲伦理一区二区三区| 巨胸大乳www视频免费观看| 成人免费观看视频大全| 六月丁香婷婷久久| 丝袜亚洲欧美日韩综合| the porn av| 97超碰人人在线| 麻豆成人免费电影| 欧美影院久久久| 一级特级黄色片| 久草在线中文最新视频| 亚洲色图制服丝袜| 96久久精品| 日本一级黄色录像| 免费不卡中文字幕在线| 欧美亚洲愉拍一区二区| 一本一道久久a久久精品综合| 91中文字幕在线播放| 91精品国产乱码久久久久久| 91精品国产综合久久精品性色| 日韩无一区二区| 99999精品视频| 天堂a√在线| 丝袜亚洲精品中文字幕一区| 原创国产精品91| 日本中文字幕观看| 毛片大全在线观看| 久久人人超碰精品| 91精品久久久久久久久中文字幕| 乱h高h女3p含苞待放| 激情丁香综合五月| 欧美香蕉大胸在线视频观看| 蜜桃久久影院| 在线观看毛片视频| 欧美一区二区三区免费看| 欧美tk—视频vk| 国产美女无遮挡网站| 污视频网站免费在线观看| 99久久精品99国产精品| 国产成人激情小视频| 三级黄色在线观看| 精品人人人人| 欧美视频在线播放| 亚洲污视频在线观看| 精品国产欧美日韩一区二区三区| 亚洲欧洲日韩在线| 国产伦精品一区二区三区四区免费 | 菠萝菠萝蜜在线观看| 亚洲麻豆国产自偷在线| 国产一区不卡在线观看| 人妻少妇精品无码专区久久| 丝袜美腿亚洲一区| 国产成人精品优优av| 亚洲大尺度在线观看| 午夜日本精品| 欧美激情在线有限公司| 国产第一页精品| 中文字幕视频精品一区二区三区| 一本大道综合伊人精品热热 | 中文字幕一区二区三区在线视频| 日韩电影在线观看中文字幕| 右手影院亚洲欧美| 成人黄色av| 另类美女黄大片| 1024手机在线观看你懂的| 1204国产成人精品视频| 日韩久久免费视频| 日韩av片在线免费观看| 欧美日韩影院| 久色乳综合思思在线视频| 久久久久久久久久综合| 欧美a级片视频| 亚洲三级av在线| 男男一级淫片免费播放| 精品一区二区三区中文字幕 | 欧美成人免费全部观看天天性色| 成年人免费观看视频网站| 久久社区一区| 午夜伦理精品一区| 欧美日韩成人免费观看| 亚洲精品tv久久久久久久久久| 欧美极品少妇xxxxx| 91视频久久久| 国产·精品毛片| 91国产丝袜在线放| 欧美孕妇孕交xxⅹ孕妇交| 成人黄色在线网站| av成人在线电影| 毛片在线播放网站| 久久综合九色综合97婷婷| 亚洲高清视频一区二区| aⅴ在线视频男人的天堂| 一区二区三区免费在线观看| 老汉色影院首页| 欧美天堂视频| 在线亚洲人成电影网站色www| 人人干视频在线| 成人女同在线观看| 偷拍日韩校园综合在线| 欧美日韩性生活片| 超碰aⅴ人人做人人爽欧美| 精品欧美国产一区二区三区| www,av在线| 久久av网站| 伊人久久男人天堂| 成年人午夜视频| 亚洲资源av| 国产a∨精品一区二区三区不卡| 久久永久免费视频| 91麻豆精品在线观看| 日本免费一区二区三区| 亚洲免费视频一区二区三区| 中文字幕一区二区三区在线不卡 | 26uuu成人网| 久久狠狠亚洲综合| 天堂精品一区二区三区| 在线观看免费高清完整| 色88888久久久久久影院野外| 少妇性l交大片| 夜夜春成人影院| 97热在线精品视频在线观看| 亚洲女人18毛片水真多| 91视频观看视频| 国产精品无码人妻一区二区在线| 视频亚洲一区二区| 精品亚洲aⅴ在线观看| 久久精品久久精品久久| 久久精品首页| 国产精品视频白浆免费视频| av免费在线不卡| eeuss鲁片一区二区三区在线观看| 欧美激情导航| 老司机精品影院| 舔着乳尖日韩一区| 9.1在线观看免费| 国产伦精品一区二区三区视频| 日韩中文字幕免费| 日韩男人的天堂| av电影天堂一区二区在线| 日韩精品在线视频免费观看| 日韩中文在线播放| 中文字幕久久久| 久久国产精品波多野结衣av| 国产不卡视频在线播放| 草草视频在线免费观看| 性人久久久久| 久久人人爽亚洲精品天堂| 中文字幕在线观看免费视频| 99re66热这里只有精品3直播| 久草资源站在线观看| 欧美日一区二区| 欧美极品第一页| 天堂а√在线8种子蜜桃视频| 在线亚洲欧美专区二区| 视频国产一区二区| 成人午夜精品一区二区三区| 午夜精品福利一区二区| 成人亚洲视频| 亚洲电影天堂av| 中文字幕观看av| 国产成人免费视频| 制服国产精品| 福利影院在线看| 亚洲欧美自拍一区| 国产一区二区在线视频聊天| 亚洲国产一区二区视频| 国产精品v日韩精品v在线观看| 国产精品欧美大片| 不卡av日日日| 亚洲欧洲精品视频| 亚洲综合色在线| 右手影院亚洲欧美| 国产在线国偷精品免费看| 男女猛烈激情xx00免费视频| 日韩免费一区| 国产精品∨欧美精品v日韩精品| 免费大片在线观看www| 欧美亚洲日本国产| 青娱乐在线视频免费观看| wwwwxxxxx欧美| 在线一区二区不卡| 日韩亚洲在线| 精品蜜桃一区二区三区| 国产h片在线观看| 色小说视频一区| 日本五码在线| 欧美大片顶级少妇| 唐朝av高清盛宴| 国产一区二区精品久久| 久久久久狠狠高潮亚洲精品| 婷婷精品在线观看| 亚洲综合中文字幕在线| 国产福利在线播放麻豆| 亚洲午夜女主播在线直播| 国产黄色免费视频| 午夜欧美视频在线观看| 亚洲成人生活片| 国产精品灌醉下药二区| 久久久久久久久久久久久久久| 亚洲中字在线| 日韩黄色片在线| 高潮久久久久久久久久久久久久| 国产日韩综合一区二区性色av| shkd中文字幕久久在线观看| 欧美日韩国产一区| 视频这里只有精品| 中文字幕av资源一区| 在线观看国产一级片| 乱人伦精品视频在线观看| 男人添女荫道口图片| 欧美日韩四区| a级片一区二区| 神马香蕉久久| 国产v亚洲v天堂无码| 国产在线不卡一区二区三区| 精品国产无码一区二区| 亚洲国产日韩综合久久精品| 又黄又色的网站| 石原莉奈在线亚洲二区| 青娱乐自拍偷拍| 国产综合激情| 久久99精品久久久久久久青青日本| 欧美freesex黑人又粗又大| 久久国产精品免费视频| 亚洲搞黄视频| 日韩性生活视频| avtt亚洲| 色阁综合伊人av| 日本高清视频在线观看| 中文字幕一精品亚洲无线一区| 欧洲亚洲在线| 亚洲跨种族黑人xxx| 亚洲国产av一区二区三区| 欧美日韩一区二区在线 | 亚洲成人中文在线| 欧美成人精品欧美一级私黄| 一区二区在线观看av| 精品人妻在线播放| 午夜视黄欧洲亚洲| 欧美精品入口蜜桃| 污片在线观看一区二区| 日韩久久久久久久久| 亚洲大片精品永久免费| 国产剧情在线视频| 国产精品剧情在线亚洲| 精品丰满少妇一区二区三区| 中文字幕免费观看一区| 欧美丰满美乳xxⅹ高潮www| 中文字幕一区二区日韩精品绯色| 免费成人深夜夜行网站| 17c精品麻豆一区二区免费| 亚洲国产精品久| 亚洲成a人片在线不卡一二三区| 中文字幕有码在线播放| **欧美大码日韩| 九九热只有精品| 黑人巨大精品欧美一区二区三区| 波多野结衣一本一道| 精品婷婷伊人一区三区三| 久久精品一区二区三| 亚洲综合无码一区二区| 日韩av片在线播放| 欧美午夜www高清视频| 精人妻无码一区二区三区| 91超碰这里只有精品国产| 国产99视频在线| 亚洲精品www| 国产一区二区网站| 欧美老肥妇做.爰bbww| 免费观看国产视频| 亚洲天堂2020| 后进极品白嫩翘臀在线播放| 91大神在线播放精品| 日本视频不卡| 欧美激情2020午夜免费观看| 黄色在线播放网站| 欧美精品videossex88| 69堂免费精品视频在线播放| 91麻豆国产语对白在线观看| gay欧美网站| 亚洲一区二区久久久久久 | 成人亚洲欧美一区二区三区| 精品一区二区三区视频在线播放| 久久一区二区三区欧美亚洲| 99久久视频| 涩涩日韩在线| 最新亚洲激情| 被灌满精子的波多野结衣| 久久九九电影| 国产一级二级在线观看| 粉嫩在线一区二区三区视频| 免费污网站在线观看| 亚欧色一区w666天堂| 最好看的日本字幕mv视频大全| 欧美日韩激情视频8区| 在线视频 中文字幕| 日韩av在线影院| 国产在线69| 91色视频在线导航| 九九热爱视频精品视频| a级黄色片免费| 国产综合久久久久久鬼色| 免费看污黄网站在线观看| 一区二区三区国产豹纹内裤在线 | 77导航福利在线| 日本欧美一二三区| 精品午夜电影| 欧美性猛交内射兽交老熟妇| 激情五月激情综合网| 国产精品免费无码| 亚洲成a人片在线不卡一二三区| 精品久久久久成人码免费动漫| 有码中文亚洲精品| xxxxx性欧美特大| 狠狠色狠狠色综合人人| 午夜久久黄色| 无码人妻一区二区三区免费n鬼沢| 懂色中文一区二区在线播放| 在线观看天堂av| 欧美日韩精品一区二区三区四区| 全色精品综合影院| 91国自产精品中文字幕亚洲| 欧美调教视频| 视频一区国产精品| 国产欧美一区二区三区国产幕精品| 欧美性生交xxxxx| 亚洲国产欧美日韩另类综合| 国产三级小视频| 欧美zozozo| av网站大全在线| 国模私拍一区二区三区| 欧美精品资源| 日韩不卡av| 韩国午夜理伦三级不卡影院| 国产男女猛烈无遮挡在线喷水| 色爱区综合激月婷婷| 在线观看免费版| 91久久久久久久| 亚洲国产1区| 男女猛烈激情xx00免费视频| 成人免费精品视频| 国产又黄又粗又爽| 亚洲免费高清视频| 性欧美18xxxhd| 成人黄色午夜影院| 中文精品久久| 国产伦精品一区三区精东| 中文字幕精品在线不卡| 亚洲午夜无码久久久久| 精品国产一区二区三区久久狼5月| 久久91视频| 久久一区二区三区av| 美腿丝袜亚洲色图| 波多野结衣影院| 色呦呦一区二区三区| 免费在线看黄网站| 99精彩视频| 日日噜噜夜夜狠狠视频欧美人 | 亚洲欧美福利一区二区| 亚洲AV无码成人片在线观看| 欧美夫妻性生活xx| 国产免费av一区二区三区| 中文字幕天天干| 精品欧美一区二区三区| 69av亚洲| 91精品国产综合久久香蕉922| 亚洲精品裸体| jizzjizzjizz国产| 亚洲成avwww人| 456亚洲精品成人影院| 国产一区二区黄色|