机器学习在58二手车估价系统实际
作者头像
  • 李云
  • 2019-11-12 10:00:03 6

背景

近年来,随着国内二手车市场的交易量不断攀升,线上交易越来越受到二手车商和个人买家的关注。随着58二手车帖子量的大幅增加,迫切需要更加严格的线上发帖审核机制,以避免低价帖子吸引正常用户,从而影响市场秩序。因此,实现精准的车辆估价成为了一个重要的问题。58估车价是58集团自主研发的一款车型价格预测系统,旨在通过信息审核、提供透明的价格区间、车型保值率排行等多种业务场景,帮助用户更好地了解二手车的价值。此外,58估车价APP也为用户提供了便捷的扫车、识车、估价和撮合成交的服务。

估价系统总体架构

整个估价系统分为四个主要部分:

  1. 数据来源:系统收集的数据来自58集团自有数据、金融成交数据以及第三方合作平台的数据,涵盖不同场景下的买卖价格数据。这些数据经过车型匹配系统映射到58车型库,并定期同步到HDFS中。

  2. 数据处理:利用Spark进行车型数据的补全和业务去噪,生成标准化的训练数据。

  3. 模型训练:使用标准化数据进行算法去噪和特征处理,通过反复验证特征、超参数和模型的有效性,最终生成一个评估模型,并在线上数据中进行验证。

  4. 模型部署:将模型部署到58自研的RPC服务框架中,结合业务规则,提供稳定的估价服务。

数据处理

获取样本

为了训练模型,我们需要大量的准确样本。我们与其他平台合作,掌握了市场上大量的成交数据和展示数据。这些数据经过初步去噪和匹配车型库数据,进一步进行业务去噪处理,例如去除重复的帖子和过滤不合理的价格、里程和上牌时间等样本。

去噪与预处理

在处理样本的过程中,样本的准确性和波动性是一个挑战。原始样本的整体平滑度较差,需要经过多次去噪和预处理:

  1. 规则去噪:根据上牌时间和车型上市时间制定规则,过滤不符合逻辑的样本。

  2. 统计去噪:采用箱线图去噪,找出常规的保值率,忽略异常值以提升模型的准确性。

  3. 规则去重:根据样本的特点制定规则,例如对相同车型、里程和价格的样本进行去重。

  4. 重置成本排序:根据重置成本法得到估价,按照该估价对每个车型进行排序。

  5. 滤波:对排好序的每个车型,对原始的rate进行滤波,假设rate顺序应该与排序一致,滤波大小为s,以当前点为中心的s个点区域内,如果不是极值则跳过,是极值则取平均值。

  6. 调整顺序:根据重置成本法得到估价,按照该估价对每个车型进行排序。

样本特征处理

二手车的最大特点是“一车一况”,不同工况、地区、使用环境、运营性质甚至颜色都会影响车辆的价格。为了确定哪些特征会影响二手车的保值率,我们选择了车型相关配置参数、里程、车龄、上市时间等显著数据特征,并结合车型库的基础信息(如车型类别、国别、动力方式、变速箱等),组合出数十个特征的样本数据。

此外,我们还进行了以下特征处理:

  1. 车型映射:将车型映射到国别、价格、类别、动力方式等属性上,减少特征维度。

  2. 上市时间处理:将各车型的上市时间年龄经过离散化映射到5个区间。

  3. 配置属性二值化:对有无对应配置的属性进行二值化处理。

为了选择合适的特征,我们采用了信息增益率等方法,并考虑了过滤覆盖率低的特征和应用单个特征训练模型得到AUC值的方法。

模型训练

算法选择

估价任务是一个回归任务,目标是不断提升输入结果的准确性。常用的回归算法包括LR、随机森林、GBDT、XGBoost等。经过实际选择和训练评测,我们选择了基于决策树的XGBoost和LightGBM模型进行尝试。XGBoost具有二阶泰勒展开、正则项、缺失值处理和并行计算等优点。LightGBM针对XGBoost的一些痛点进行了优化,如减少内存和缓存占用、提高Cache命中率、采用带深度限制的Leaf-wise生长策略等。

模型调参

最后一步是训练调参,主要包括以下几个步骤:

  1. 选择较高的学习率:加快收敛速度。

  2. 决策树基本参数调参:调整树的深度、叶子数量等,避免过拟合。

  3. 正则化参数调参:调节L1和L2正则化参数,降低过拟合。

  4. 降低学习率,提高准确率:尝试调整n_estimators参数,平衡预测时间和准确率。

经过多次尝试,我们得到了一组较优的参数设置: python lgb_big_params = { 'learning_rate': 0.3, 'max_depth': 11, 'n_estimators': 300, 'boosting_type': 'gbdt', 'reg_lambda': 10., 'reg_alpha': 1., 'colsample_bytree': 0.8, 'num_leaves': 255, 'max_bin': 127, 'min_child_samples': 20 }

总结与规划

以上是对该模型特征选取、去噪和训练的整个流程。由于数据量的问题(如越老的车,市场占有量越小,越难以学习到特征)无法完全支撑所有情况,我们还尝试了模型融合、不同类型(如轿车、新能源等)车分成不同模型、不同车龄阶段分模型以及指导价区间分模型训练等方法,以完善线上预测的多种情况。现有的估价模型与市场上其他估价平台的效果对比显示,58估价模型整体效果最佳。

未来,我们将继续丰富样本量和特征维度,深入挖掘各种模型的潜力以及样本特征间的关系,持续提升估算的准确性,将58估车价打造成为二手车行业内准确度的标杆,并在语义和图像等深度学习方面发力,用技术持续为业务赋能。

关于作者

关鹏,58同城ABG资深研发工程师,负责58估车价项目及深度学习相关项目的实施与应用。

    本文来源:图灵汇
责任编辑: : 李云
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
估价二手车实际机器学习系统
    下一篇