机器学习调优方法总结

目录

一、问题

问题1:数据输入

问题2:output和target维度不匹配

问题3:NLP中处理数据有哪些方法?

二、改进

改进1:改变归一化函数

改进1.1:用StandardScaler替换MinMaxScale

改进1.2:数据正态化

改进2:使用随机搜索的方法来找到最优参数

改进2.1:使用随机搜索的方法来寻找最优的参数

改进3:模型改进

改进3.1:将机器学习模型转换为Transformer模型


问题描述:

本项目旨在利用包含 79 个解释变量的数据集,预测爱荷华州埃姆斯市住宅的最终价格。数据集提供了房屋的详细信息,如地理位置、面积、房间数量、建筑材料等。我们将通过数据预处理、特征工程、模型选择和训练、模型评估等步骤,构建一个准确的房价预测模型。

一、问题

问题1:数据输入

提问:在用Transformer进行预测的时候,怎么处理输入数据呢?

思考:理想方式是处理成什么样的数据呢?(1468*79*64)

方法1:把1468 * 79转化成str list,然后放入Word2Vec中,就可以变成1468*79*64型数据

方法2:把1468 * 79转化成整数数值,然后放入nn.Embedding中,就可以变成1468*79*64型数据

提升都不大

问题2:output和target维度不匹配

提问:输入数据维度是(32,79,64),最后Encoder输出的维度是(32,79,1),这很正常,但是Target的维度是(32,1),这个时候又该怎么调整这个输出以达到维度合适呢?

方法1:x.mean(dim = 1) 在79的那个维度上取平均值,然后就变成了(32,1)

方法2:flatten + linear 没办法提升

问题3:NLP中处理数据有哪些方法?

这是问题1的引申问题,garbage in garbage out原则

二、改进

改进1:改变归一化函数

改进1.1:用StandardScaler替换MinMaxScale

改进效果:有效果,由0.21提升到0.178

原因:在进入Transformer结构之前,数据进行标准化,StandardScaler比MinMaxScaler好,在训练集和测试集上,MinMaxScaler效果很好,但是实际效果很差。在inverse_transform的时候MinMaxScaler有很大的误差!

在Transformer或者Stacking上都有提升

改进1.2:数据正态化

改进效果:有效果,由0.178提升到0.174

原因:既然改进1有效果,那就在这个方向上继续改进,加入了下面这段代码,将数据正态化,原因是StandardScaler在正态分布上的效果更好。

scaler_norm_saleprice = PowerTransformer(method='yeo-johnson')

改进2:使用随机搜索的方法来找到最优参数

改进2.1:使用随机搜索的方法来寻找机器学习最优的参数

改进效果:没有很大改变

改进2.2:减小模型的规模,减少每次训练的数据量

改进效果:没有很大改变

因为数据量不够多,减小模型的规模,减少训练的数据量,来帮助收敛

改进3:模型方面改进和优化

改进3.1:将机器学习模型转换为Transformer模型

改进效果:有效果,0.17到0.14

原因:建模用的Transformer模型甚至只用了6层Encoder,数据也没处理,模型架构也很粗糙,参数也没有调整,效果就有很大提升

Transformer方面:

优化1:在处理好了数据之后,用nn.Embedding和标准的Position Embedding;

优化2:调整超参数;

  • 16
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值