李宏毅机器学习hw1 Boss baseline(2022)
题目介绍
是一个DNN二分类问题,给定前4天的信息,预测第五天这个人有没有阳
春 quarter课程(台湾国立大学)
ML 105357 Spring quarter课程 (台湾国立大学) 提供详细资料
老师给的基线代码:https://colab.research.google.com/drive/1FTcG6CE-HILnvFztEFKdauMlPKfQvm5Z#scrollTo=YdttVRkAfu2t
Kaggle 提交: ML2022Spring-hw1 | Kaggle
公榜baseline:

bossline 私榜0.88509,公榜0.85800
以上可能需要科学上网
题目解答
simple baseline
拿到代码跑一遍可以获得1.6145的基线
medium baseline
在此基础上改小batchsize可以轻松达到medium baseline。
其中的道理被认为是在小批量训练过程中引入了一定噪声的结果从而实现了更好的泛化性能(这可能只是表面现象如有懂行的朋友愿意讨论这个问题欢迎留言交流)。
对于模型结构的调整幅度较小。仅更换了激活函数模块中的Relu层为LeakyRelu层。为了测试该方法的潜力,在初步阶段进行了简单的复杂度提升尝试。结果显示该方法的效果并不显著提升。考虑到当前的数据量有限以及各变量间的相关性可能较弱,在这种情况下可以预期一个相对简单的模型就可能表现良好。如果想要进一步优化网络结构,则建议同时增加网络复杂度并引入正则化手段进行持续改进。可能会带来一定的改善效果,请注意目前项目已处于瓶颈阶段不再继续推进后续优化工作
strong baseline
为了实现强基线(strong baseline),这一阶段需要进行特征选择。从理论上讲,神经网络自身可能具备这种能力(self-screening features),但可能是因为模型深度不足或训练数据量有限(insufficient depth and limited data)。因此不得不采取措施进行优化(screening)。
我的方法是通过线性回归单模输出中各输入特征对应的权重绝对值大小进行筛选和删减。无论后续是否继续使用此模型来进行集成融合工作。
特征数量对模型表现影响还是比较大的,需要稍微精细一点
在筛选完特征后,DNN单模的表现得以在私榜上达到0.933分,在公榜上达到0.890分,并成功超越了强基线(strong baseline)。并且在多个方面表现优异。
boss baseline
与基准模型BossBase相比,在性能上仍有一定差距。研究团队通过结合线性回归和DNN单模模型,并采用平均权重进行集成优化,在实验结果中取得了超越基准的表现。
过程记录
| 修改 | 私榜 | 公榜 | 备注 |
|---|---|---|---|
| baseline | 1.6145 | ||
| 加线性层 | 1.5947 | ||
| 线性层+batchsize1024 | 2.0333 | ||
| 线性层+batchsize128 | 1.2539 | ||
| 线性层+batchsize64 | 1.23344 | ||
| 线性层+batchsize64+l2正则 | 1.15726 | ||
| 线性层+batchsize64+l2正则+训练7k轮 | 1.46195 | ||
| sklearn单模尝试 | |||
| 线性回归单模 | 1.01366 | ||
| 决策树回归 | 6.69577 | ||
| 单模线性回归(保留了42个特征) | 0.91216 | 0.89979 | |
| ensemble模型结果 | |||
| dnn特征数量52+batchsize64+正则+ensemble线性单模 | 0.92129 | 0.96981 | |
| dnn特征数量62+batchsize64+正则+ensemble线性单模 | 0.87775 | 0.84749 | 单模lr 0.921+0.909 单模dnn 0.933+0.890 |
DNN模型结构
class My_Model(nn.Module):
def __init__(self, input_dim):
super(My_Model, self).__init__()
# TODO: modify model's structure, be aware of dimensions.
self.layers = nn.Sequential(
nn.Linear(input_dim, 16),
nn.LeakyReLU(0.05),
nn.Linear(16, 8),
nn.LeakyReLU(0.05),
nn.Linear(8, 1)
)
可能的改进方向
当前看来,在使用DNN模型时可以适当提升其复杂度并引入正则化技术进行优化尝试。此外,在梯度下降方法的选择上也存在未探索的可能性,并未对学习率进行调整。
当前阶段的预处理基于过去五日的一天数据,在此基础上可以通过将当前时段的数据作为输入来预测下一时段信息的方式进行操作。通过训练模型生成相应的输出,并将这些输出进行集成融合以提高整体效果。
代码开源
百度账号
Github:____
