模型介紹:在“2.1.1.6集成模型(分類)”節(jié)中械馆,曾經探討過集成模型的大致類型和優(yōu)勢朴下。這一節(jié)除了繼續(xù)使用普通隨機森林和提升樹模型的回歸器版本之外,還要補充介紹隨機森林模型的另一個變種:極端隨機森林(Extremely Randomized Trees)洞辣。與普通的隨機森林(Random Forests)模型不同的是阎曹,極端隨機森林在每當構建一棵樹的分裂節(jié)點的時候,不會任意地選取特征纵东;而是先隨機收集一部分特征粘招,然后利用信息熵和基尼不純性等指標挑選最佳的節(jié)點特征。
初始
from sklearn.datasets import load_boston
#從讀取房價數(shù)據(jù)存儲在變量boston中偎球。
boston=load_boston()
#輸出數(shù)據(jù)描述
print(boston.DESCR)
from sklearn.cross_validation import train_test_split
import numpy as np
X=boston.data
y=boston.target
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=33)
from sklearn.preprocessing import StandardScaler
#分別初始化對特征和目標值的標準化器
ss_X=StandardScaler()
ss_y=StandardScaler()
#分別對訓練和測試數(shù)據(jù)的特征以及目標值進行標準化處理
X_train=ss_X.fit_transform(X_train)
X_test=ss_X.fit_transform(X_test)
y_train=ss_y.fit_transform(y_train)
y_test=ss_y.fit_transform(y_test)
使用三種集成回歸模型對美國波士頓房價訓練數(shù)據(jù)進行學習洒扎,并對測試數(shù)據(jù)進行預測
from sklearn.ensemble import RandomForestRegressor,ExtraTreesRegressor,GradientBoostingRegressor
rfr=RandomForestRegressor()
rfr.fit(X_train,y_train)
rfr_y_predict=rfr.predict(X_test)
etr=ExtraTreesRegressor()
etr.fit(X_train,y_train)
etr_y_predict=etr.predict(X_test)
gbr=GradientBoostingRegressor()
gbr.fit(X_train,y_train)
gbr_y_predict=gbr.predict(X_test)
使用三種集成回歸模型對美國波士頓房價測試數(shù)據(jù)上的回歸預測性能進行評估
from sklearn.metrics import r2_score,mean_absolute_error,mean_squared_error
print('R-squared value of RandomForestRegressor:',rfr.score(X_test,y_test))
print('The mean squared error of RandomForestRegressor:',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(rfr_y_predict)))
print('The mean absolute error of RandomForestRegressor:',mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(rfr_y_predict)))
R-squared value of RandomForestRegressor: 0.684410600132
The mean squared error of RandomForestRegressor: 24.471210616
The mean absolute error of RandomForestRegressor: 3.20946957422
print('R-squared value of ExtraTreesRegressor:',etr.score(X_test,y_test))
print('The mean squared error of ExtraTreesRegressor:',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(etr_y_predict)))
print('The mean absolute error of ExtraTreesRegressor:',mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(etr_y_predict)))
R-squared value of ExtraTreesRegressor: 0.754540974486
The mean squared error of ExtraTreesRegressor: 19.0332106004
The mean absolute error of ExtraTreesRegressor: 3.01439924608
#利用訓練好的極端回歸森林模型,輸出每種特征對預測目標的貢獻度
print (np.sort(zip(etr.feature_importances_,boston.feature_names),axis=0))
ValueError: axis(=0) out of bounds(待解決)
print('R-squared value of GradientBoostingRegressor:',gbr.score(X_test,y_test))
print('The mean squared error of GradientBoostingRegressor:',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(gbr_y_predict)))
print('The mean absolute error of GradientBoostingRegressor:',mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(gbr_y_predict)))
R-squared value of GradientBoostingRegressor: 0.711319266042
The mean squared error of GradientBoostingRegressor: 22.3846778264
The mean absolute error of GradientBoostingRegressor: 2.9415078588
特點分析
許多在業(yè)界從事商業(yè)分析系統(tǒng)開發(fā)和搭建的工作者更加青睞集成模型衰絮,并且經常以這些模型的性能表現(xiàn)為基準袍冷,與新設計的其他模型性能進行比對。雖然這些集成模型在訓練過程中要耗費更多的時間猫牡,但是往往可以提供更高的表現(xiàn)性能和更好的穩(wěn)定性胡诗。
總結
若是對我們在“2.1.2回歸預測”節(jié)所有介紹過的模型在“美國波士頓房價預測”問題上的性能排序比較,也可以發(fā)現(xiàn)使用非線性回歸樹模型淌友,特別是集成模型煌恢,能夠取得更高的性能表現(xiàn)。