随机梯度提升(SGB)

Python 树模型机器学习

Elie Kawerk

Data Scientist

梯度提升:缺点

  • GB 需要穷举搜索。

  • 每棵 CART 都训练以找到最佳划分点和特征。

  • 可能导致多棵 CART 使用相同划分点,甚至相同特征。

Python 树模型机器学习

随机梯度提升

  • 每棵树在训练数据的随机行子集上训练。

  • 抽样实例为训练集的 40%–80%,且为不放回抽样。

  • 选划分点时对特征进行不放回抽样。

  • 结果:进一步提升集成多样性。

  • 作用:为树的集成增加更多方差。

Python 树模型机器学习

随机梯度提升:训练

SGB

Python 树模型机器学习

sklearn 中的随机梯度提升(auto 数据集)

# Import models and utility functions
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error as MSE

# Set seed for reproducibility
SEED = 1

# Split dataset into 70% train and 30% test
X_train, X_test, y_train, y_test = train_test_split(X,y, 
                                                    test_size=0.3, 
                                                    random_state=SEED)
Python 树模型机器学习

sklearn 中的随机梯度提升(auto 数据集)

# Instantiate a stochastic GradientBoostingRegressor 'sgbt'
sgbt = GradientBoostingRegressor(max_depth=1, 
                                 subsample=0.8,
                                 max_features=0.2,
                                 n_estimators=300,             
                                 random_state=SEED)

# Fit 'sgbt' to the training set sgbt.fit(X_train, y_train) # Predict the test set labels y_pred = sgbt.predict(X_test)
Python 树模型机器学习

sklearn 中的随机梯度提升(auto 数据集)

# Evaluate test set RMSE 'rmse_test'
rmse_test = MSE(y_test, y_pred)**(1/2)

# Print 'rmse_test'
print('Test set RMSE: {:.2f}'.format(rmse_test))
Test set RMSE: 3.95
Python 树模型机器学习

¡Vamos a practicar!

Python 树模型机器学习

Preparing Video For Download...