天池大赛——二手车交易价格预测方案分享——神经网络

本文主要是介绍天池大赛——二手车交易价格预测方案分享——神经网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       这个比赛是天池的一个数据挖掘入门赛,要求根据提供的数据预测二手车的交易价格,属于回归问题,此篇主要分享一下模型方面的设计思路。
       推荐系统最常用的模型是LightGBM和XGBoost等,但在这个比赛中两个模型的表现一般,也可能是我自己没有调好的原因。最终没有选择这两个模型,而是采用了神经网络,并基于pytorch实现。

网络结构

普通的全连接网络在层数比较深的时候会由于梯度衰减的问题难以训练,因此在设计网络结构的时候参考了Resnet的跳层连接思想,即在网络中设计了名为Basicblock的基本模块。

class BasicBlock(nn.Module):def __init__(self, input_size, hidden_size):super(BasicBlock, self).__init__()self.input_size = input_sizeself.hidden_size = hidden_sizeself.layer1 = nn.Sequential(nn.Linear(self.input_size, self.hidden_size),nn.BatchNorm1d(self.hidden_size),nn.ReLU())self.layer2 = nn.Sequential(nn.Linear(self.hidden_size, self.hidden_size),nn.BatchNorm1d(self.hidden_size),nn.ReLU())self.layer3 = nn.Sequential(nn.Linear(self.hidden_size, self.hidden_size),nn.BatchNorm1d(self.hidden_size),nn.ReLU())                            self.layer4 = nn.Sequential(nn.Linear(self.hidden_size, self.input_size),nn.BatchNorm1d(self.input_size))self.relu = nn.ReLU()def forward(self, x):out = self.layer1(x)out = self.layer2(out)out = self.layer3(out)out = self.layer4(out)out = out + xout = self.relu(out)return out

       另外为了提高网络的拟合能力,参考SeNet的注意力思想,设计了注意力模块:

nn.Sequential(nn.Linear(self.layer_size, self.layer_size//16),nn.ReLU(),nn.Linear(self.layer_size//16, self.layer_size),nn.Sigmoid())

       网络整体结构如下所示:
在这里插入图片描述
       网络结构中的input_block和output_block如下:

self.inputblock = nn.Sequential(nn.Linear(input_size, self.layer_size),nn.BatchNorm1d(self.layer_size),nn.ReLU())
self.outputblock = nn.Linear(self.layer_size, 1)

模型的训练

       在训练时采用了10折交叉验证,生成十个模型,然后对十个模型在测试集上的预测结果进行平均得到最终预测结果。
       优化器采用的是Adam,初始学习率设置为1e-1,学习率衰减采用的是ReduceLROnPlateau:

scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', patience=5, verbose=True, cooldown=1, factor=0.7, min_lr=1e-5)

       batch_size设置为2048,训练150轮。

模型性能

       上述结构的模型,在验证集上的mae基本上能够到420+,不过这时的训练集mae比验证集的略高。在调试过程中发现略微的欠拟合能够实现更低的val_loss。
       经过十个模型融合后的预测结果,提交到网站上以后,基本能够达到410+的结果。最终提交的结果,是我通过调整模型结构(如增加深度,增加宽度)之后得到的5个预测结果的平均,最终排行榜上结果是408,排行第15。

这篇关于天池大赛——二手车交易价格预测方案分享——神经网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/350781

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

如何选择SDR无线图传方案

在开源软件定义无线电(SDR)领域,有几个项目提供了无线图传的解决方案。以下是一些开源SDR无线图传方案: 1. **OpenHD**:这是一个远程高清数字图像传输的开源解决方案,它使用SDR技术来实现高清视频的无线传输。OpenHD项目提供了一个完整的工具链,包括发射器和接收器的硬件设计以及相应的软件。 2. **USRP(Universal Software Radio Periphera

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

MyBatis 切换不同的类型数据库方案

下属案例例当前结合SpringBoot 配置进行讲解。 背景: 实现一个工程里面在部署阶段支持切换不同类型数据库支持。 方案一 数据源配置 关键代码(是什么数据库,该怎么配就怎么配) spring:datasource:name: test# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource# @需要修改 数据库连接及驱动u