一、探索性数据分析
对部分数据进行分析,另外获取每个类别特征的点击分布情况判断特征效果,看分布可以有一个很好的初步验证作用。
一)、理解数据:
1. 数据概况:变量描述表(名称、五数统计、outliner、缺失值)
2. 数据分布:核心变量分布图(分类变量取值情况,是否正太分布,是否多峰值,出现异常可深挖)
二)、理解业务:
1. 啤酒销量的影响因素:自身因素(品牌、价格、库存)、外部因素(人口分布、经济水平)
三)、数据清洗:
1. 修改列名
2. 缺失值、离群值、重复值
3. 数据类型处理
四)、数据分析:
1. 关联性分析:相关矩阵
2. 组合分析:各品牌的销量(热度品牌)、时间与销量关系(购买高峰期)、各产品的销量(热度产品)、各品牌SKU数、品牌总销量与总销售额、客单价、消费趋势等(PS. 这部分要根据数据概况与关系矩阵进行调整)
二、数据预处理(基本思路扩大可用的特征,尽可能添加有用信息、进行更细粒度的刻画)
1. 时间数据切分(starttime)
2. 对region、City进行,DictVectorizer 从字典类型加载特征
https://sklearn.apachecn.org/docs/master/39.html
三、特征工程
特征构造
1. 基础特征:原始特征(已经给的那些特征)+外部特征(温度)
2. 特征编码:
one-hot encode:讲类别变量转换成稀疏矩阵,但是在决策树中慎用,且要注意虚拟变量陷阱即变量间不独立,存在多重共线性,解决办法是删除一个虚拟变量或删除one-hot稀疏矩阵中的一列。(虚拟变量陷阱:https://www.algosome.com/articles/dummy-variable-trap-regression.html)
target encode:由于啤酒销量呈现一定的季节特征,将月度数据进行目标编码,这样可以保证月度数据包含销量的季节特点。其出发点是用概率P(y=yi|x=xi)代替属性值x, 其中x表示属性值,y该属性下的预测值的均值。
3. 统计特征(count、ratio、mean、nunique等)
可构造销量的相比于上月的增长率。
产品增长率、流失率、回购率
4. 聚合统计特征
特征选择:选取恰当的特征选择方法(卡方检验、特征重要性等)选取重要的特征
四、模型选择:
1. 问题描述:根据2016年1月到2019年11月黑龙江、吉林两省的历史销售数据,产品主数据、商务计划数据和外部数据,预测2020年1月两省各产品的销量。
2. 问题定义:产品销量为连续型变量,所以可以将其抽象为回归预测问题。
3. 模型选择:
梯度提升决策树(GBDT)
DT-Decision Tree决策树,GB是Gradient Boosting,是一种学习策略,GBDT的含义就是用Gradient Boosting的策略训练出来的DT模型。模型的结果是一组回归分类树组合(CART Tree Ensemble): 。其中 学习的是之前 j - 1棵树预测结果的残差,这种思想就像准备考试前的复习,先做一遍习题册,然后把做错的题目挑出来,在做一次,然后把做错的题目挑出来在做一次,经过反复多轮训练,取得最好的成绩。
而模型最后的输出,是一个样本在各个树中输出的结果的和:
回归决策树算法(Decision Tree):决策树可以认为是 if-then 规则的集合,易于理解,可解释性强,预测速度快。同时,决策树算法相比于其他的算法需要更少的特征工程,比如可以不用做特征标准化,可以很好的处理字段缺失的数据,也可以不用关心特征间是否相互依赖等。决策树能够自动组合多个特征。
不过,单独使用决策树算法时,有容易过拟合缺点。所以通过一些方法,抑制决策树的复杂性,降低单颗决策树的拟合能力,比如限制树的最大深度、限制叶子节点的最少样本数量、限制节点分裂时的最少样本数量、吸收 bagging 的思想对训练样本采样(subsample),在学习单颗决策树时只使用一部分训练样本、借鉴随机森林的思路在学习单颗决策树时只采样一部分特征、在目标函数中添加正则项惩罚复杂的树结构等。
同时,再通过梯度提升的方法集成多个决策树,第一棵树建立的时候使用的是原始数据,而后每一棵树建立使用的是前n-1次的残差来拟合弱学习器。最终能够很好的解决过拟合的问题。
由此可见,梯度提升方法和决策树学习算法可以互相取长补短,是一对完美的搭档。
References:
1. 数据分析实战项目整理(更新ing) - 一两赘肉无的文章 - 知乎
https://zhuanlan.zhihu.com/p/136975705
2. 异常值处理:https://mp.weixin.qq.com/s/x3CcddEkyKrI-qhBU_pdgw
网友评论