
作者 | Edwin Lisowski
編譯 | CDA數(shù)據(jù)分析師
XGBoost and Random Forest with Bayesian Optimisation
在這篇文章中,我們將介紹帶有貝葉斯優(yōu)化算法的兩種流行的算法即XGBoost和隨機(jī)森林,并指出這些算法的優(yōu)缺點(diǎn)。XGBoost(XGB)和隨機(jī)森林(RF)都是集成學(xué)習(xí)方法,并通過組合各個(gè)決策樹的輸出(我們假設(shè)基于樹的XGB或RF)來預(yù)測(分類或回歸)。
讓我們深入比較一下 - XGBoost與Random Forest
XGBoost或Gradient Boosting
XGBoost每次構(gòu)建一個(gè)決策樹,每一個(gè)新的樹都修正以前訓(xùn)練過的決策樹所產(chǎn)生的錯(cuò)誤。
XGBoost應(yīng)用程序的示例
在Addepto,我們使用XGBoost模型來解決異常檢測問題,例如在監(jiān)督學(xué)習(xí)方法中。在這種情況下,XGB非常有用,因?yàn)閿?shù)據(jù)集通常非常不平衡。此類數(shù)據(jù)集的示例是移動(dòng)應(yīng)用中的用戶/消費(fèi)者交易,能量消耗或用戶行為。
優(yōu)點(diǎn)
由于通過優(yōu)化目標(biāo)函數(shù)導(dǎo)出了增強(qiáng)樹,基本上XGB可以用來解決幾乎所有可以寫出漸變的目標(biāo)函數(shù)。這包括排名和泊松回歸等內(nèi)容,RF難以實(shí)現(xiàn)。
缺點(diǎn)
如果數(shù)據(jù)有噪聲,XGB模型對(duì)過度擬合更敏感。由于樹木是按順序建造的,因此培訓(xùn)通常需要更長時(shí)間。GBM比RF更難調(diào)整。通常有三個(gè)參數(shù):樹的數(shù)量,樹的深度和學(xué)習(xí)率,并且構(gòu)建的每個(gè)樹通常是淺的。
隨機(jī)森林(RF)使用隨機(jī)數(shù)據(jù)樣本獨(dú)立訓(xùn)練每棵樹。這種隨機(jī)性有助于使模型比單個(gè)決策樹更健壯。由于RF不太可能過度擬合訓(xùn)練數(shù)據(jù)。
隨機(jī)森林應(yīng)用示例
隨機(jī)森林差異性已被用于各種應(yīng)用,例如,基于組織標(biāo)記數(shù)據(jù)找到患者群。在以下兩種情況下,隨機(jī)森林模型對(duì)于這種應(yīng)用非常有吸引力:
我們的目標(biāo)是為具有強(qiáng)相關(guān)特征的高維問題提供高預(yù)測精度。
我們的數(shù)據(jù)集非常嘈雜,并且包含許多缺失值,例如,某些屬性是分類或半連續(xù)的。
優(yōu)點(diǎn)
隨機(jī)森林中的模型調(diào)整比XGBoost更容易。在RF中,我們有兩個(gè)主要參數(shù):每個(gè)節(jié)點(diǎn)要選擇的特征數(shù)量和決策樹的數(shù)量。RF比XGB更難裝配。
缺點(diǎn)
隨機(jī)森林算法的主要限制是大量的樹可以使算法對(duì)實(shí)時(shí)預(yù)測變慢。對(duì)于包含具有不同級(jí)別數(shù)的分類變量的數(shù)據(jù),隨機(jī)森林偏向于具有更多級(jí)別的那些屬性。
貝葉斯優(yōu)化是一種優(yōu)化功能的技術(shù),其評(píng)估成本很高。它建立目標(biāo)函數(shù)的后驗(yàn)分布,并使用高斯過程回歸計(jì)算該分布中的不確定性,然后使用獲取函數(shù)來決定采樣的位置。貝葉斯優(yōu)化專注于解決問題:
max f(x)(x∈A)
超參數(shù)的尺寸(x∈Rd)經(jīng)常在最成功的應(yīng)用d <20。
通常設(shè)置甲IA超矩形(x∈R d:ai ≤ xi ≤ bi)。目標(biāo)函數(shù)是連續(xù)的,這是使用高斯過程回歸建模所需的。它也缺乏像凹面或線性這樣的特殊結(jié)構(gòu),這使得利用這種結(jié)構(gòu)來提高效率的技術(shù)徒勞無功。貝葉斯優(yōu)化由兩個(gè)主要組成部分組成:用于對(duì)目標(biāo)函數(shù)建模的貝葉斯統(tǒng)計(jì)模型和用于決定下一步采樣的采集函數(shù)。
據(jù)初始空間填充實(shí)驗(yàn)設(shè)計(jì)評(píng)估目標(biāo)后,它們被迭代地用于分配N個(gè)評(píng)估的預(yù)算的剩余部分,如下所示:
我們可以說貝葉斯優(yōu)化是為黑盒無導(dǎo)數(shù)全局優(yōu)化而設(shè)計(jì)來總結(jié)這個(gè)問題。它在機(jī)器學(xué)習(xí)中調(diào)整超參數(shù)非常受歡迎。
下面是整個(gè)優(yōu)化的圖形摘要:具有后驗(yàn)分布的高斯過程、觀察和置信區(qū)間以及效用函數(shù),其中最大值表示下一個(gè)樣本點(diǎn)。
由于效用函數(shù),貝葉斯優(yōu)化在調(diào)整機(jī)器學(xué)習(xí)算法的參數(shù)方面比網(wǎng)格或隨機(jī)搜索技術(shù)更有效。它可以有效地平衡“探索”和“利用”,找到全局最優(yōu)。
為了呈現(xiàn)貝葉斯優(yōu)化,我們使用用Python編寫的BayesianOptimization庫來調(diào)整隨機(jī)森林和XGBoost分類算法的超參數(shù)。我們需要通過pip安裝它:
pip install bayesian-optimization
現(xiàn)在讓我們訓(xùn)練我們的模型。首先我們導(dǎo)入所需的庫:
#Import libraries
import pandas as pd
import numpy as np
from bayes_opt import BayesianOptimization
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
我們定義了一個(gè)函數(shù)來運(yùn)行貝葉斯優(yōu)化給定數(shù)據(jù),優(yōu)化函數(shù)及其超參數(shù):
#Bayesian optimization
def bayesian_optimization(dataset, function, parameters):
X_train, y_train, X_test, y_test = dataset
n_iterations = 5
gp_params = {"alpha": 1e-4}
BO = BayesianOptimization(function, parameters)
BO.maximize(n_iter=n_iterations, **gp_params)
return BO.max
我們定義了優(yōu)化函數(shù),即隨機(jī)森林分類器及其超參數(shù)nestimators,maxdepth和minsamplessplit。另外,我們使用給定數(shù)據(jù)集上的交叉驗(yàn)證分?jǐn)?shù)的平均值:
def rfc_optimization(cv_splits):
def function(n_estimators, max_depth, min_samples_split):
return cross_val_score(
RandomForestClassifier(
n_estimators=int(max(n_estimators,0)),
max_depth=int(max(max_depth,1)),
min_samples_split=int(max(min_samples_split,2)),
n_jobs=-1,
random_state=42,
class_weight="balanced"),
X=X_train,
y=y_train,
cv=cv_splits,
scoring="roc_auc",
n_jobs=-1).mean()
parameters = {"n_estimators": (10, 1000),
"max_depth": (1, 150),
"min_samples_split": (2, 10)}
return function, parameters
類似地,我們?yōu)?a href='/map/xgboost/' style='color:#000;font-size:inherit;'>XGBoost分類器定義函數(shù)和超參數(shù):
def xgb_optimization(cv_splits, eval_set):
def function(eta, gamma, max_depth):
return cross_val_score(
xgb.XGBClassifier(
objective="binary:logistic",
learning_rate=max(eta, 0),
gamma=max(gamma, 0),
max_depth=int(max_depth),
seed=42,
nthread=-1,
scale_pos_weight = len(y_train[y_train == 0])/
len(y_train[y_train == 1])),
X=X_train,
y=y_train,
cv=cv_splits,
scoring="roc_auc",
fit_params={
"early_stopping_rounds": 10,
"eval_metric": "auc",
"eval_set": eval_set},
n_jobs=-1).mean()
parameters = {"eta": (0.001, 0.4),
"gamma": (0, 20),
"max_depth": (1, 2000)}
return function, parameters
現(xiàn)在基于選擇的分類器,我們可以優(yōu)化它并訓(xùn)練模型:
#Train model
def train(X_train, y_train, X_test, y_test, function, parameters):
dataset = (X_train, y_train, X_test, y_test)
cv_splits = 4
best_solution = bayesian_optimization(dataset, function, parameters)
params = best_solution["params"]
model = RandomForestClassifier(
n_estimators=int(max(params["n_estimators"], 0)),
max_depth=int(max(params["max_depth"], 1)),
min_samples_split=int(max(params["min_samples_split"], 2)),
n_jobs=-1,
random_state=42,
class_weight="balanced")
model.fit(X_train, y_train)
return model
我們使用AdventureWorksDW2017 SQL Server數(shù)據(jù)庫的視圖[dbo].[vTargetMail]作為示例數(shù)據(jù),我們可以依據(jù)個(gè)人數(shù)據(jù)預(yù)測人們是否購買自行車。作為貝葉斯優(yōu)化的結(jié)果,我們提取出了連續(xù)樣本:
我們可以看到貝葉斯優(yōu)化在第23步中找到了最佳參數(shù),在測試數(shù)據(jù)集上得出0.8622 AUC分?jǐn)?shù)。如果要檢查更多樣品,這個(gè)結(jié)果可能會(huì)更高。我們優(yōu)化的隨機(jī)森林模型具有以下ROC AUC曲線:
我們提出了一種使用貝葉斯優(yōu)化在機(jī)器學(xué)習(xí)中調(diào)整超參數(shù)的簡單方法,貝葉斯優(yōu)化是一種更快的方法,可以找到最優(yōu)值,而且比網(wǎng)格或隨機(jī)搜索方法更先進(jìn)。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營問題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10