天池二手车价格预测-建模和调参

4.建模和调参

4.1 学习目标

  • 了解常用的机器学习模型,并掌握机器学习模型的建模与调参模型

4.2 内容介绍

  1. 线性回归模型:
  • 线性回归对于特征的要求
  • 处理长尾分布
  • 理解线性回归模型
  1. 模型性能验证:
  • 评价函数与目标函数
  • 交叉验证方法
  • 留一验证方法
  • 针对时间序列问题的验证
  • 绘制学习率曲线
  • 绘制验证曲线
  1. 嵌入式特征选择:
  • Lasso回归
  • Ridge回归
  • 决策树
  1. 模型对比:
  • 常用线性模型
  • 常用非线性模型
  1. 模型调参:
  • 贪心调参方法
  • 网格调参方法
  • 贝叶斯调参方法

4.3 代码示例

4.3.1 读取数据

首先通过更改数据的类型,以达到降低数据占用内存的目的。
在这里插入图片描述

4.3.2 线性回归&五折交叉验证&模拟真实业务情况

首先筛选出连续性变量,即去除数据中的类别变量以及label。
在这里插入图片描述
然后去除数据中的空值以及将‘-’替换为0,重置索引,并创建训练集和label.
在这里插入图片描述

  1. 简单建模
    首先用线性回归对数据进行训练,然后绘制特征值与标签的散点图。
    在这里插入图片描述
    在这里插入图片描述
    发现数据的标签(price)呈现长尾分布,不利于我们的建模预测。原因是很多模型都假设数据误差项符合正态分布,而长尾分布的数据违背了这一假设。
    在这里插入图片描述
    对标签进行了 l o g ( x + 1 ) log(x+1) log(x+1) 变换,使标签贴近于正态分布。
    在这里插入图片描述
    再次进行可视化,发现预测结果与真实值较为接近,且未出现异常状况。
    在这里插入图片描述
  2. 五折交叉验证
  • 在使用训练集对参数进行训练的时候,经常会发现人们通常会将一整个训练集分为三个部分(比如mnist手写训练集)。一般分为:训练集(train_set),评估集(valid_set),测试集(test_set)这三个部分。这其实是为了保证训练效果而特意设置的。其中测试集很好理解,其实就是完全不参与训练的数据,仅仅用来观测测试效果的数据。而训练集和评估集则牵涉到下面的知识了。
  • 因为在实际的训练中,训练的结果对于训练集的拟合程度通常还是挺好的(初始条件敏感),但是对于训练集之外的数据的拟合程度通常就不那么令人满意了。因此我们通常并不会把所有的数据集都拿来训练,而是分出一部分来(这一部分不参加训练)对训练集生成的参数进行测试,相对客观的判断这些参数对训练集之外的数据的符合程度。这种思想就称为交叉验证(Cross Validation)。
  • 在这里插入图片描述
  1. 模拟真实业务情况
  • 但在事实上,由于我们并不具有预知未来的能力,五折交叉验证在某些与时间相关的数据集上反而反映了不真实的情况。通过2018年的二手车价格预测2017年的二手车价格,这显然是不合理的,因此我们还可以采用时间顺序对数据集进行分隔。在本例中,我们选用靠前时间的4/5样本当作训练集,靠后时间的1/5当作验证集,最终结果与五折交叉验证差距不大。
    在这里插入图片描述
  1. 绘制学习率曲线与验证曲线
    在这里插入图片描述

4.3.3 多种模型对比

  1. 线性模型&嵌入式特征选择
  • 在过滤式和包裹式特征选择方法中,特征选择过程与学习器训练过程有明显的分别。而嵌入式特征选择在学习器训练过程中自动地进行特征选择。嵌入式选择最常用的是L1正则化与L2正则化。在对线性回归模型加入两种正则化方法后,他们分别变成了岭回归与Lasso回归。
    在这里插入图片描述
  • L2正则化在拟合过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,专业一点的说法是(抗扰动能力强).
    **加粗样式**
  • L1正则化有助于生成一个稀疏权值矩阵,进而可以用于特征选择。如下图,我们发现power与userd_time特征非常重要。
    在这里插入图片描述
  1. 非线性模型
  • 除了线性模型以外,还有许多我们常用的非线性模型如下,选择了部分常用模型与线性模型进行效果比对。
    在这里插入图片描述

4.3.4 模型调参

在这里插入图片描述

  1. 贪心调参
  • 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它所做出的仅仅是在某种意义上的局部最优解。
  • 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性(即某个状态以后的过程不会影响以前的状态,只与当前状态有关。)
  • 所以,对所采用的贪心策略一定要仔细分析其是否满足无后效性。
    在这里插入图片描述
  1. 网格调参(Grid Search)
    -当算法模型效果不是很好时,可以通过该方法来调整参数,通过循环遍历,尝试每一种参数组合,返回最好的得分值的参数组合
  • 每个参数都能组合在一起,循环过程就像是在网格中遍历,所以叫网格搜索
    在这里插入图片描述
  1. 贝叶斯调参
  • 贝叶斯优化是一种用模型找到函数最小值方法,已经应用于机器学习问题中的超参数搜索,这种方法性能好,同时比随机搜索省时。
  • 贝叶斯优化通过基于目标函数的过去评估结果建立替代函数(概率模型),来找到最小化目标函数的值。贝叶斯方法与随机或网格搜索的不同之处在于,它在尝试下一组超参数时,会参考之前的评估结果,因此可以省去很多无用功。
  • 超参数的评估代价很大,因为它要求使用待评估的超参数训练一遍模型,而许多深度学习模型动则几个小时几天才能完成训练,并评估模型,因此耗费巨大。贝叶斯调参发使用不断更新的概率模型,通过推断过去的结果来“集中”有希望的超参数。
    在这里插入图片描述

总结:

  • 在本章中,我们完成了建模与调参的工作,并对我们的模型进行了验证。此外,我们还采用了一些基本方法来提高预测的精度,提升如下图所示。
    在这里插入图片描述
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值