机器学习调优方法总结

embedded/2024/9/20 7:27:20/ 标签: transformer, 深度学习, 人工智能

目录

一、问题

问题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/embedded/98936.html

相关文章

C语言:递归

递归简单来说就是函数自己调用自己。 特点&#xff1a;一般代码比较简洁&#xff0c;没有出口。 例子1&#xff1a;用一个函数计算阶乘 #include<stdio.h>//不用递归 int fac(int n) {int val 1;for (int i 1; i <n;i){val * i;}return val; }//用递归 int fac1(…

基于PHP的文件包含介绍

引言&#xff1a;在实际开发过程中&#xff0c;经常会遇到部分模块功能需要重复使用的情况&#xff0c;比如数据库的增删改查&#xff0c;文件包含通过将需要重复使用的功能模块代码引入其他文件的内容&#xff0c;实现重用代码、分离配置等。然而&#xff0c;如果文件包含操作…

HTTP 请求流程

HTTP 的请求流程包括地址解析、封装 HTTP 数据包、封装 TCP 包、建立 TCP 连接、客户端发送请求、服务端响应、服务端关闭 TCP 连接&#xff0c;流程如下&#xff1a; 地址解析&#xff1a;通过域名系统 DNS 解析服务器域名从而获得主机的 IP 地址。例如客户端的浏览器请求&am…

github访问加速项目@一键部署自动更改host修改加速Github访问

文章目录 abstractpowershell 版本的一键更新hosts文件更新Hosts 操作步骤准备:设置powershell执行策略powrshell脚本注册计划任务定期自动执行上述操作相关目录结构 其他方法获取相关脚本一键运行整合脚本&#x1f916;&#x1f43d;检查 abstract 尽管这里实现了一键部署自动…

GoFly快速开发后台框架当后端接口请求返回403提示码就跨域问题/请求端域名拦截问题

问题&#xff1a; 大家在本地开发使或者把开发好的程序部署后请求后端是返回403&#xff0c;只有一个问题就是存在请求端跨域问题。 解决办法&#xff1a; 解决这个问题很简单&#xff0c;跨域的就解决跨域就好了。 我们官方给大家统一解决办法是&#xff1a; 到后端配置文…

前端技术框架

前端技术是指用于设计和构建用户界面的技术&#xff0c;它涵盖了多个方面&#xff0c;包括网页的结构、样式、交互以及性能优化等。以下是对前端技术的一些详细介绍&#xff1a; 一、基础技术 HTML&#xff08;HyperText Markup Language&#xff09;&#xff1a; 是一种制作万…

年化20.7%全球大类资产的波动率因子(附python代码)

原创文章第627篇&#xff0c;专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 昨天咱们使用回测系统来改进了遗传算法的fitness和metrics。单因子年化23.7%&#xff0c;基于deap的因子挖掘&#xff0c;我改进了fitness和metrics方案&#xff08;附python代码和…

PHP轻创推客集淘客地推任务平台于一体的综合营销平台系统源码

&#x1f680;轻创推客&#xff0c;营销新纪元 —— 集淘客与地推任务于一体的全能平台&#x1f310; &#x1f308;【开篇&#xff1a;营销新潮流&#xff0c;轻创推客引领未来】 在瞬息万变的营销世界里&#xff0c;你还在为寻找高效、全面的营销渠道而烦恼吗&#xff1f;&…

Kubernetes中如何对etcd进行备份和还原

1. 简介 1.1. 概述 Kubernetes(简称K8s)是一个开源的容器编排系统,它可以帮助开发者、工程师和IT专业人士高效地在生产环境中部署、扩展和管理容器化应用程序。Kubernetes最初由Google开发,后来成为云原生计算基金会(Cloud Native Computing Foundation)的一部分。 1.…

搭建 PXE 远程安装服务器和设置 Kickstart 无人值守安装

目录 搭建 PXE 远程安装服务器 1.安装并启用 TFTP 服务 2.安装并启用 DHCP 服务 3.准备 Linux 内核、初始化镜像文件 4.准备 PXE 引导程序 5.安装FTP服务&#xff0c;准备CentOS 7 安装源 6.配置启动菜单文件 7.关闭防火墙&#xff0c;验证 PXE 网络安装 设置 Kicksta…

【Dash】feffery_antd_components 简单入门示例

一、简单了解 feffery_antd_components 简称 fac &#xff0c;是一个基于 Ant Design 的 Dash 第三方组件&#xff0c;由Feffery 老师开源维护的 Python 网页开发组件库&#xff0c;它具有丰富的页面常用交互组件功能&#xff0c;使开发者可以使用纯Python的方式快速构建现代…

Java二十三种设计模式-责任链模式(17/23)

责任链模式&#xff1a;实现请求处理的灵活流转 引言 在这篇博客中&#xff0c;我们深入探讨了责任链模式的精髓&#xff0c;从其定义和用途到实现方法&#xff0c;再到使用场景、优缺点、与其他模式的比较&#xff0c;以及最佳实践和替代方案&#xff0c;旨在指导开发者如何…

odoo17 省市区三级联动

odoo17 省市区三级联动 class CrmAddLx(models.Model):_inherit "res.partner"qu_id fields.Many2one("crm.qu", string"区", indexTrue, domain"[(shi_id, , shi_id)]")shi_id fields.Many2one("crm.shi", string"…

C++ 设计模式——建造者模式

建造者模式 建造者模式组成部分建造者模式使用步骤1. 定义产品类2. 创建具体产品类3. 创建建造者接口4. 实现具体建造者5. 创建指挥者类6. 客户端代码 建造者模式 UML 图建造者模式 UML 图解析建造者模式的优缺点建造者模式的适用场景完整代码 建造者模式 建造者模式&#xff…

c#实现数据导出为PDF的方式

PdfSharp vs iTextSharp: C#中PDF导出功能比较 PdfSharp 优点 轻量级&#xff1a;适合简单的PDF生成任务易于学习&#xff1a;API相对简单&#xff0c;学习曲线较缓开源&#xff1a;提供开源版本&#xff0c;可自由使用和修改纯C#实现&#xff1a;不依赖外部库或COM组件支持…

LSMT系列安全光栅#LSMT-14#LSMT-25#LSMT-45#安全光栅#光栅

LSMT系列安全光栅#LSMT-14#LSMT-25#LSMT-45#安全光栅#光栅

什么是TCP

TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种计算机网络协议&#xff0c;用于在网络上可靠地传输数据。它是互联网协议套件&#xff08;TCP/IP&#xff09;的核心协议之一。 TCP提供了在网络上建立可靠的、面向连接的通信。它通过…

02 网络编程-UDP用户数据包协议

目录 一、UDP简介 二、UDP协议的通信流程 三、UDP相关API接口 &#xff08;1&#xff09;创建套接字-socket() &#xff08;2&#xff09;地址信息结构体sockaddr_in{} &#xff08;3&#xff09;地址转换接口 &#xff08;4&#xff09;发送消息sendto() &#xff08;…

SSE请求多种实现方式总结

SSE请求多种实现方式总结 什么是SSE一、怎么实现SSE请求(基础版本)1、前端实现:前端示例代码 2、 nodejs 后端示例代码3、特点 二、Fetch API实现SSE(升级版本)1、 node后端代码2、 前端Fecth请求实现3、特点 三、Fecth结合EventSource实现SSE(终极版本)1、node后端代码示例2、…

MySql中常用的sql语句大全(工作常用篇)

1. DDL 1.1 操作数据库 --创建库 create database 库名;--创建库时判断库是否存在&#xff0c;不存在则创建 create database if no exists 库名;--查看所有数据库 show databases;--使用指定数据库 use 库名;--查看当前指定数据库包含的数据表 show tables;--查看数据库的结…