以MSE作损失函数拟合出来的模型是否MSE最低
我通过实验方式来研究这个问题。
我采用的是一个真实的收入预测数据集,y的分布是右边长尾,收入主要集中在几千的区间。
实验算法采用lightgbm,迭代轮数由5折CV,early_stopping_rounds=100来确定,超参数除了objective和metric(objective是算法的损失函数,metric是CV中用于评价的指标)存在差异,其它超参数均不变,超参数如下:
params = {}
params['max_bin'] = 255
params['learning_rate'] = 0.005
params['boosting_type'] = 'gbdt'
params['objective'] = 'mse'
params['metric'] = 'mse'
params['sub_feature'] = 1
params['bagging_fraction'] = 1
params['bagging_freq'] = 0
params['num_leaves'] = 256
params['min_data'] = 50
params['verbose'] = -1
params['feature_fraction_seed'] = 2
params['bagging_seed'] = 3
objective和metric采用4组进行比较,分别是
(1)objective:mse metric:mse
训练集RMSE:3847
(2)objective:tweedie metric:mse
训练集RMSE:3650
(3)objective:tweedie metric:tweedie
训练集RMSE:3757
(4)objective:gamma metric:mse
训练集RMSE:3722
从这个实验可以看出,以MSE作损失函数拟合出来的模型不一定MSE是最低的。
那应该如何选择objective?
1、预估yi的分布,选择其分布对应的损失函数(是yi的分布,不是y1、y2、...、yn画出来的那个分布,但是两者实践中,是近似的)
2、多尝试,把objective视作一个超参进行调参,选择CV或OOT效果最好的那个objective
留言
張貼留言