前言
本文章将建立三层结构的机器学习模型,第一层传统机器学习算法,第二层集成学习,第三层门控专家模型。这套模型用于非时序数据回归任务的预测,比如房价预测、二手车价格预测等。
一、个体传统机器学习算法
算法选择
最基础的个体学习器使用以下模型:
CatBoost
Lasso (Lasso Regression)
LightGBM (Light Gradient Boosting Machine)
ElasticNet
XGBoost
Ridge (Ridge Regression)
实际上还可以加上SVR和GBR,但他们面对十万级的数据实在太慢,12个小时都训练不出来。
个体学习器训练代码
cat_model = cat_boost_model.fit(X_train,y_train)
lasso_model = lasso_model_full_data.fit(X_train,y_train)
lgbm_model = lgb_model_full_data.fit(X_train,y_train)
elastic_model = elastic_model_full_data.fit(X_train,y_train)
xgboost_model = xgboost.fit(X_train,y_train)
ridge_model = ridge.fit(X_train,y_train)
个体学习器优化
实际上最好的优化方法就是在第三层次上所有参数一起进行优化,但是时间效率根本上不可能,哪怕是在第二层次上进行优化,在时间和效率上都是无法忍受的。
学习器优化代码参考
def optimize_lasso(loss):
def objective(trial):
# 优化归一化方法
scaler_name = trial.suggest_categorical('scaler', ['StandardScaler', 'MinMaxScaler', 'RobustScaler'])
if scaler_name == 'StandardScaler':
scaler = StandardScaler()
elif scaler_name ==