一、赛题分析
从公式可以看到,训练的模型来计算测试集每个测试点的结果,其为预测值,上传后台。后台计算真实值与预测值的差,转换成方差的形式,最终公式的结果是一个介于0-1的值。最终排名按照分数高低排序。
二、baseline代码分析
图2-1:baseline的参数解释
官方的baseline解释了参数的含义,但是调整规则还是不太清楚,因此查阅了一些资料,得到以下信息:
n_estimators=10
: 更多的树通常能提升模型性能,但会增加计算成本。max_depth=10
:限制树的最大深度可以防止过拟合。深度越大,模型越复杂,捕捉到的数据细节越多。min_samples_split=2
: 如果一个节点包含的样本数少于此值,则不会再继续拆分。较小的值会导致更深的树。min_samples_leaf=1
: 较大的值会使模型更加保守,减少过拟合。n_jobs=-1
: 这可以显著加快训练过程,尤其是在处理大量数据时。
从以上信息可以发现,我们调整决策树个数和深度,有可能提升模型准确性,我进行了三次实验来对比效果。
2-1 三次实验对比
test1:n_estimators=10,max_depth=10,min_samples_split=2,min_samples_leaf=1,n_jobs=-1
test2: n_estimators=10,max_depth=50,min_samples_split=2,min_samples_leaf=1,n_jobs=-1
test3:n_estimators=50,max_depth=50,min_samples_split=2,min_samples_leaf=1,n_jobs=-1
实验 | test1 | test2 | test3 |
结果 | 0.1901 | 0.2824 | 0.3328 |
我得出结论:
深度的提升可以有效提升模型能力,但是同时提升深度和决策树个数,提升效率不明显,具体原因还得探索一下。但至少比默认状态高出不少,后面再研究一下有没有新的解决方案。
三、改进想法
3-1:改进方案1:
调整分裂的最小样本数 (min_samples_split
) 和 叶节点的最小样本数 (min_samples_leaf
): 这些参数的调整可能会有一定效果。
3-2:改进方案2:
图3-1: 训练集Yield值分布情况
我发现,该数据集的Yield主要集中在0.8左右,但是最小值0.004到1都有,跨度比较大,较大值和较小值都存在,可能会对模型训练有影响。
因此,数据的处理方式可能需要改进一下。
综上所述,通过对baseline的研究可以得到一些有效信息,后面就是对其优化改进,提升模型精度。
感谢Datawhale提供这个学习交流机会!!!😊😊😊