【 2021 MathorCup杯大数据挑战赛 A题 二手车估价】初赛复赛总结、方案代码及论文

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 总结了2021 MathorCup杯大数据挑战赛A题“二手车估价”的初赛和复赛经验,包括题目要求、解题思路、所用方法和结果,提供了详细的数据分析、模型构建、论文撰写和工具使用技巧,并展示了初赛和复赛的论文。

1 题目

1.1 初赛题目

赛道 A:二手车估价问题

随着我国的机动车数量不断增长,人均保有量也随之增加,机动 车以“二手车”形式在流通环节,包括二手车收车、二手车拍卖、二手 车零售、二手车置换等环节的流通需求越来越大。二手车作为一种特 殊的“电商商品”,因为其“一车一况”的特性比一般电商商品的交易要 复杂得多,究其原因是二手车价格难于准确估计和设定,不但受到车 本身基础配置,如品牌、车系、动力等的影响,还受到车况如行驶里 程、车身受损和维修情况等的影响,甚至新车价格的变化也会对二手 车价格带来作用。目前国家并没有出台一个评判二手车资产价值的标 准。一些二手车交易平台和二手车第三方估价平台都从自身的角度建 立了一系列估价方法用于评估二手车资产的价值。

在一个典型的二手车零售场景,二手车一般通过互联网等线上渠 道获取用户线索,线下实体门店对外展销和售卖,俗称 O2O 门店模式。门店通过“买手”从个人或其他渠道收购二手车,然后由门店定价 师定价销售,二手车商品和其他商品一样,如果定价太高滞销也会打 折促销,甚至直接以较低的价格打包批发,直至商品最终卖出。

基于以上背景,请你们团队根据附件给出的数据,通过数据分析 与建模的方法帮助二手车交易平台解决下面的问题:

初赛问题

问题 1:基于给定的二手车交易样本数据(附件 1:估价训练数据),选用合适的估价方法,构建模型,预测二手车的零售交易价格, 数据中会对 id 类,主要特征类等信息进行脱敏。主要数据包括车辆基础信息、交易时间信息、价格信息等,包含 36 列变量信息,其中15 列为匿名变量。字段如下:
3.png

请采用附件 1 中的“估价训练数据”(带标签)训练模型和测试模型,自行设置测试集,使用训练完成后的模型对附件 2 中的“估价验证数据”(不带标签)进行预测,并将预测结果保存在附件 3“估价模型结果”文件中,注意不要修改格式,单独上传到竞赛平台。

4.png

问题 2:在门店模式中,车辆在被“买手”收车以后,会进入门店进行售卖,车辆能否成功交易,除了取决于销售的谈判技巧,更重要 的是车辆本身是否受消费者青睐,价格是否公道。假设你们是门店的 定价师,请你们结合附件 4“门店交易训练数据”对车辆的成交周期(从车辆上架到成交的时间长度,单位:天)进行分析,挖掘影响车辆成 交周期的关键因素。假如需要加快门店在库车辆的销售速度,你们可 以结合这些关键因素采取哪些行之有效的手段,并进一步说明这些手 段的适用条件和预期效果。

问题 3:依据给出的样本数据集,你们觉得还有哪些问题值得研究,并给出你们的思路?

将问题 1、2、3 的解决过程写成一篇论文,明确你们的思路、模型、方法和结果。

1.2 复赛题目

题目
问题一:在初赛问题 2 的基础上,如果需要你们对车辆的成交周期进行准确预估,你们会采取什么方式建模?请你们使用附件 4“门店交易训练数据”构建交易周期预测模型,并对附件 5“门店交易验证数据”进行预测,并将预测结果保存在附件 6“门店交易模型结果”文件中,注意不要修改格式。其中附件 5“门店交易验证数据”只包括附件 4“门店交易训练数据”前 1 至 4 个字段。附件 5 的所有 carid 等相关信息都包含在附件2“估价验证数据”中。

问题二:车辆在门店售卖过程中,除了要对在库车辆未来成交周期准确预测,更需要对库存(假设门店在评估周期内场地和工作人员情况保持不变)进行有效管理,以保障在成本(车辆有资金占用成本,停车位占用成本)最小化的情况下,最大化门店的销售利润。车辆的价格是影响车辆成交非常重要的因素,门店在做库存管理时,需要根据在库车辆情况、新收车辆情况,对车辆进行销售定价或调价,一方面使得热销车辆以更合适的价格成交,保全门店利润,同时也要对滞销车辆进行降价促销,以避免更大的损失,基于此,假设你们是门店的店长,你们能决策的是何时对某个车辆是否进行调价,以及调整多大幅度,以保障门店的经营目标(最小化成本的情况下,最大化门店毛利润)达成,这里不考虑员工的人力成本等成本。请你们自己抽象问题的数学模型描述,构建门店经营模型,并给出模型的求解思路和算法步骤,这里假设经营目标一个月评估一次。

根据问题 1、2 的解答完善初赛论文,明确你们的思路、模型、方法和结果。

2 思路总结

2.1 初赛

针对问题一: 为了保证数据质量,首先需要对数据进行初步探索,包括查看数据分布、缺失比例、异常值,通过数据预处理,筛选出训练集和测试集分布差异较大的数据,并且排除缺失比例大于90%的特征,其中价格存在偏离较大的异常样本值,进行剔除,对缺失的离散特征样本进行众数填充。其次通过特征工程,对类别变量进行有序编码,对时间变量提取时序特征以及合理的构造交叉特征等工作,最后建立机器学习模型,并且使用五折交叉验证防止模型单次划分过拟合,通过对比五种模型,其中XGBoostCatBoostLightGBM表现较好,Accuracy精度能达到**86%**以上,因此利用该三种模型的结果采用加权平均进行融合,提高模型精度。

针对问题二: 第一小问需要挖掘影响成交周期的关键因素,首先对数据集进行预处理,将最后一次降价时间作为计算成交周期的开始时间,然后根据成交时间与上架时间的差值计算出交易周期。其次建立车辆的原始属性特征,不包括匿名特征,以及构造降价次数和降价幅度两个特征。通过斯皮尔曼相关性筛选出与交易周期相关的12个关键因素,其中可人为可调整的有车辆所在城市、展销年份、降价次数和价格四个因素。第二小问,根据影响交易周期的关键因素,设计加快销售单定价策略。我们提出一个基于聚类的多元回归定价策略。首先,根据交易周期将数据集划分为第一周售出、第二周之后售出和没卖出三种,只对第一周销售出的数据进行建模。其次,利用Kmeans++聚类 算法将第一种数据集分为三类,对每一类拟合一个多元回归方程。使用SPSS软件回归分析求出回归系数、相关系数R方、P值、估计误差方差S2和VIF值,判别出回归方程的合理性,最后,通过P值影响价格的显著性和VIF值去除共线性自变量,确定回归方程的系数。此外,我们根据其他三个影响交易周期的关键因素,提出另外三个可加快销售的方案。

针对问题三: 我们根据已有数据集,研究了用户的消费属性,首先分析出热销车辆和滞销车辆的共性,分析得出二手车热销车辆的共同特点主要是品牌方面、外形和内部损耗情况等方面。其次根据热销车辆和滞销车辆两者差异,提出可加快销售的建议。第一,可以通过合法改变车辆配置,包括外形特征,内部结构等属性,迎合市场需求。第二,根据市场行情制定合适的价格。

2.2 复赛

针对问题一: 本文同时建立了全连接神经网络和五种机器学习的交易周期回归预测模型进行对比分析。首先计算每个样本的交易周期,其次构造了降价次数和降价幅度两个特征,最后对上架时间、更新时间进行提取年月日特征,作为数据预处理后的数据集。以平均绝对误差MAE作为评价指标,通过对比,全连接神经网络回归模型MAE0.1左右,机器学习回归模型MAE0.9左右。最后选择表现较好的神经网络作为预测模型,预测附件5并输出保存为附件6。

针对问题二: 本文建立了一个销售利润最大化的非线性规划模型。首先将根据问题一的模型预测车辆样本的交易周期,按照预测的交易周期分为热销车和滞销车,并分别统计每类车的库存量,为两类车建立一个最大化利润为目标值的目标函数,并以存储成本、资金占用成本、车辆进价、降价幅度、降价次数、库存量以及交易周期之间的关系作为约束条件。约束条件包括存储量与交易周期的关系方程、销售收入与车辆售价的关系方程、库存成本与交易周期的关系方程、资金占用成本与车辆进价的关系方程以及交易周期的时间。解出的值是在最大利润的情况下,每一类车降价的次数和降价的幅度百分比。每辆车总的降价幅度为降价次数、单次降价幅度百分比与上架价格的乘积。每次降价时间为30天除以降价次数再加上车辆上架时间。最后用附件1和附件4的数据集进行仿真测试模型,并以改进的粒子群最优化算法进行求解,该模型相比较于原始数据集的销售策略提高了**6.63%**的销售利润,验证了该门店经营模型的可行性。

3 结束语

(1)打比赛,队友的选择非常重要。我弱项是论文排版,我主要负责数学建模和代码实现,我的另外两个队友,小明擅长作图和论文排版,小潘擅长代码实现、数学建模、写作。拿到赛题后,我们先各自看2个小时,再上腾讯会议进行讨论分析思路方案,并安排各自的任务,特别是要去搜集相关的赛题资料和论文,设定一个deadline,查找资料后再讨论。一般第一次讨论结束后,我们立马就可以做完数据分析,然后再第二次讨论的时候,就能出个大概的方向,并找到能参考的资料。在第三次讨论结束后,接下来就是我和小潘写开始建模,并写代码进行实现,并告知小明用的什么模型,小明开始写论文初稿,他会先搞一个模板和论文框架,我来调整论文的写作框架,然后他找到我用的模型的基本理论、论文的背景插入到论文中。不停的反复迭代,初期我会用python作数据草图。最后代码实现写完后,我们开始三个人来写论文。首先用origin重新绘制数据图,开始用Visio绘制流程图,做数据表格插入到论文中,完善数学模型的部分,先写结论,再浓缩结论写摘要,插入参考文献。最后进行论文的排版以及图片中字体的精调,一般会用到PS。完成整体排版后,生成PDF,共享屏幕三个人同时浏览检查错误,然后无误后提交。

(2)用到工具:VScode写python代码、WPS编辑论文排版、Typora写作、Origin(WIndows)和Scidavis(Mac OS)绘制数据图、Visio绘制流程图、Photoshop 精修图片、SPSS对应分析和多元线性回归分析 、MATLAB跑一些算法、Mathtype和Axmath编辑公式、语雀知识库文档团队协作。

(3)赛题完整的方案详细介绍只有在论文中才能讲清楚,请下载完整论文查看

6 论文展示

(1)初赛
5.png

(2)复赛
6.png

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
5月前
|
消息中间件 监控 数据可视化
大数据-79 Kafka 集群模式 集群监控方案 JavaAPI获取集群指标 可视化监控集群方案: jconsole、Kafka Eagle
大数据-79 Kafka 集群模式 集群监控方案 JavaAPI获取集群指标 可视化监控集群方案: jconsole、Kafka Eagle
269 2
|
14天前
|
机器学习/深度学习 运维 算法
大数据基础工程技术团队4篇论文入选ICLR,ICDE,WWW
大数据基础工程技术团队4篇论文入选ICLR,ICDE,WWW
|
5月前
|
数据采集 数据可视化 大数据
大数据体系知识学习(三):数据清洗_箱线图的概念以及代码实现
这篇文章介绍了如何使用Python中的matplotlib和numpy库来创建箱线图,以检测和处理数据集中的异常值。
110 1
大数据体系知识学习(三):数据清洗_箱线图的概念以及代码实现
|
4月前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
4月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
5月前
|
存储 缓存 分布式计算
大数据-89 Spark 集群 RDD 编程-高阶 编写代码、RDD依赖关系、RDD持久化/缓存
大数据-89 Spark 集群 RDD 编程-高阶 编写代码、RDD依赖关系、RDD持久化/缓存
79 4
|
5月前
|
消息中间件 存储 Java
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
118 3
|
5月前
|
SQL 分布式计算 大数据
大数据-108 Flink 快速应用案例 重回Hello WordCount!方案1批数据 方案2流数据(一)
大数据-108 Flink 快速应用案例 重回Hello WordCount!方案1批数据 方案2流数据(一)
91 0
|
5月前
|
大数据 流计算
大数据-108 Flink 快速应用案例 重回Hello WordCount!方案1批数据 方案2流数据(二)
大数据-108 Flink 快速应用案例 重回Hello WordCount!方案1批数据 方案2流数据(二)
80 0
|
5月前
|
消息中间件 分布式计算 Kafka
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
90 0