背景介绍
某消费品女性顾客流失率
周数 |
流失率 |
周数 |
流失率 |
1 |
0.531731985 |
31 |
0.906074968 |
2 |
0.599828865 |
32 |
0.910126947 |
3 |
0.644564773 |
33 |
0.91328894 |
4 |
0.671027441 |
34 |
0.917005814 |
5 |
0.697281167 |
35 |
0.920081668 |
6 |
0.717013297 |
36 |
0.924666569 |
7 |
0.732752613 |
37 |
0.928067079 |
8 |
0.745040151 |
38 |
0.932732111 |
9 |
0.75565936 |
39 |
0.936609264 |
10 |
0.763524144 |
40 |
0.940518784 |
11 |
0.779177473 |
41 |
0.94417839 |
12 |
0.792189854 |
42 |
0.946870779 |
13 |
0.806571209 |
43 |
0.958960328 |
14 |
0.813644571 |
44 |
0.961151737 |
15 |
0.822233807 |
45 |
0.963206107 |
16 |
0.826976013 |
46 |
0.964973998 |
17 |
0.837737352 |
47 |
0.967341306 |
18 |
0.842773177 |
48 |
0.96778647 |
19 |
0.854878049 |
49 |
0.968232044 |
20 |
0.859771055 |
50 |
0.970466082 |
21 |
0.863536819 |
51 |
0.974362934 |
22 |
0.865907219 |
52 |
0.98011496 |
23 |
0.869966906 |
53 |
0.98424337 |
24 |
0.872734818 |
54 |
0.987633062 |
25 |
0.875641915 |
55 |
0.991046183 |
26 |
0.878079332 |
56 |
0.995581505 |
27 |
0.881514601 |
57 |
0.997785861 |
28 |
0.886842845 |
58 |
1 |
29 |
0.891857506 |
59 |
1 |
30 |
0.898078292 |
60 |
1 |
女性消费商品,品牌的黏性非常重要,但同时商品又是有生命周期的,所以客户群体也会有生命周期,老客户会逐渐流失,新客户不断加入进来,如此便形成了良性客户族新陈代谢。我们需要对客户流失概率进行研究,以便做出一些客户关怀和维系的动作,以减少客户流失,从而使得客户价值最大化。
上表的意义:某女装品牌,假设第一次购买的客户为新客户,则第一周有11865人,只买了第一次而后再未购买的客户为6309人。新增客户表示第一周购买之后在后面数周又购买第二次的人数,不重复计算。
各周损失率计算方法如下:
从未购买的人数/11865=0.531731
从未购买的人数/(11865-1347)=0.599838
…
请用神经网络分析客户任意时间长度没有回头购买的流失率。
1、径向基神经网络结构
径向基神经网络由输入层、隐含层和输出层构成三层前向网络,隐含层采用径向基函数为激励函数(一般是高斯函数)。
2、符号说明
- 样本输入,容量为n;
- 样本输出;
- r 隐含层的神经元个数;
- 第i个神经元的中心和宽度;i=1,2,…,r;
- wi 第i个神经元的权值,i=1,2,…,r;
3、计算网络输出
设神经网络输入和输出都是线性的,则整个隐含层的输入就是样本输入,隐含层的输出也是样本输出,因此(对第j个样本的)为j=1,2,…,n;
4、计算能量函数
用最小二乘法,拟合参数ci,σi,wi的最佳值。
网络学习步骤
步骤1、先将能量函数E写成各参数的复合函数结构
步骤2、求E关于各参数的偏导
i=1,2,…,r
步骤3、求各参数的调整量
为了计算方便,先规范样本输入和输出都是行向量(n),权值、中心和宽度向量w,c,σ都是列向量(r),则e=(yj-Oj)为n维行向量,dji=(xj-ci)为n×r矩阵,(pji)=p(xj,ci,σi)也是n×r矩阵。则各参数调整量(按负梯度方向进行)为
步骤4、计算各参数的调整量
i=1,2,…,r
其中lrw,lrc,lrσ表示相应参数的学习进度(速度)。
5、按照步骤1-步骤4编写RBF神经网络学习程序
以下是对该代码的注释: ``` function [o,eb,s1]=BRF(X,Y,lrw,lrc,lrs,sig,r,n) % 该函数实现基于径向基函数的前向传播神经网络(BRF)算法 % 输入参数: % X:输入数据,每一列代表一个输入样本 % Y:输出数据,每一列代表一个输出样本 % lrw:学习率,用于更新权重参数 w % lrc:学习率,用于更新径向基函数中心 c % lrs:学习率,用于更新径向基函数半径 s % sig:阈值,训练误差小于该值时停止训练 % r:径向基函数节点数 % n:最大迭代次数 % 输出参数: % o:神经网络的输出 % eb:训练过程中的误差变化 % s1: 输入数据归一化转换的信息 x=mapminmax(X); % 输入数据归一化 [y,s1]=mapminmax(Y); % 输出数据归一化,并记录信息 s1 m=length(y); w=rand(r,1)+0.1; % 随机初始化径向基函数权重 w c=rand(r,1); % 随机初始化径向基函数中心 c s=rand(r,1)+0.2; % 随机初始化径向基函数半径 s eb=[]; % 记录训练过程中的误差变化 for k=1:n % 迭代训练 d1=dist(c,x); % 计算输入数据与径向基函数的中心之间的距离 d2=d1.^2; % 计算输入数据与径向基函数的中心之间的距离的平方 ss=[]; for i=1:r sr=ones(1,m)*s(i)^2; % 计算径向基函数的半径的平方 ss=[ss;sr]; end p=exp(-d2./ss); % 计算径向基函数的输出 o=[]; for j=1:m for i=1:r wp(i)=w(i)*p(i,j); % 计算径向基函数和权重的乘积 end o=[o,sum(wp)]; % 计算神经网络的输出 end e=y-o; % 计算预测误差 err=sum(e.^2)^0.5; % 计算平均误差 if err<sig % 如果误差小于预设的阈值,则停止训练 Xt=datetime; disp(Xt); % 显示训练结束时间 break; end eb=[eb,err]; % 记录训练过程中的误差 dw=[];dc=[];ds=[]; for i=1:r dw=[dw;sum(e.*p(i,:))]; % 计算权重的梯度 dc=[dc;w(i)/s(i)^2*sum(e.*p(i,:).*d1(i,:))]; % 计算径向基函数中心的梯度 ds=[ds;w(i)/s(i)^3*sum(e.*p(i,:).*d2(i,:))]; % 计算径向基函数半径的梯度 end w=w+lrw*dw; % 更新权重 c=c+lrc*dc; % 更新径向基函数中心 s=s+lrs*ds; % 更新径向基函数半径 end t=1:m; plot(t,y,'*',t,o,'+-');legend('实际输出','预测输出'); % 绘制预测输出和实际输出的对比图 ```
6、网络拟合效果与各个参数的关系
6.1 拟合效果与学习次数的关系
取定权学习效率为lrw=0.035,中心权值学习lrc =0.01,宽度学习效率为lrs=0.01,神经元个数r=8,残差容量sig=0.001,分别对练习次数n=50,200,500,800,1500残差效果进行对比,结果如图,程序见下
clear A=xlsread('d:\kehu.xlsx'); Y=A'; X=1:60; t=1:length(X); r=8;sig=0.001;lrw=0.035;lrc=0.01;lrs=0.01; n=50; [o,eb1,s1]=BRF(X,Y,lrw,lrc,lrs,sig,r,n); subplot(5,1,1); bar(eb1); n=200; [o,eb2,s1]=BRF(X,Y,lrw,lrc,lrs,sig,r,n); subplot(5,1,2); bar(eb2); n=500; [o,eb3,s1]=BRF(X,Y,lrw,lrc,lrs,sig,r,n); subplot(5,1,3); bar(eb3); n=800; [o,eb4,s1]=BRF(X,Y,lrw,lrc,lrs,sig,r,n); subplot(5,1,4); bar(eb4); n=1500; [o,eb5,s1]=BRF(X,Y,lrw,lrc,lrs,sig,r,n); subplot(5,1,5); bar(eb5);
clear A=xlsread('d:\kehu.xlsx'); Y=A'; X=1:60; t=1:length(X);arf=0.002;n=1500; r=10;sig=0.003;lrw=0.0035;lrc=0.0035;lrs=0.0035;