赞
踩
在机器学习领域,价格预测是一个经典而又充满挑战的问题。价格预测问题兼具时序性和空间性的特点,同时伴随着海量结构化数据。
传统解决方案多是基于业务逻辑和经验,建立多变量因子模型,对单类别产品进行特定场景下的预测和分析。而随着人工智能的不断发展,基于海量数据,结合业务逻辑,采用数据挖掘方法和机器学习模型,可以更高效和精准的进行价格预测。
对于企业而言,通过全渠道、全范围的数据挖掘结合机器学习算法,分析出价格波动趋势以及更准确进行价格、需求预测,在优化产品的定价策略、渠道管理、智能营销等方面能有效为企业提供智能的决策辅助。
下面让我们将价格预测问题进行分解,来看看如何通过机器学习一步步解决价格预测问题。
1
1.数据分析
在真实业务场景下,数据往往是多个系统和途径整合而来,一个全面且彻底的探索性数据分析(EDA)即是解决问题的开始,也深入理解问题和理解数据的基础。
探索性数据分析目的是最大化对数据的理解,分析数据在统计规律上的表现,结合统计学的图形以各种形式展现出来。通过全面的数据分析和挖掘可以实现:判断数据质量,分析数据的统计规律,发现潜在的趋势结构,提取重要的变量等功能,最终可通过数据可视化的方法,清晰的展示在我们面前。
对于价格预测问题,首先便可进行对目标价格的分析,探索价格分布和变化趋势,了解目标变量的基本特点和统计参数。
下图示例展示了某产品价格分布特征,峰度和偏度值,价格、成交量趋势性变化和价格的地理区域性分布特征。
除了对目标变量价格的分析以外,对于每一维度数据的分析和挖掘也至关重要。数据按类型一般可分为两种:离散型和连续型。离散型数据即类别型数据,如性别、民族、教育程度等。对于连续型数据,一般是在值域里面连续取值,这种变量是有序的,如年纪。
对于连续型数据,可提取数据统计特征进行分析,常用统计量包括:均值,中位数,方差,分布,分位数;对于离散型的类别特征,可进行分组信息分析和提取。同时可对所有数据进行基于价格的相关性分析和特征之间的相关性分析。下图即类别特征对价格的相关性和类别间相关性分析结果。
1
2.特征工程
有了对数据的深入理解,便可展开对数据中特征的处理,尽可能的从原始数据中获取更多的信息,同时结合数据领域的相关知识来构建高阶特征,使机器学习算法达到最佳性能。
特征工程就是一个把原始数据转变成特征的过程,这些特征可以很好的描述这些数据,并且利用它们建立的模型在未知数据上的性能可以达到最优,即获得最大的泛化能力。
首先需进行原始数据的预处理,如异常数据样本清洗,缺失值分析和数据的标准化和归一化。我们在实际项目中获得的数据往往存在异常数据,若不筛选出这些异常数据很可能让模型预测有较大的偏差。
对于异常值处理,可采用简单的统计筛选或通过聚类和异常检测等算法进行筛选。
对于缺失值,首先可判断缺失值占全体数据的比例后选择是否进行填充,填充时一是选择所有有该特征值的样本取平均值,来填充缺失值,或是取中位数填充缺失值。如果是离散值,则一般会选择所有有该特征值的样本中类别值的众数来填充缺失值。
最后可进行数据的标准化处理如z-score标准化,max-min标准化。这样数据经过预处理后可将数据转换为完整的可用的数据。
为了提高数据对样本的信息表达能力,往往需要在原始特征的基础上进行特征表达的转化。比如特殊的特征处理,价格预测问题中数据往往带有时间特征,每个样本都标记有唯一时间戳,对于时间特征处理可使用连续的时间差值法,即计算出所有样本的时间到某一个固定时间之间的数值差距,从而将时间特征转化为连续值。
或者根据时间所在的年月日星期,将一个时间特征转化为若干个离散特征;此外对于时间相关的其他特征,可依照时间点进行权重划分,即根据获取数据时间的新旧得到一个权重值,对于较长时间之前产生的样本设置较低的权重,对近期产生的样本设置一个较大的权重。
对于离散特征,可根据特征是否存在内在顺序和类别的数量进行特征编码,常用的方法有label encoding,one hot encoding,target encoding 等等。
但对于维度特别大的离散型特征,如价格预测问题中往往会遇到用户ID类特征,如果要使用one hot encoding编码,则维度会爆炸,可借鉴深度学习中的embedding方法,将高维特征嵌入到低维空间,对于每个要嵌入的特征,训练出一组低维度的特征向量,进而参与模型构建中。
在数据集原始特征的基础上,我们还可以根据需要寻找到更多的高级特征,高级特征的建立往往是提升模型准确率的重要步骤。首先可对原始特征进行数学运算组合,比如利用商品价格和商品销量构建销售额特征;通过对产品类别聚合获得基于类别的统计特征,亦或是利用时间序列特性建立延迟和滑窗,构建某一时间段特征的高阶统计特征。
1
3.模型选择和训练
对于高度结构化的数据,如价格预测问题,预测模型通常可采用基于梯度提升的决策树模型(GBDT),如XGBoost、LightGBM。
GBDT模型通过提升(boosting)方法训练一组基分类器,其基本思想是根据当前模型损失函数的负梯度信息来训练新加入的弱分类器,然后将训练好的弱分类器以累加的形式结合到现有模型中。这个过程中不断的减小损失函数,使得模型偏差不断降低。
在经典GBDT模型的基础上,XGBoost进行了诸多改进,包括损失函数计算中加入了二阶泰勒展开,加入正则项,借鉴随机森林的列采样方法,支持并行计算等等,可看作是GBDT方法在工程领域的良好实践。
随后的 LightGBM 进一步优化了通过leaf-wise分裂方法进行决策树的生成,通过基于直方图算法寻找最优特征分割点,能够更高效和快速的处理大量数据。在模型训练过程中,可通过网格化参数搜索的手段,自动寻找最优参数组合,进行模型参数调优。网格搜索适用于超参数较少的情况下对参数进行寻优,实际使用中可固定一部分参数而只对影响较大的关键参数进行寻优,网格搜索算法使用每组超参数训练模型并挑选验证集误差最小的超参数组合。
在单模型训练完成后还可以通过模型融合(stacking/blending)方法,构建高维组合模型,stacking是一种分层模型。第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为特征加入训练集进行再训练,从而得到完整的stacking模型。
除了机器学习方法,可将基于统计学的时序分析作为价格预测的一种补充。利用ARMA/ARIMA等统计学模型,捕捉价格基于时间序列上的趋势性、周期性和节假日等特性,补充到机器学习模型中,对预测结果进行微调。下图即通过对价格-时间序列趋势、周期、和星期特征进行建模,得到未来时间点上的价格预测。
以上数据分析和建模构建方法均可通过机器学习平台建立管道化工作流,建立从准备数据到训练模型到最终部署上线的全流程自动化模式,可简洁、高效、灵活的完成基于机器学习的价格预测流程。
点击查看往期回顾
品览Pinlan是AI物品识别专家,我们的产品结合了AI的认知识别能力,Cloud的强劲算力,IoT的边缘支持。我们的使命是让物品识别能力无处不在,赋能星球上的每一个企业与个体。
在AI应用领域,团队服务过顶新集团、欣和集团、上汽集团、自如等客户。我们同全球顶级合作伙伴微软,企业微信,百度AI大脑等一起为企业客户提供AI巡店通,AI亿览通,小览机器人以及品识-AI商品识别平台产品服务。
↓ 扫一扫添加小览微信 马上开聊↓
即可申请免费试用
品览AI巡店通、AI亿览通产品方案
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。