機器學習21 XGBoost模型

2021-08-25 17:22:30 字數 1975 閱讀 8474

提公升(boosting)分類器隸屬於整合學習模型。它的基本思想是把成百上千個分類準確率較低的樹模型組合起來,成為乙個準確率很高的模型。這個模型的特點在於不斷迭代,每次迭代就生成一顆新的樹。對於如何在每一步生成合理的樹,大家提出了很多的方法,比如我們在整合(分類)模型中提到的梯度提公升樹(gradient tree boosting)。它在生成每一棵樹的時候採用梯度下降的思想,以之前生成的所有決策樹為基礎,向著最小化給定目標函式的方向再進一步。

在合理的引數設定下,我們往往要生成一定數量的樹才能達到令人滿意的準確率。在資料集較大較複雜的時候,模型可能需要幾千次迭代運算。但是,xgboost工具更好地解決這個問題。xgboot 的全稱是extreme gradient boosting。正如其名,它是gradient boosting machine的乙個c++實現。xgboost最大的特點在於能夠自動利用cpu的多執行緒進行並行,並在演算法上提高了精度。

#對比隨機決策森林以及xgboost模型對鐵達尼號上的乘客是否生還的**能力

import pandas as pd

from sklearn.model_selection import train_test_split

from sklearn.feature_extraction import dictvectorizer

from sklearn.ensemble import randomforestclassifier

titanic = pd.read_csv('')

#選取pclass、age以及***作為訓練特徵。

x = titanic[['pclass', 'age', '***']]

y = titanic['survived']

#對缺失的age資訊,採用平均值方法進行補全,即以age列已知資料的平均數填充。

x['age'].fillna(x['age'].mean(), inplace=true)

#對原資料進行分割,隨機取樣25%作為測試集

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, random_state=33)

#對原資料進行特徵向量化處理

vec = dictvectorizer(sparse=false)

x_train = vec.fit_transform(x_train.to_dict(orient='record'))

x_test = vec.transform(x_test.to_dict(orient='record'))

#採用預設配置的隨機森林分類器對測試集進行**。

rfc = randomforestclassifier()

rfc.fit(x_train, y_train)

print('the accuracy of random forest classifier on testing set:', rfc.score(x_test, y_test))

#out:the accuracy of random forest classifier on testing set: 0.78419452887538

#採用預設配置的xgboost模型對相同的測試集進行**。

from xgboost import xgbclassifier

xgbc = xgbclassifier()

xgbc.fit(x_train, y_train)

print('the accuracy of extreme gradient boosting classifier on testing set:', xgbc.score(x_test, y_test))

#out:the accuracy of extreme gradient boosting classifier on testing set: 0.7872340425531915

從上述輸出的觀察,我們可以發現,xgboost分類模型的確可以發揮更好的**能力。

機器學習 xgboost

xgb中引數分為三類 1.通用引數 2.整合引數 3.任務引數 1 隨機森林在ligthgbm 有很多整合演算法 中有,裡面更全。2 xgboost 裡面有gdbt是樹的串型疊加的各種包,梯度增強的方法 裡面沒有隨機森林包。xgboost是乙個支援多種資料格式的庫。libsvm資料儲存格式,xgbo...

機器學習 Xgboost 對比

引數解釋 實戰 原理 調參步驟 對比 這篇寫的比較好。eta學習率的解釋 你可以是幾個回歸樹的葉子節點之和為 值,也可以是加權,比如第一棵樹 值為3.3,label為4.0,第二棵樹才學0.7,再後面的樹還學個鬼,所以給他打個折扣,比如3折,那麼第二棵樹訓練的殘差為4.0 3.3 0.3 3.01,...

python機器學習 xgboost簡介

boosting 分類器屬於整合學習模型,它基本思想是把成百上千個分類準確率較低的樹模型組合起來,成為乙個準確率很高的模型。這個模型會不斷地迭代,每次迭代就生成一顆新的樹。對於如何在每一步生成合理的樹,大家提出了很多的方法,我們這裡簡要介紹由 friedman 提出的 gradient boosti...