1、实验报告课程名称神经网络上机项目客户价值分析及流失预测专业班级姓 名学 号一. 上机目的客户价值分析和客户流失预测是公司实现精细化运营的重要手段,对提升公司竞争力发挥着关键作用。已知某航空公司的客户数据 (见附件“air_data.mat”和“数据说明.txt”),试根据项目要求,运用本学期所学的神经网络知识,采用MATLAB 编程语言,独立完成客户划分及流失预测任务,并撰写实验报告。一、项目要求1. RFM 模型是广泛用于分析客户价值的模型,其通过 3 个指标(最近消费时间间隔(Recency)、消费频率(Frequency)、消费金额(Monetary)来进行客户细分,识别出高价值的客户。
2、本项目中,根据已有数据,可选择最后一次乘机时间至观察窗口末端时长(R = LAST_TO_END)、飞行次数(F = FLIGHT_COUNT)、观测窗口总加权飞行公里数(M=WEIGHTED_SEG_KM)作为 RFM 模型的 3 个指标,设计自组织竞争神经网络,对客户进行划分聚类,并解释说明每一类所对应的客户类型;【提示:plot3 命令可画三维点;新版函数 selforgmap 计算效率较高。】2. 选取观测窗口总加权飞行公里数、最后一次乘机时间至观察窗口末端时长、平均乘机时间间隔、观察窗口内最大乘机间隔、非乘机的积分变动次数等属性作为输入特征,客户流失标记作为输出类别,设计神经网络,构
3、建客户流失模型,以便能够预测未来客户的流失情况。要求采用 80%数据作为训练集,剩余 20%数据作为测试集,计算并分析训练精度和测试精度。【如果时间允许,可选做内容,不做硬性要求:1)从数据集中选择不同的属性作为输入特征,分析特征选择对模型精度的影响;2)处理数据标签不平衡问题(即客户流失标签为 0 和 1 的比例差别大的问题),提高模型精度。】二. 上机内容三. 上机方法与步骤Matlab程序为:load air_data.mat x=air_data;plot3(x(:,3),x(:,4),x(:,5),o)set(gcf,color,w) title(选取的三个数据)net=selfor
4、gmap(8 8); x1=x(:,3:5);net=train(net,x1); y=net(x1); classes=vec2ind(y); hist(classes,64) set(gcf,color,w) title(聚类结果)xlabel( 类 别 ) ylabel(类别的样本数量)net=selforgmap(1 3) load air_data.mat x=air_data;% 训练net.trainParam.epochs=450; %定义最大循环次数ticnet=train(net,x); toc%计算结果y=net(x);classes = vec2ind(y); fpri
5、ntf(分类结果n); disp(classes)% 进行画图x1=x(:,classes=1); x2=x(:,classes=2); x3=x(:,classes=3);figure plot(x1(1,:),x1(2,:),ko) hold on plot(x2(1,:),x2(2,:),b*)plot(x3(1,:),x3(2,:),r+)title( 竞 争 神 经 网 络 分 类 ) legend(第一类,第二类,第三类)% 客户价值分析及流失预测% 清空工作空间clear,clc close all;rng(now) M=4;% 定义输入样本N = 60;strr =1,2,3,
6、4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60;load air_data.matx=air_data;data=x(1:60,2:5);%选取的数据为:会员级别,飞行次数,观测窗口总加权飞行公里数,最后一次乘机时间至观察窗口末端时长% 创建网络% 2*2 自组织映射网络net = selforgmap(2,2);%
7、 网络训练data = mapminmax(data); ticnet = init(net);net = train(net, data(1,2,3,4,:); toc% 测试y = net(data(1,2,3,4,:);% 将向量表示的类别转为标量result = vec2ind(y);% 输出结果% 将分类标签按实力排序score = zeros(1,M); for i=1:Mt = data(:, result=i); score(i) = mean(t(:);end,ind = sort(score);result_ = zeros(1,N); for i=1:Mresult_(r
8、esult = ind(i) = i;endfprintf(for i = 1:N客户级别(级别次数越大越重要)n);fprintf(%-8s第 %d 级n, strri, result_(i) ;end我将客户分为四个类别,且所选择的四个数据中,数值越高表示级别次数越大。第 4 级:包括客户 8,15,22,23,24,25,27,28,29,35,37,38,41,43,44,47,53,54,55,57,59。共 21 名客户。这部分客户的四个类型的数值都较高,故将他们划分为第4 级第 3 级:包括客户 2,3,4,5,6,7,9,10,11,12,13,16,18,19,20,21。共 16 名客户。这部分客户的在会员级别,飞行次数,观测窗口总加权飞行公里数中的数值较高,但在最后一次乘机时间至观察窗口末端时长较第四级较低。故将这部分客户划分为第3 级第 2 级:包括客户 1,14,17,26,30,31,32,33,34,42,50,58,60。共 13 名客户。这部分客户只在会员级别,观测窗口总加权飞行公里数中的数值较高。故将这部分客户划分为第2 级第 1 级:包括客户 36,39,40,45,46,48,49,51,52,56。共 10 名客户。这部分客户在四个类型中的数值都较低。故将这部分客户划分为第1 级