版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
人工智能和機(jī)器學(xué)習(xí)之回歸算法:梯度提升回歸(GBR):GBR模型的參數(shù)調(diào)優(yōu)1梯度提升回歸簡(jiǎn)介1.1GBR的基本原理梯度提升回歸(GradientBoostingRegression,GBR)是一種迭代的機(jī)器學(xué)習(xí)技術(shù),用于預(yù)測(cè)建模問(wèn)題,特別是回歸問(wèn)題。它基于提升(Boosting)的概念,通過(guò)構(gòu)建一系列弱學(xué)習(xí)器(通常是決策樹(shù)),并逐步優(yōu)化它們的組合,以形成一個(gè)強(qiáng)大的預(yù)測(cè)模型。GBR的核心思想是通過(guò)最小化損失函數(shù)的梯度來(lái)訓(xùn)練每個(gè)新的弱學(xué)習(xí)器,從而逐步減少模型的預(yù)測(cè)誤差。1.1.1梯度提升過(guò)程初始化模型:通常從一個(gè)簡(jiǎn)單的模型開(kāi)始,如平均值或常數(shù)預(yù)測(cè)。計(jì)算殘差:對(duì)于當(dāng)前模型的預(yù)測(cè),計(jì)算實(shí)際值與預(yù)測(cè)值之間的殘差。擬合弱學(xué)習(xí)器:使用殘差作為目標(biāo)變量,擬合一個(gè)新的弱學(xué)習(xí)器(如決策樹(shù))。更新模型:將新弱學(xué)習(xí)器的預(yù)測(cè)乘以一個(gè)學(xué)習(xí)率(learningrate),然后加到當(dāng)前模型的預(yù)測(cè)上,形成一個(gè)更新后的模型。重復(fù)步驟2-4:直到達(dá)到預(yù)定的迭代次數(shù)或模型性能不再顯著提高。1.1.2代碼示例假設(shè)我們使用Python的scikit-learn庫(kù)來(lái)實(shí)現(xiàn)一個(gè)GBR模型。以下是一個(gè)簡(jiǎn)單的示例,使用隨機(jī)生成的數(shù)據(jù)集:importnumpyasnp
fromsklearn.ensembleimportGradientBoostingRegressor
fromsklearn.datasetsimportmake_regression
fromsklearn.model_selectionimporttrain_test_split
#生成數(shù)據(jù)集
X,y=make_regression(n_samples=1000,n_features=10,n_informative=5,random_state=42)
#劃分訓(xùn)練集和測(cè)試集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)
#初始化GBR模型
gbr=GradientBoostingRegressor(n_estimators=100,learning_rate=0.1,max_depth=3,random_state=42)
#訓(xùn)練模型
gbr.fit(X_train,y_train)
#預(yù)測(cè)
predictions=gbr.predict(X_test)
#輸出模型得分
print("GBRModelScore:",gbr.score(X_test,y_test))在這個(gè)例子中,我們首先生成了一個(gè)回歸數(shù)據(jù)集,然后使用GradientBoostingRegressor類(lèi)來(lái)創(chuàng)建一個(gè)GBR模型。我們?cè)O(shè)置了模型的幾個(gè)關(guān)鍵參數(shù),如n_estimators(弱學(xué)習(xí)器的數(shù)量)、learning_rate(學(xué)習(xí)率)和max_depth(決策樹(shù)的最大深度)。最后,我們訓(xùn)練模型并評(píng)估其在測(cè)試集上的性能。1.2GBR與傳統(tǒng)回歸算法的對(duì)比梯度提升回歸與傳統(tǒng)回歸算法(如線性回歸、決策樹(shù)回歸)的主要區(qū)別在于其迭代和優(yōu)化的方式。傳統(tǒng)回歸算法通常一次性擬合模型,而GBR通過(guò)迭代地添加弱學(xué)習(xí)器來(lái)逐步改進(jìn)模型,這使得GBR能夠捕捉到數(shù)據(jù)中的復(fù)雜模式,從而在許多情況下提供更準(zhǔn)確的預(yù)測(cè)。1.2.1線性回歸對(duì)比線性回歸假設(shè)數(shù)據(jù)之間的關(guān)系是線性的,而GBR則沒(méi)有這樣的假設(shè),它能夠通過(guò)組合多個(gè)決策樹(shù)來(lái)擬合非線性關(guān)系。1.2.2決策樹(shù)回歸對(duì)比單一決策樹(shù)可能容易過(guò)擬合,而GBR通過(guò)組合多個(gè)決策樹(shù)并控制學(xué)習(xí)率,可以減少過(guò)擬合的風(fēng)險(xiǎn),同時(shí)提高模型的泛化能力。1.2.3示例:GBR與線性回歸的性能比較fromsklearn.linear_modelimportLinearRegression
#初始化線性回歸模型
lr=LinearRegression()
#訓(xùn)練線性回歸模型
lr.fit(X_train,y_train)
#預(yù)測(cè)
lr_predictions=lr.predict(X_test)
#輸出模型得分
print("LinearRegressionModelScore:",lr.score(X_test,y_test))通過(guò)比較GBR和線性回歸模型的得分,我們可以直觀地看到GBR在處理復(fù)雜數(shù)據(jù)模式時(shí)的優(yōu)越性。以上內(nèi)容詳細(xì)介紹了梯度提升回歸的基本原理,以及它與傳統(tǒng)回歸算法的對(duì)比,通過(guò)代碼示例展示了如何使用scikit-learn庫(kù)實(shí)現(xiàn)GBR模型,并與線性回歸模型進(jìn)行了性能比較。2人工智能和機(jī)器學(xué)習(xí)之回歸算法:梯度提升回歸(GBR)模型參數(shù)詳解2.1學(xué)習(xí)率(learning_rate)的設(shè)定學(xué)習(xí)率是梯度提升回歸模型中的一個(gè)關(guān)鍵參數(shù),它控制著每一步迭代中模型更新的幅度。較小的學(xué)習(xí)率可以使得模型更加穩(wěn)健,避免過(guò)擬合,但同時(shí)會(huì)增加訓(xùn)練時(shí)間。較大的學(xué)習(xí)率則可能使模型快速收斂,但也容易導(dǎo)致過(guò)擬合。2.1.1示例代碼fromsklearn.ensembleimportGradientBoostingRegressor
fromsklearn.datasetsimportmake_regression
fromsklearn.model_selectionimporttrain_test_split
#生成回歸數(shù)據(jù)集
X,y=make_regression(n_samples=1000,n_features=20,n_informative=15,random_state=42)
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)
#設(shè)置不同的學(xué)習(xí)率
learning_rates=[0.01,0.1,1]
#訓(xùn)練模型并評(píng)估
forlrinlearning_rates:
gbr=GradientBoostingRegressor(learning_rate=lr,n_estimators=100,random_state=42)
gbr.fit(X_train,y_train)
score=gbr.score(X_test,y_test)
print(f"Learningrate:{lr},Testscore:{score}")2.2迭代次數(shù)(n_estimators)的選擇n_estimators參數(shù)決定了梯度提升回歸中基學(xué)習(xí)器的數(shù)量。增加迭代次數(shù)通常會(huì)提高模型的準(zhǔn)確度,但也會(huì)增加計(jì)算成本和過(guò)擬合的風(fēng)險(xiǎn)。2.2.1示例代碼#設(shè)置不同的迭代次數(shù)
n_estimators_values=[50,100,200]
#訓(xùn)練模型并評(píng)估
forn_estinn_estimators_values:
gbr=GradientBoostingRegressor(learning_rate=0.1,n_estimators=n_est,random_state=42)
gbr.fit(X_train,y_train)
score=gbr.score(X_test,y_test)
print(f"Numberofestimators:{n_est},Testscore:{score}")2.3損失函數(shù)(loss)的類(lèi)型梯度提升回歸支持多種損失函數(shù),如ls(最小二乘)、lad(絕對(duì)偏差)、huber和quantile。不同的損失函數(shù)適用于不同的數(shù)據(jù)分布和異常值處理。2.3.1示例代碼#設(shè)置不同的損失函數(shù)
loss_functions=['ls','lad','huber']
#訓(xùn)練模型并評(píng)估
forlossinloss_functions:
gbr=GradientBoostingRegressor(loss=loss,learning_rate=0.1,n_estimators=100,random_state=42)
gbr.fit(X_train,y_train)
score=gbr.score(X_test,y_test)
print(f"Lossfunction:{loss},Testscore:{score}")2.4基學(xué)習(xí)器(base_estimator)的配置雖然梯度提升回歸默認(rèn)使用決策樹(shù)作為基學(xué)習(xí)器,但也可以配置為其他類(lèi)型的模型。然而,實(shí)踐中通常使用默認(rèn)的決策樹(shù)基學(xué)習(xí)器,因?yàn)樗鼈冊(cè)谔荻忍嵘蚣苤斜憩F(xiàn)良好。2.5樹(shù)的最大深度(max_depth)與復(fù)雜度控制max_depth參數(shù)控制著決策樹(shù)的最大深度,從而影響模型的復(fù)雜度。深度較大的樹(shù)可以捕捉更復(fù)雜的模式,但也更容易過(guò)擬合。2.5.1示例代碼#設(shè)置不同的樹(shù)深度
max_depth_values=[3,5,10]
#訓(xùn)練模型并評(píng)估
fordepthinmax_depth_values:
gbr=GradientBoostingRegressor(learning_rate=0.1,n_estimators=100,max_depth=depth,random_state=42)
gbr.fit(X_train,y_train)
score=gbr.score(X_test,y_test)
print(f"Maxdepth:{depth},Testscore:{score}")2.6最小樣本分割(min_samples_split)與最小樣本葉子(min_samples_leaf)min_samples_split和min_samples_leaf參數(shù)用于控制決策樹(shù)的分裂和葉子節(jié)點(diǎn)的樣本數(shù)量,以防止過(guò)擬合。2.6.1示例代碼#設(shè)置不同的最小樣本分割和葉子節(jié)點(diǎn)樣本數(shù)量
min_samples_splits=[2,10,20]
min_samples_leaves=[1,5,10]
#訓(xùn)練模型并評(píng)估
forsplitinmin_samples_splits:
forleafinmin_samples_leaves:
gbr=GradientBoostingRegressor(learning_rate=0.1,n_estimators=100,min_samples_split=split,min_samples_leaf=leaf,random_state=42)
gbr.fit(X_train,y_train)
score=gbr.score(X_test,y_test)
print(f"Minsamplessplit:{split},Minsamplesleaf:{leaf},Testscore:{score}")2.7正則化參數(shù)(subsample,max_features)的作用subsample參數(shù)控制著每棵樹(shù)訓(xùn)練時(shí)使用的樣本比例,而max_features參數(shù)控制著每棵樹(shù)考慮的特征數(shù)量。這兩個(gè)參數(shù)可以作為正則化手段,減少過(guò)擬合。2.7.1示例代碼#設(shè)置不同的subsample和max_features值
subsamples=[0.5,0.8,1.0]
max_features=['auto','sqrt','log2']
#訓(xùn)練模型并評(píng)估
forsubsampleinsubsamples:
forfeatureinmax_features:
gbr=GradientBoostingRegressor(learning_rate=0.1,n_estimators=100,subsample=subsample,max_features=feature,random_state=42)
gbr.fit(X_train,y_train)
score=gbr.score(X_test,y_test)
print(f"Subsample:{subsample},Maxfeatures:{feature},Testscore:{score}")通過(guò)上述代碼示例,我們可以觀察到不同參數(shù)設(shè)置對(duì)梯度提升回歸模型性能的影響。在實(shí)際應(yīng)用中,參數(shù)調(diào)優(yōu)通常需要通過(guò)交叉驗(yàn)證等方法來(lái)確定最佳參數(shù)組合,以達(dá)到模型性能和計(jì)算效率之間的平衡。3人工智能和機(jī)器學(xué)習(xí)之回歸算法:梯度提升回歸(GBR)模型參數(shù)調(diào)優(yōu)3.1參數(shù)調(diào)優(yōu)策略3.1.1網(wǎng)格搜索(GridSearchCV)網(wǎng)格搜索是一種參數(shù)調(diào)優(yōu)方法,它通過(guò)構(gòu)建一個(gè)參數(shù)網(wǎng)格,對(duì)所有可能的參數(shù)組合進(jìn)行遍歷,從而找到最佳的參數(shù)組合。這種方法在參數(shù)空間較小的情況下非常有效,但在參數(shù)空間較大時(shí),計(jì)算成本會(huì)顯著增加。3.1.1.1示例代碼fromsklearn.ensembleimportGradientBoostingRegressor
fromsklearn.model_selectionimportGridSearchCV
fromsklearn.datasetsimportload_boston
fromsklearn.model_selectionimporttrain_test_split
#加載數(shù)據(jù)
boston=load_boston()
X=boston.data
y=boston.target
#劃分訓(xùn)練集和測(cè)試集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)
#創(chuàng)建GBR模型
gbr=GradientBoostingRegressor(random_state=42)
#定義參數(shù)網(wǎng)格
param_grid={
'n_estimators':[100,200,300],
'learning_rate':[0.01,0.1,1],
'max_depth':[3,5,7],
'min_samples_split':[2,5,10]
}
#創(chuàng)建網(wǎng)格搜索對(duì)象
grid_search=GridSearchCV(estimator=gbr,param_grid=param_grid,cv=5,scoring='neg_mean_squared_error',verbose=1,n_jobs=-1)
#擬合數(shù)據(jù)
grid_search.fit(X_train,y_train)
#輸出最佳參數(shù)
print("Bestparametersfound:",grid_search.best_params_)3.1.2隨機(jī)搜索(RandomizedSearchCV)隨機(jī)搜索與網(wǎng)格搜索類(lèi)似,但不是遍歷所有參數(shù)組合,而是從參數(shù)分布中隨機(jī)選擇參數(shù)組合進(jìn)行搜索。這種方法在參數(shù)空間較大時(shí),可以更高效地找到接近最優(yōu)的參數(shù)組合。3.1.2.1示例代碼fromsklearn.ensembleimportGradientBoostingRegressor
fromsklearn.model_selectionimportRandomizedSearchCV
fromsklearn.datasetsimportload_boston
fromsklearn.model_selectionimporttrain_test_split
fromscipy.statsimportuniform,randint
#加載數(shù)據(jù)
boston=load_boston()
X=boston.data
y=boston.target
#劃分訓(xùn)練集和測(cè)試集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)
#創(chuàng)建GBR模型
gbr=GradientBoostingRegressor(random_state=42)
#定義參數(shù)分布
param_dist={
'n_estimators':randint(100,500),
'learning_rate':uniform(0.01,0.5),
'max_depth':randint(3,10),
'min_samples_split':randint(2,20)
}
#創(chuàng)建隨機(jī)搜索對(duì)象
random_search=RandomizedSearchCV(estimator=gbr,param_distributions=param_dist,n_iter=100,cv=5,scoring='neg_mean_squared_error',verbose=1,n_jobs=-1)
#擬合數(shù)據(jù)
random_search.fit(X_train,y_train)
#輸出最佳參數(shù)
print("Bestparametersfound:",random_search.best_params_)3.1.3貝葉斯優(yōu)化(BayesianOptimization)貝葉斯優(yōu)化是一種基于概率模型的參數(shù)調(diào)優(yōu)方法,它通過(guò)構(gòu)建一個(gè)代理模型來(lái)預(yù)測(cè)參數(shù)的效果,從而指導(dǎo)搜索過(guò)程。這種方法在參數(shù)空間復(fù)雜時(shí),可以更智能地探索參數(shù)空間,找到最優(yōu)參數(shù)。3.1.3.1示例代碼fromsklearn.ensembleimportGradientBoostingRegressor
fromsklearn.datasetsimportload_boston
fromsklearn.model_selectionimporttrain_test_split
frombayes_optimportBayesianOptimization
#加載數(shù)據(jù)
boston=load_boston()
X=boston.data
y=boston.target
#劃分訓(xùn)練集和測(cè)試集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)
#定義優(yōu)化函數(shù)
defgbr_optimize(n_estimators,learning_rate,max_depth,min_samples_split):
gbr=GradientBoostingRegressor(n_estimators=int(n_estimators),learning_rate=learning_rate,max_depth=int(max_depth),min_samples_split=int(min_samples_split),random_state=42)
gbr.fit(X_train,y_train)
score=gbr.score(X_test,y_test)
returnscore
#定義參數(shù)范圍
pbounds={'n_estimators':(100,500),'learning_rate':(0.01,1),'max_depth':(3,10),'min_samples_split':(2,20)}
#創(chuàng)建貝葉斯優(yōu)化對(duì)象
optimizer=BayesianOptimization(f=gbr_optimize,pbounds=pbounds,random_state=42)
#進(jìn)行優(yōu)化
optimizer.maximize(init_points=10,n_iter=100)
#輸出最佳參數(shù)
print("Bestparametersfound:",optimizer.max['params'])3.1.4總結(jié)在調(diào)優(yōu)梯度提升回歸(GBR)模型時(shí),網(wǎng)格搜索、隨機(jī)搜索和貝葉斯優(yōu)化是三種常用的方法。網(wǎng)格搜索適合參數(shù)空間較小的情況,隨機(jī)搜索在參數(shù)空間較大時(shí)更為高效,而貝葉斯優(yōu)化則在參數(shù)空間復(fù)雜時(shí)提供更智能的搜索策略。選擇哪種方法取決于具體問(wèn)題的參數(shù)空間大小和計(jì)算資源的限制。4案例分析與實(shí)踐4.1房?jī)r(jià)預(yù)測(cè)案例在房?jī)r(jià)預(yù)測(cè)的場(chǎng)景中,梯度提升回歸(GBR)模型可以有效地捕捉到房?jī)r(jià)與各種特征之間的復(fù)雜關(guān)系。下面我們將通過(guò)一個(gè)具體的案例,使用Python的scikit-learn庫(kù)來(lái)展示如何構(gòu)建和調(diào)優(yōu)GBR模型。4.1.1數(shù)據(jù)準(zhǔn)備假設(shè)我們有如下數(shù)據(jù)集,包含了房屋的特征和價(jià)格:層數(shù)面積(平方米)距離市中心(公里)房?jī)r(jià)(萬(wàn)元)312051502801010041503200…………4.1.2加載數(shù)據(jù)importpandasaspd
fromsklearn.model_selectionimporttrain_test_split
fromsklearn.ensembleimportGradientBoostingRegressor
fromsklearn.metricsimportmean_squared_error
#加載數(shù)據(jù)
data=pd.read_csv('house_prices.csv')
X=data[['floors','area','distance_to_center']]
y=data['price']
#劃分訓(xùn)練集和測(cè)試集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)4.1.3構(gòu)建GBR模型#初始化GBR模型
gbr=GradientBoostingRegressor(n_estimators=100,learning_rate=0.1,max_depth=3,random_state=42)
#訓(xùn)練模型
gbr.fit(X_train,y_train)
#預(yù)測(cè)
predictions=gbr.predict(X_test)4.1.4參數(shù)調(diào)優(yōu)GBR模型的參數(shù)調(diào)優(yōu)是關(guān)鍵,可以顯著提高模型的預(yù)測(cè)性能。主要參數(shù)包括:n_estimators:決策樹(shù)的數(shù)量。learning_rate:每棵樹(shù)的貢獻(xiàn)權(quán)重。max_depth:決策樹(shù)的最大深度。min_samples_split:內(nèi)部節(jié)點(diǎn)再劃分所需最小樣本數(shù)。min_samples_leaf:葉子節(jié)點(diǎn)上所需最小樣本數(shù)。4.1.4.1使用GridSearchCV進(jìn)行參數(shù)調(diào)優(yōu)fromsklearn.model_selectionimportGridSearchCV
#定義參數(shù)網(wǎng)格
param_grid={
'n_estimators':[100,200,300],
'learning_rate':[0.1,0.05,0.01],
'max_depth':[3,4,5],
'min_samples_split':[2,3,4],
'min_samples_leaf':[1,2,3]
}
#創(chuàng)建GridSearchCV對(duì)象
grid_search=GridSearchCV(GradientBoostingRegressor(random_state=42),param_grid,cv=5,scoring='neg_mean_squared_error')
#搜索最佳參數(shù)
grid_search.fit(X_train,y_train)
#輸出最佳參數(shù)
best_params=grid_search.best_params_
print("Bestparametersfound:",best_params)
#使用最佳參數(shù)重新訓(xùn)練模型
best_gbr=GradientBoostingRegressor(**best_params,random_state=42)
best_gbr.fit(X_train,y_train)
#評(píng)估模型
best_predictions=best_gbr.predict(X_test)
mse=mean_squared_error(y_test,best_predictions)
print("MeanSquaredError:",mse)4.2股票價(jià)格預(yù)測(cè)案例股票價(jià)格預(yù)測(cè)是金融領(lǐng)域中一個(gè)極具挑戰(zhàn)性的任務(wù),GBR模型可以用來(lái)分析歷史數(shù)據(jù),預(yù)測(cè)未來(lái)的股票價(jià)格。下面我們將展示如何使用GBR模型進(jìn)行股票價(jià)格預(yù)測(cè)。4.2.1數(shù)據(jù)準(zhǔn)備假設(shè)我們有如下股票歷史數(shù)據(jù):日期開(kāi)盤(pán)價(jià)收盤(pán)價(jià)最高價(jià)最低價(jià)成交量2023-01-0110010510799100002023-01-0210510811010412000………………4.2.2加載數(shù)據(jù)#加載數(shù)據(jù)
data=pd.read_csv('stock_prices.csv')
X=data[['open','high','low','volume']]
y=data['close']
#劃分訓(xùn)練集和測(cè)試集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)4.2.3構(gòu)建GBR模型#初始化GBR模型
gbr=GradientBoostingRegressor(n_estimators=100,learning_rate=0.1,max_depth=3,random_state=42)
#訓(xùn)練模型
gbr.fit(X_train,y_train)
#預(yù)測(cè)
predictions=gbr.predict(X_test)4.2.4參數(shù)調(diào)優(yōu)對(duì)于股票價(jià)格預(yù)測(cè),我們同樣需要對(duì)GBR模型進(jìn)行參數(shù)調(diào)優(yōu),以提高預(yù)測(cè)的準(zhǔn)確性。4.2.4.1使用RandomizedSearchCV進(jìn)行參數(shù)調(diào)優(yōu)fromsklearn.model_selectionimportRandomizedSearchCV
fromscipy.statsimportrandint
#定義參數(shù)分布
param_dist={
'n_estimators':randint(100,500),
'learning_rate':[0.1,0.05,0.01],
'max_depth':randint(3,10),
'min_samples_split':randint(2,10),
'min_samples_leaf':randint(1,10)
}
#創(chuàng)建RandomizedSearchCV對(duì)象
random_search=RandomizedSearchCV(GradientBoostingRegressor(random_state=42),param_dist,n_iter=10,cv=5,scoring='neg_mean_squared_error',random_state=42)
#搜索最佳參數(shù)
random_search.fit(X_train,y_train)
#輸出最佳參數(shù)
best_params=random_search.best_params_
print("Bestparametersfound:",best_params)
#使用最佳參數(shù)重新訓(xùn)練模型
best_gbr=GradientBoostingRegressor(**best_params,random_state=42)
best_gbr.fit(X_train,y_train)
#評(píng)估模型
best_predictions=best_gbr.predict(X_test)
mse=mean_squared_error(y_test,best_predictions)
print("MeanSquaredError:",mse)通過(guò)以上案例,我們可以看到,梯度提升回歸模型在房?jī)r(jià)預(yù)測(cè)和股票價(jià)格預(yù)測(cè)中都能發(fā)揮重要作用,而參數(shù)調(diào)優(yōu)是提高模型性能的關(guān)鍵步驟。使用GridSearchCV和RandomizedSearchCV可以幫助我們找到最佳的模型參數(shù),從而提高預(yù)測(cè)的準(zhǔn)確性。5GBR模型調(diào)優(yōu)后的評(píng)估與解釋5.1模型評(píng)估指標(biāo)在評(píng)估梯度提升回歸(GBR)模型的性能時(shí),我們通常關(guān)注幾個(gè)關(guān)鍵指標(biāo),這些指標(biāo)幫助我們理解模型的預(yù)測(cè)準(zhǔn)確性和穩(wěn)定性。以下是一些常用的評(píng)估指標(biāo):均方誤差(MSE)均方誤差是預(yù)測(cè)值與真實(shí)值之間差的平方的平均值,它強(qiáng)調(diào)了較大誤差的影響。fromsklearn.metricsimportmean_squared_error
fromsklearn.ensembleimportGradientBoostingRegressor
fromsklearn.model_selectionimporttrain_test_split
importnumpyasnp
#創(chuàng)建數(shù)據(jù)集
X,y=np.random.rand(100,10),np.random.rand(100)
#劃分訓(xùn)練集和測(cè)試集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)
#訓(xùn)練GBR模型
gbr=GradientBoostingRegressor().fit(X_train,y_train)
#預(yù)測(cè)
y_pred=gbr.predict(X_test)
#計(jì)算MSE
mse=mean_squared_error(y_test,y_pred)
print(f'MeanSquaredError:{mse}')均方根誤差(RMSE)均方根誤差是MSE的平方根,它以與目標(biāo)變量相同的單位來(lái)表示誤差。rmse=np.sqrt(mse)
print(f'RootMeanSquaredError:{rmse}')平均絕對(duì)誤差(MAE)平均絕對(duì)誤差是預(yù)測(cè)值與真實(shí)值之間差的絕對(duì)值的平均值,它對(duì)所有誤差一視同仁。fromsklearn.metricsimportmean_absolute_error
mae=mean_absolute_error(y_test,y_pred)
print(f'MeanAbsoluteError:{mae}')R2分?jǐn)?shù)R2分?jǐn)?shù)(決定系數(shù))表示模型解釋的方差比例,值越接近1,表示模型的解釋能力越強(qiáng)。fromsklearn.metricsimportr2_score
r2=r2_score(y_test,y_pred)
print(f'R2Score:{r2}')5.2特征重要性分析梯度提升回歸模型能夠提供特征重要性信息,這有助于我們理解哪些特征對(duì)模型的預(yù)測(cè)能力貢獻(xiàn)最大。特征重要性是基于特征在樹(shù)中的使用情況計(jì)算的。#獲取特征重要性
feature_importances=gbr.feature_importances_
#打印特征重要性
fori,importanceinenumerate(feature_importances):
print(f'Feature{i}:Importance:{importance}')5.3殘差分析與模型診斷殘差分析是評(píng)估模型預(yù)測(cè)準(zhǔn)確性的另一種方法,它檢查預(yù)測(cè)值與真實(shí)值之間的差異。殘差圖可以幫助我們識(shí)別模型的偏差和方差問(wèn)題,以及是否存在非線性關(guān)系或異方差性。importmatplotlib.pyplotasplt
#計(jì)算殘差
residuals=y_test-y_pred
#繪制殘差圖
plt.scatter(y_pred,residuals)
plt.axhline(y=0,color='r',linestyle='--')
plt.xlabel('PredictedValues')
plt.ylabel('Residuals')
plt.title('ResidualPlot')
plt.show()此外,我們還可以通過(guò)學(xué)習(xí)曲線來(lái)診斷模型的過(guò)擬合或欠擬合問(wèn)題,這有助于我們調(diào)整模型的復(fù)雜度。fromsklearn.model_selectionimportlearning_curve
#計(jì)算學(xué)習(xí)曲線
train_sizes,train_scores,test_scores=learning_curve(gbr,X,y,cv=5)
#繪制學(xué)習(xí)曲線
plt.figure()
plt.title('LearningCurve')
plt.xlabel('TrainingExamples')
plt.ylabel('Score')
plt.grid()
plt.plot(train_sizes,np.mean(train_scores,axis=1),'o-',color="r",label="Trainingscore")
plt.plot(train_sizes,np.mean(test_scores,axis=1),'o-',color="g",label="Cross-validationscore")
plt.legend(loc="best")
plt.show()通過(guò)上述方法,我們可以全面評(píng)估和解釋GBR模型的性能,確保模型不僅在訓(xùn)練數(shù)據(jù)上表現(xiàn)良好,而且在未見(jiàn)數(shù)據(jù)上也能做出準(zhǔn)確的預(yù)測(cè)。6高級(jí)主題與擴(kuò)展6.1極端梯度提升(XGBoost)6.1.1XGBoost原理XGBoost,或稱(chēng)極端梯度提升,是梯度提升機(jī)的一種高效實(shí)現(xiàn)。它通過(guò)以下特性優(yōu)化了GBR模型:正則化:在損失函數(shù)中加入正則項(xiàng),以減少過(guò)擬合。列塊:將數(shù)據(jù)存儲(chǔ)為列塊,便于并行處理。近似直方圖算法:使用近似直方圖算法加速特征分割點(diǎn)的尋找。緩存意識(shí):利用緩存來(lái)提高計(jì)算效率。并行計(jì)算:在單個(gè)機(jī)器上利用多線程進(jìn)行并行計(jì)算。6.1.2XGBoost參數(shù)調(diào)優(yōu)XGBoost的參數(shù)調(diào)優(yōu)主要涉及以下幾類(lèi)參數(shù):學(xué)習(xí)率(learning_rate):控制每次迭代更新權(quán)重的幅度。樹(shù)的深度(max_depth):樹(shù)的最大深度,影響模型復(fù)雜度。子樣本比例(subsample):每棵樹(shù)隨機(jī)采樣的比例。**列采樣比例(colsample_by*)**:每棵樹(shù)隨機(jī)采樣的特征比例。正則化參數(shù)(alpha,lambda):用于L1和L2正則化,防止過(guò)擬合。最小葉子節(jié)點(diǎn)權(quán)重(min_child_weight):葉子節(jié)點(diǎn)上最小的樣本權(quán)重和。6.1.2.1示例代碼importxgboostasxgb
fromsklearn.datasetsimportload_boston
fromsklearn.model_selectionimporttrain_test_split
fromsklearn.metricsimportmean_squared_error
#加載數(shù)據(jù)
boston=load_boston()
X=boston.data
y=boston.target
#劃分?jǐn)?shù)據(jù)集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)
#定義XGBoost模型
xgb_model=xgb.XGBRegressor(objective='reg:squarederror',
learning_rate=0.1,
max_depth=3,
subsample=0.8,
colsample_bytree=0.8,
min_child_weight=1,
n_estimators=100)
#訓(xùn)練模型
xgb_model.fit(X_train,y_train)
#預(yù)測(cè)
y_pred=xgb_model.predict(X_test)
#評(píng)估
mse=mean_squared_error(y_test,y_pred)
print(f'MeanSquaredError:{mse}')6.1.3輕梯度提升(LightGBM)6.1.3.1LightGBM原理LightGBM是梯度提升框架的另一種實(shí)現(xiàn),它通過(guò)以下方式提高效率和減少內(nèi)存使用:基于直方圖的決策樹(shù)算法:使用更小的直方圖來(lái)近似特征分布。葉子節(jié)點(diǎn)分裂策略:采用“Goose”策略,優(yōu)先考慮分裂后信息增益最大的葉子節(jié)點(diǎn)。稀疏優(yōu)化:自動(dòng)處理缺失值和稀疏數(shù)據(jù)。6.1.3.2LightGBM參數(shù)調(diào)優(yōu)關(guān)鍵參數(shù)包括:學(xué)習(xí)率(learning_rate):控制每次迭代的步長(zhǎng)。樹(shù)的深度(num_leaves):樹(shù)的最大葉子節(jié)點(diǎn)數(shù)。特征分?jǐn)?shù)(feature_fraction):每棵樹(shù)隨機(jī)采樣的特征比例。數(shù)據(jù)分?jǐn)?shù)(bagging_fraction):每棵樹(shù)隨機(jī)采樣的數(shù)據(jù)比例。最小數(shù)據(jù)在葉子節(jié)點(diǎn)(min_data_in_leaf):葉子節(jié)點(diǎn)上最小的數(shù)據(jù)量。6.1.3.3示例代碼importlightgbmaslgb
fromsklearn.datasetsimportload_boston
fromsklearn.model_selectionimporttrain_test_split
fromsklearn.metricsimportmean_squared_error
#加載數(shù)據(jù)
boston=load_boston()
X=boston.data
y=boston.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2021年財(cái)務(wù)部年度工作總結(jié)及述職匯報(bào)
- 幼兒園中班教案:媽媽的項(xiàng)鏈
- Module 2 Unit 5 Friends 第2課時(shí)(教學(xué)設(shè)計(jì)+素材)-2024-2025學(xué)年牛津上海版(三起)英語(yǔ)五年級(jí)上冊(cè)
- 統(tǒng)編版-語(yǔ)文一年級(jí)下冊(cè)語(yǔ)文園地七 同步分層作業(yè)(含答案)
- 閱讀匯報(bào)材料
- 《 《雪莉·杰克遜-焦慮不安的生活》(節(jié)選)英漢翻譯實(shí)踐報(bào)告》范文
- 《 扎賚特旗媒介研究》范文
- 統(tǒng)編版語(yǔ)文二年級(jí)上冊(cè)1-2單元測(cè)試卷(含答案)
- 和平區(qū)高一下學(xué)期期末考試語(yǔ)文試題(圖片版無(wú)答案)
- 《 農(nóng)業(yè)保險(xiǎn)對(duì)農(nóng)業(yè)碳排放的影響及作用機(jī)制》范文
- 識(shí)別界限 拒絕性騷擾 課件 2024-2025學(xué)年人教版(2024)初中體育與健康七年級(jí)全一冊(cè)
- Unit1-2 (單元測(cè)試)-2024-2025學(xué)年人教PEP版(2024)英語(yǔ)三年級(jí)上冊(cè)
- 金華市婺城區(qū)城市發(fā)展控股集團(tuán)有限公司招聘筆試題庫(kù)2024
- 2024-2025學(xué)年人教版九年級(jí)物理上學(xué)期第一次月考模擬練習(xí)(A卷)
- 燃燒仿真軟件OpenFOAM教程:燃燒模型與化學(xué)反應(yīng)機(jī)理
- 地圖的選擇和應(yīng)用 2024-2025學(xué)年七年級(jí)地理上冊(cè)同步課件(人教版2024)
- 2024至2030年全球與中國(guó)螢石行業(yè)發(fā)展?jié)摿巴顿Y策略分析報(bào)告
- 2024年醫(yī)療器械咨詢服務(wù)協(xié)議
- 2024年青驕第二課堂高中生禁毒知識(shí)競(jìng)賽題庫(kù)及答案(108題)
- 2024年秋新北師大版七年級(jí)上冊(cè)數(shù)學(xué)教學(xué)課件 第三章 整式及其加減 問(wèn)題解決策略:歸納
- 臨床試驗(yàn)倫理審查協(xié)議
評(píng)論
0/150
提交評(píng)論