肇州量化投资虚拟社区

基于随机森林算法的商品销售预测

产品企划部 2019-02-09 10:20:50

提起销售预测大家都不会陌生,尤其商家更是想尽办法想预测出自己商品未来的销售情况,以便能够提前做出合理的备货策略在保障销售最大化的同也能将剩货风险降到最低。正好最近几天看到随机森林算法可以用来做预测,就在给大家简单介绍一下随机森林算法在销售预测上的应用

随机森林算法是机器学习、计算机视觉等领域内应用较为广泛的一个算法、它不仅可以用来做分类(包括二分类和多分类),也可用来做回归预测,也可以作为一种数据降维的手段。

1. 随机森林定义

随机森林是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。

2. 随机森林基本原理

1)决策树

 

说随机森林前先介绍一下决策树决策树是一个树结构可以是二叉树或非二叉树。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

2)随机森林


随机森林通过自助法重采样技术,从原始训练样本集N中有放回地重复随机抽取k个样本生成新的训练样本集合,然后根据自助样本集生成k个分类树组成随机森林,新数据的分类结果按分类树投票多少形成的分数而定。其实质是对决策树算法的一种改进,将多个决策树合并在一起,每棵树的建立依赖于一个独立抽取的样品,森林中的每棵树具有相同的分布,分类误差取决于每一棵树的分类能力和它们之间的相关性。特征选择采用随机的方法去分裂每一个节点,然后比较不同情况下产生的误差。能够检测到的内在估计误差、分类能力和相关性决定选择特征的数目。单棵树的分类能力可能很小,但在随机产生大量的决策树后,一个测试样品可以通过每一棵树的分类结果经统计后选择最可能的分类。

3. 随机森林优点

随机森林是一个最近比较火的算法,它有很多的优点:

a. 在数据集上表现良好,两个随机性的引入,使得随机森林不容易陷入过拟合

b. 在当前的很多数据集上,相对其他算法有着很大的优势,两个随机性的引入,使得随机森林具有很好的抗噪声能力

c. 它能够处理很高维度的数据,并且不用做特征选择,对数据集的适应能力强:既能处理离散型数据,也能处理连续型数据,数据集无需规范化

d. 可生成一个Proximities=(pij)矩阵,用于度量样本之间的相似性: pij=aij/N, aij表示样本i和j出现在随机森林中同一个叶子结点的次数,N随机森林中树的颗数

e. 在创建随机森林的时候,对generlization error使用的是无偏估计

f. 训练速度快,可以得到变量重要性排序

g. 在训练过程中,能够检测到feature间的互相影响

h. 容易做成并行化方法

4. 随机森林实现过程

随机森林中的每一棵分类树为二叉树,其生成遵循自顶向下的递归分裂原则,即从根节点开始依次对训练集进行划分;在二叉树中,根节点包含全部训练数据, 按照节点纯度最小原则,分裂为左节点和右节点,它们分别包含训练数据的一个子集,按照同样的规则节点继续分裂,直到满足分支停止规则而停止生长。若节点n上的分类数据全部来自于同一类别,则此节点的纯度I(n)=0,纯度度量方法是Gini准则,即假设P(Xj)是节点n上属于Xj 类样本个数占训练。

5. 具体实现过程如下:

1)原始训练集为N,应用bootstrap法有放回地随机抽取k个新的自助样本集,并由此构建k棵分类树,每次未被抽到的样本组成了k个袋外数据;

2)设有mall个变量,则在每一棵树的每个节点处随机抽取mtry个变量(mtry n mall),然后在mtry中选择一个最具有分类能力的变量,变量分类的阈值通过检查每一个分类点确定;

3)每棵树最大限度地生长, 不做任何修剪;

4)将生成的多棵分类树组成随机森林,用随机森林分类器对新的数据进行判别与分类,分类结果按树分类器的投票多少而定。

实际应用过程:


(1) 去年10月份商品效果中的各个指标数据结合对应的款式双十一的销量整理成基础数据。

(2) 基础数据进行处理,商品类目做Onehot编码

(3) 通过计算单款销件的中位数,按照中位数近似的整数划分销件类型作为分类的基础。

(4) 根据HNB中商品效果的各个指标通过测试指标与销件的相关性,按相关性大小确定核心指标(相关性小于0.4的指标去掉)。


(5) 通过相关性测试最终确定UV、PV、收藏、支付用户数核心指标,去年10月份核心指标数据和对应双十一的销件作为训练集进行模型训练。

(6) 训练过程中不断优化参数和编码方式,正确较高后用训练集的模型输入今年10月份的核心指标数据预测双十一销量。 


目前模型准确度较高,但是模型仍然需要优化:

(1) 需要加入库存等变量因素,测是否对销售会产生较大影响。

(2) 服装类目区分明显,不同类目同一时段销售表不同,不同季节销售表现也不同,需要分类目、分季节测试是否优化提升空间

(3) 由于活动销售数据均表现较高,数据充分,在日销模式下是否也能达到同样的效果有待验证。

(4) 销件分段间隔较大,在实际应用中对于返单的参考价值降低将分段间隔缩小是否同样能保证较高的准确需要后期测试。

6. 样本数据如下:


Copyright © 肇州量化投资虚拟社区@2017