基于机器学习的车辆价格预测研究

2023-01-14 12:34李博涵LIBohan
价值工程 2023年1期
关键词:向量森林变量

李博涵LI Bo-han

(重庆交通大学机电与车辆工程学院,重庆 400074)

0 引言

车辆价格的涨跌一直是当下汽车行业的热议话题,尤其是在新能源汽车出现后,对传统汽车市场更是有不小影响。对于买家来说,很多买家清楚自己需要什么性能的车,但对于这种理想车型的价格并没有一个很好的评估标准。对于卖家来说,对某些同级别车辆在市场中的价格没有一个很好的参照,形成了定价困难的局面。也有许多专家和平台会对车辆价格进行人工预测,但结果不够客观准确。本文基于机器学习以及数据挖掘技术,利用采集到的车辆特征数据,对车辆进行真实合理的价格预测,该方法成本低廉且效率较高,同时,预测结果也能达到较高的精度。

1 数据描述及预处理

文章的数据来自于开放数据平台Kaggle上的“汽车及其价格数据”,该数据共有6020条记录,13个特征,其中包括车辆名称,发动机排量,里程等车辆基本属性,整个的分析和建模过程都是在python3.9环境中进行,文章采用的编译器是pycharm。数据的特征汇总如表1所示。

表1 车辆特征汇总表

其中,将车辆的Price设置为模型的标签,Year,Kilometers_Driven,Mileage,Engine,Power,Seats属 于 数 字型特征,但其中一部分数据包含有字符串在内,所以需要先将数字与字符串分离,对Year这列特征,调用datetime工具包,用当前时间减去汽车生产的年份,作为新的特征代 替 这 列。Name,Location,Fuel,Type,Transmission,Owner_Type属于分类列,考虑到汽车的价格可能和制造商有关,先将Name这一列通过空格分隔,提取出制造商,将汽车制造商单独作为一个分类特征,并且删除原先的Name列。分类特征在使用之前应将其转换为虚拟变量,文章将用特征编码的方式对分类列进行处理,考虑到New_Price中缺失值过多,且已经有Price作为标签,直接删除这列无用特征。

2 相关性分析及可视化

seaborn是一个基于matplotlib开发的一个第三方可视化库,其中包括的一个函数seaborn.heatmap()热力图,可以用于展示数据中几组特征的相关系数矩阵,其中相关性的强弱可以用皮尔逊相关系数来衡量,用两个变量之间的协方差和标准差的商来表示皮尔逊相关系数,公式如下式所示:

公式中,ρ表示相关系数,cov表示协方差,E表示数学期望。该公式的作用就是表现出两个变量之间的线性关系强弱,即相关系数越接近1,则说明两个变量之间相关性越强,越接近-1,则说明两个变量之间负相关性越强,越接近0,则说明两个变量基本不具有线性相关性[1]。热力图将所有数字变量之间的相关性汇总展示,通过热力图可以直观地看到所给数值之间的关系强弱,从而判断哪些指标更值得去研究,为训练模型选择特征作为变量做好准备。车辆不同特征的相关性热力图如图1所示。

由图1可以看出Engine,Power和Price的正相关性最大,结合实际情况看,发动机排量和马力往往也是人们评价一辆车性能好坏的重要指标,Mileage和Price的负相关性最大,相对来说大排量大马力的车辆油耗水平也会很高,每升油能够行驶的公里数也是一个油耗指标,所以一般情况下,每升油能够行驶的公里数越少,油耗越高,车辆的价格也会越高。Kilometers_Driven和Seats对于车辆价格几乎没有太大影响,但考虑到数据中也包含有二手车信息,所以先保留这两个特征。

图1 车辆特征的相关性热力图

3 模型构建及预测

车辆价格预测属于回归类型的模型,文章采用线性回归,支持向量回归,xgboost,随机森林共四类机器学习模型对车辆价格进行预测,线性回归是回归算法中最基础的一种算法,通过对数据中的不同特征添加权重,各类特征与相对应的权重相乘,在最后加上一个偏置值,通过损失函数来判断预测值和真实值的拟合程度,数据集共有多个特征,所以用到的是多元线性回归模型[2]。主要公式如下式所示:

其中βn是权重,b为偏置值。

支持向量回归属于支持向量机用于回归算法的分支,支持向量机主要用于解决分类问题,而支持向量回归用于解决分类问题。支持向量机需要做的一个目标任务找到一条最佳拟合线,使靠超平面最近的样本点之间的间隔最大,而支持向量回归则是使靠超平面最远的样本点之间的间隔最大,最佳拟合线是点数最多的超平面。其优点是在样本量不是海量数据的时候,预测准确率高,泛化能力强,带松弛变量的SVR的目标函数如下式所示:

Xgboost是一个集成类算法,基于提升算法做了改进且和决策树有一定联系,针对传统GBDT算法做了很多细节的提高,包括损失函数、正则化、切分点查找算法优化、稀疏感知算法、并行化算法设计,其基本原理相当于在子树的基础上层层添加新的树,成为新的模型。假设有t轮的预测模型,即t颗树,那么第t+1轮的模型如下式所示:

随机森林也是一个集成类算法,相当于将多个决策树集成到一起,而决策树本身就是一个算法,它将需要分析的特征通过一个筛选流程,有放回的随机从训练集中选取样本,同时也随机选取数据的部分特征,每棵决策树使用的样本和特征都不一样,训练出来的结果也不一样,随机森林把不同的决策树结合,其结果是由这个随机森林里面的每一棵树共同决定,随机森林的训练效率高,更适合高维数据的预测[4]。

文章筛选的评价指标主要有四种,平均绝对误差(MAE)、均方根误差(RMSE)平均百分比误差(MAPE)和拟合优度(R2),通过对比以上四个模型的这四种指标,选出预测结果较为准确的模型[5]。4个模型在测试集上表现的性能指标如表2所示。

表2 四个模型的四种指标

从表2可以看出随机森林的的四项指标是最好的,所以选择随机森林作为最后的预测模型,n_estimators和max_depth是随机森林算法中两大最重要的参数,n_estimators代表的含义是森林中树木的数量,即基评估器的数量。这个参数对随机森林模型的精确性影响是单调的,n_estimators越大,模型的预测结果也会变得越精确。但是相应的,不论什么模型都有自己的决策边界,在n_estimators达到一定的程度之后,该模型的精确性不会再上升很多或开始波动,并且,n_estimators越大,需要的计算量和内存也越大,训练的时间也会越来越长。对于这个参数,需要平衡两头去调整,max_depth表示树的最大深度[3]。最初设置的n_estimators=200,max_depth=8。但为了确保可以找到最佳结果,将RMSE值设置为循环目标参数,为了找出RMSE的最小值,通过网格搜索遍历,n_estimators的取值范围设置为从10到500,max_depth的取值范围设置为1到16,图2为遍历的结果。

图2 网格搜索调参图

通过图2可以知道,在第59次循环时,RMSE达到最小值3.472,通过先前设置的循环参数简单计算,在n_estimators为100,max_depth为9,可以使得RMSE达到该值,重新设定随机森林的两个参数为遍历后得到的这两个值,将n_estimators设置为100,max_depth设置为9,再次训练模型,得到范围内最好的结果,将新的结果与先前最对比,如表3所示。

表3 优化前后结果对比

通过表3可以看出,通过网格搜索调整参数确实让四个指标都有一定能够程度的优化,可以认为n_estimators为100,max_depth为9是随机森林模型最好的参数,能够让模型的预测达到最佳。

下面通过该模型对数据进行训练,通过折线图可视化,对比真实值和预测值之间的误差,如图3所示。

图3 预测值和真实值对比图

通过折线图可以更加直观地看出,预测值和真实值的走势大致是相同的,说明该预测模型有一定参考价值。

4 结语

文章首先观察数据类型,对数据进行预处理分析变量相关性等操作,随后用四种机器学习模型对处理好的数据进行训练,从四个模型的四个指标判断模型优劣,选择效果最好的模型进行调参,找到范围内最合适的参数,改进模型,最终使得均方根误差仅为3.472,平均百分比误差仅为0.21%,说明文章建立的模型具有较高的准确性,文章的结果可以给有车辆需求的买家提供购买参照,为车辆交易市场提供一些进价和出价的引导,相关部门可以根据车辆某些重要特征的数值,对车辆的定价进行更合理的评估,同时也能为二手车市场提供价格参考。

猜你喜欢
向量森林变量
向量的分解
抓住不变量解题
聚焦“向量与三角”创新题
也谈分离变量
哈Q森林
哈Q森林
哈Q森林
向量垂直在解析几何中的应用
哈Q森林
向量五种“变身” 玩转圆锥曲线