机器学习调优方法总结

ops/2025/1/16 1:51:04/

目录

一、问题

问题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:调整超参数;


http://www.ppmy.cn/ops/97881.html

相关文章

目标检测多模态大模型实践:貌似是全网唯一Shikra的部署和测试教程,内含各种踩坑以及demo代码

原文: Shikra: Unleashing Multimodal LLM’s Referential Dialogue Magic 代码: https://github.com/shikras/shikra 模型: https://huggingface.co/shikras/shikra-7b-delta-v1 https://huggingface.co/shikras/shikra7b-delta-v1-0708 第一…

Linux:Linux多线程

目录 线程概念 什么是线程 二级页表 线程的优点 线程的缺点 线程异常 线程用途 Linux进程VS线程 进程和线程 进程的多个线程共享 进程和线程的关系 Linux线程控制 POSIX线程库 线程创建 线程等待 线程终止 分离线程 线程ID及进程地址空间布局 线程概念 什么…

XSS和DOM破坏案例

XSS案例 环境地址&#xff1a;XSS Game - Learning XSS Made Simple! | Created by PwnFunction 1.Ma Spaghet! 源码&#xff1a; <!-- Challenge --> <h2 id"spaghet"></h2> <script>spaghet.innerHTML (new URL(location).searchParam…

苹果上架没有iphone、没有ipad也可以生成截屏

使用flutter、uniapp或其他跨平台框架开发ios的APP&#xff0c;上架的时候都会遇到一个问题&#xff0c;上架的时候需要各种尺寸的设备来做ios截屏。 比如目前最新的要求是&#xff0c;iphone需要三种不同尺寸的设备的截屏&#xff0c;假如支持ipad则还需要使用ipad 2代和ipad…

HTML静态网页成品作业(HTML+CSS)——非遗昆曲介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

封装了一个iOS评论弹窗

封装了一个iOS类似抖音效果的评论弹窗&#xff0c;可以跟手滑动的效果 主要有下面两需要注意的点 双手势响应 因为我们的弹窗既要支持拖动整体上下滑动&#xff0c;还要支持内容列表的滑动 &#xff0c;所以&#xff0c;我们需要在内容视图中添加一个滑动的手势&#xff0c;以…

页面设计任务 个人信息页面

目录 成品: 任务要求&#xff1a; 1. 创建一个基本的个人简介网页 2. 样式和布局要求 3. 详细样式要求 源码&#xff1a; 详细讲解&#xff1a; 1.导航栏部分&#xff1a; 2.头像和介绍部分: 3.技能列表部分 4.作品集部分 成品: 任务要求&#xff1a; 1. 创建一个基本…

Python异常处理

在Python中&#xff0c;异常处理是一种重要的编程结构&#xff0c;它允许你在代码运行时检测并响应错误或异常情况。异常处理使得程序在遇到错误时能够优雅地处理这些错误&#xff0c;而不是直接崩溃或终止执行。 下面是根据代码示例来说明&#xff1a; input_str1 input(&q…