准备工作:去课程github下载原始代码,kaggle下载数据集。或者关注微信公众号:机器学习手艺人,下载代码和数据集(文末有方法)。解压数据集,出现两个csv文件covid.test.csv,covid.train.csv,将文件和代码放到同一目录下。
kaggle提交: https://www.kaggle.com/c/ml2022spring-hw1,提交结果可能需要科学上网
Simple baseline (mse<2.28371): 直接运行HW1代码,可能需要下载一些工具包,运行过后出现pred.csv,将此文件提交到kaggle上面出现分数:1.84996,已经比simple baseline要好很多了。
Medium baseline (mse<1.49430): 使用特征选择(feature selection)。原始特征有117个,噪音较多,神经网络学习相对困难。因为我们预测的是第5天的tested_postive,比较合理的想法是选择前四天的tested_positive数据作为训练特征。因这四个特征对应的index是[53, 69, 85, 101],我们将select_feat函数中的feat_idx 进行修改。运行代码,提交得到:1.09591,已经接近strong baseline了。
Strong baseline (mse<1.05728): 使用特征选择+网络架构采用LeakyReLU + Adam优化器。特征选择仍然用medium baseline的方法,网络架构中将nn.ReLU()代替为nn.LeakyReLU(0.1),将SGD优化器换成Adam,同时将learning rate由原来的1e-5扩大10倍。提交后得到分数:1.04168,稍好于strong baseline。
Boss baseline (mse<0.85800): 使用更精准的特征选择+归一化+网络架构改变+Adam优化器+余弦退火学习率。
特征选择利用sklearn中的特征选择方法,选择了24个最有影响的特征。对特征进行归一化处理,将其转换到[0, 1]区间内。网络架构中将nn.ReLU()代替为nn.LeakyReLU(0.1),同时变动了层的宽度,使用了dropout减少过拟合。将SGD优化器换成Adam,学习率使用余弦退火。提交后得到分数:0.85433,不过private还没突破boss,需要做些微调。
作业一答案获得方式:
扫码关注 “机器学习手艺人”微信公众号
后台回复关键词:202201