python 时间序列分解 stl_一种基于时间序列分解的中标数量预测方法与流程

本发明涉及客户关系管理技术,尤其涉及一种基于时间序列分解的中标数量预测方法。

背景技术:

现今,第四次工业革命时代到来,信息技术极速发展,为了更好的管理好企业中的各项销售与服务提升企业竞争力,企业管理者通常会严格的要求销售人员认真填写客户关系管理系统(CRM)。CRM是一套利用互联网信息技术记录和管理销售人员与顾客在销售、营销和服务上的交互系统。通过将销售过程中的各项信息(包括:客户名称,项目级别,负责员工等)以规范的格式记录在案的形式方便管理者协调企业资源,吸引新客户,保留老客户以及将已有客户转为忠实客户,增加市场提升利润的目的。

因此对CRM中的数据进行数据挖掘与机器学习是非常有必要和价值的。

CRM是一套客户管理系统,在提升企业核心竞争力上具有重大意义,其实是对未来数据的预测更能为企业管理和决策提供重要参考。

一个季节性时间序列中会包含三部分,趋势部分,季节部分和无规则部分(余项/噪音)这三者之间的关系可以是想家或者是相乘。所以时间序列分解分为两种方法:

additive(加法):时间序列=周期性+趋势+噪音

Multiplicative(乘法):时间序列=周期性*趋势*噪音

第一步,提取趋势:

此步骤additive与multiplicative方法相同。

为了检测潜在趋势,可以使用“居中移动平均线”(centered moving average)来平滑时间序列。要执行分解,使用具有季节性确定大小的移动窗口至关重要。因此,要分解时间序列,需要知道季节性周期:每周,每月等。若是不能确定周期可使用傅立叶变换检测季节性。居中移动平均线是指取相临两个时间点数值的平均值将其放在两时间点的中间点。

第二步,去趋势:

Additive:时间序列-趋势

Multiplicative:时间序列/趋势

从时间序列中删除先前计算的趋势将导致新的时间序列明确暴露数据的周期性。

第三步,提取趋势,即平均季节性:

此步骤additive与multiplicative方法相同。

从趋势时间序列中,很容易计算平均季节性。我们将季节性加在一起并除以季节性时期。从技术上讲,为了将时间序列平均化,我们将时间序列输入矩阵。然后,我们转换矩阵,使每列包含相同时期(同一天,同月,同一季度等)的元素。最后,我们计算每列的平均值。

第四步,通过噪音验证分解的效果:

前面的步骤已经从原始时间序列中提取了主要特征数据,仅留下“随机”噪声。因此,若分解正确将得到杂乱无章的噪音数据。

Additive:噪音=时间序列-趋势-周期

Multiplicative:噪音=时间序列/趋势/周期

现在原时间序列数据已经被分解成为了趋势数据,周期数据,和噪音。对于未来时间的预测需要对趋势拟合。

技术实现要素:

为了解决以上技术问题,本发明提出了一种基于时间序列分解的中标数量预测方法,根据趋势数据的图像选择合适的多项式(二次函数,三次函数,等等)对趋势数据进行拟合。

本发明的技术方案是:

一种基于时间序列分解的中标数量预测方法,

CRM是一套客户管理系统,在提升企业核心竞争力上具有重大意义,对历史上各个月份的中标数量和金额进行统计后建立时间序列,然后利用时间序列分解算法(STL)找到其内在规律对未来时间的各月中标数量进行预测。

进一步的,CRM数据库中记录了各个商机的各种状态,其中包括:商机的创建的时间和中标时间;通过对中标时间的统计建立商机各个月份中标数量的时间序列,然后利用时间序列分解方法可以对未来的中标数量进行预测。

进一步的,

原时间序列数据被分解成为趋势数据、周期数据和噪音;对于未来时间的预测根据趋势数据的图像选择合适的多项式对趋势数据进行拟合。

进一步的,

主要包括三个步骤:

1)利用最新的商机备份数据对历史上的各个月份的中标数量进行统计得到时间序列。

2)利用时间序列分解算法将数据的时间序列分解成周期数据,趋势数据,和噪音三部分。

3)利用多项式对趋势数据进行拟合进而对未来的趋势数据进行预测,同时加上周期数据,最终得到未来各月份的中标数量预测值。

进一步的,

在CRM数据库中商机的各种状态被记录在内,其中记录商机状态的条目为商机状态,商机状态分为六种包括:发现商机,确认商机,方案交流,投标,中标签单,实施验收。

进一步的,当商机到达中标签单时商机被确认为中标,建立各个月份中标数量的时间序列根据中标签单的日期信息建立。

进一步的,利用python中pandas包的groupby函数。设原数据库数据表示为O,生成的时间序列表示为Y,则使用方法可表示为Y=O.groupby(by=’S5_Date’)。

进一步的,进行函数拟合是利用python语言中numpy包下的polyfit函数。

本发明的有益效果是

主要流行编程语言进行算法实现。通过此方法可对未来时间的各月份的中标数据进行预测,为商机管理提供重要参考,有助于企业优化管理提高效益。

附图说明

图1是基于时间序列分解的商机中标数量预测方法示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的一种基于时间序列分解的中标数量预测方法,主要包括如下几个步骤:

1)在CRM数据库中商机的各种状态被记录在内,其中记录商机状态的条目为商机状态,商机状态分为六种包括:S1-发现商机,S2-确认商机,S3-方案交流,S4-投标,S5-中标签单,S6-实施验收。当商机到达S5时商机被确认为中标,因此建立各个月份中标数量的时间序列(Y)可以根据S5_Date中的日期信息建立。具体操作方法可利用python中pandas包的groupby函数。设原数据库数据表示为O,生成的时间序列表示为Y,则使用方法可表示为Y=O.groupby(by=’S5_Date’)。

2)对建好的时间序列进行时间序列分解,选取多年的各月中标数量分布情况进行分解,将中标数量的时间序列数据Y分解为趋势数据T,周期数据S,和余项R。此过程可以分别利用R语言中的stats和fpp包下的ts和decompose函数实现。ts函数将第一部统计后的数据转化为以12个月为周期的时间序列数据Y’,decompose则可直接将建好的周期性时间序列分解为周期,趋势,余项三部分。操作方法为Y’=ts(Y,frequency=12),D=decompose(Y’,“additive”)。趋势数据为D$trend,周期数据为D$seasonal。

3)将得到的趋势数据进行多项式拟合,来预测未来月份的趋势值并加上对应月份的周期值得到预测的中标数量。进行函数拟合是可利用python语言中numpy包下的polyfit函数。以用四次函数拟合为例,则四次函数的各项系数为coefficient=np.polyfit(x,y,deg=4)。得到函数后将x值与月份进行对应来进行预测。

以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值