关于boost和bagging对error的影响

error分为bias和variance。

boost,多个二傻子一起思考,第一个二傻子只会算加法,第二个二傻子只会算乘法。最后得出的结果,就比较接近真实值,bias就比较小

 

bagging,多个聪明人,第一个聪明人,可能估值偏小,第二个聪明人可能估值偏大。总体想加,variance就小了

以下是一个利用贝叶斯优化器优化CatBoost回归模型的Python代码实例: ```python import numpy as np import pandas as pd from catboost import CatBoostRegressor, Pool from sklearn.metrics import mean_squared_error from bayes_opt import BayesianOptimization # 导入数据集 data = pd.read_csv('data.csv') X = data.drop(['target'], axis=1) y = data['target'] # 定义CatBoost回归模型 def cb_reg_model(learning_rate, max_depth, l2_leaf_reg, bagging_temperature): model = CatBoostRegressor( learning_rate=learning_rate, max_depth=int(max_depth), l2_leaf_reg=l2_leaf_reg, bagging_temperature=bagging_temperature, random_seed=42, eval_metric='RMSE', silent=True ) return model # 定义贝叶斯优化器的目标函数 def cb_reg_bo(learning_rate, max_depth, l2_leaf_reg, bagging_temperature): # 定义交叉验证函数 def cv_rmse(learning_rate, max_depth, l2_leaf_reg, bagging_temperature): scores = [] kf = KFold(n_splits=5, shuffle=True, random_state=42) for train_idx, val_idx in kf.split(X, y): train_pool = Pool(X.iloc[train_idx], y.iloc[train_idx]) val_pool = Pool(X.iloc[val_idx], y.iloc[val_idx]) model = cb_reg_model(learning_rate, max_depth, l2_leaf_reg, bagging_temperature) model.fit(train_pool, eval_set=val_pool) y_pred = model.predict(val_pool) score = mean_squared_error(y.iloc[val_idx], y_pred, squared=False) scores.append(score) return np.mean(scores) # 调用交叉验证函数 score = -1.0 * cv_rmse(learning_rate, max_depth, l2_leaf_reg, bagging_temperature) return score # 定义搜索空间 pbounds = {'learning_rate': (0.01, 0.3), 'max_depth': (3, 10), 'l2_leaf_reg': (1, 10), 'bagging_temperature': (0, 1)} # 初始化贝叶斯优化器 cb_reg_bopt = BayesianOptimization( f=cb_reg_bo, pbounds=pbounds, random_state=42, ) # 执行优化器 cb_reg_bopt.maximize(init_points=10, n_iter=30) # 输出最优参数 print(cb_reg_bopt.max) ``` 在这个示例中,我们从文件中读取数据集,然后定义了一个CatBoost回归模型函数和一个交叉验证函数。然后,我们定义了一个目标函数cb_reg_bo,它调用交叉验证函数并返回负的均方根误差(RMSE)。最后,我们定义了一个搜索空间pbounds,并初始化了一个贝叶斯优化器cb_reg_bopt,然后执行了优化器。最终输出最优参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值