数据分析技术(四).

Download Report

Transcript 数据分析技术(四).

第六讲:数据分析技术(四)
-----数据挖掘技术
主讲:梁满发
数据挖掘工作意图
数学挖掘工作意图是揭示海量数据中的隐蔽
规律,以预测目标顾客、风险控制、欺诈模式识
别等工作为主要目的。
做好数据挖掘工作需要准备好三件事:
(1)定义好问题
……谁是目标消费者?
(2)高质量的历史数据
……几年的客户购买记录
(3)一个强大的建模工具
……数据挖掘软件
数据挖掘工作流程
定义问题
建模
模型评估
抽样
定义数据属性
预测或计算得分
数据探测
数据清冼
分析报告
问题背景
假如你为一个邮购公司工作。公司为了配合销售活动,希望每月发送家具和
家用器品产品目录给潜在消费者,内容包括厨房用具、碗碟和餐具产品的目录。
假如向全部消费者寄送费用太贵,必须选择购买该类产品概率较大消费者邮寄。
现在如何确定一份待邮寄名册?我们将通过建立消费倾向模型,使用数据挖掘工
具来确定邮寄名单和分析活动效益情况。
假如你有一个珍贵的顾客购买记录数据。这个数据包括能显示顾客过去两
年是否购买过厨房用具、碗碟和餐具等信息。数据文件名为CUSTDET1,它包括
了如下49个变量和标签:
Purchase
Dollars Spent
Yearly Income
Home Value
Order Frequency
Recency
Married
Name Prefix
Age
Sex
Telemarket Ind.
Rents Apartment
Occupied <1 Year
Domestic Product
Apparel Purchase
Leisure Product
Luxury Items
Kitchen Product
Dishes Purchase
Flatware Purchase
Total Dining (kitch+dish+flat)
Promo: 1-7 Months
Promo: 8-13 Months
$ Value per Mailing
Country Code
Total Returns
Mens Apparel
Home Furniture
Lamps Purchase
Linens Purchase
Blankets Purchase
Towels Purchase
Outdoor Product
Coats Purchase
Ladies Coats
Ladies Apparel
His/Her Apparel
Jewelry Purchase
Date 1st Order
Telemarket Order
Account Number
State Code
Race
Heating Type
Number of Cars
Number of Kids
Travel Time
Education Level
Job Category
分析
问题目标:
(1)在没有购买记录的客户名册中找出待邮寄名单;
(2)以投资回报率或最大利润为决策目标,决定邮寄名单。
解决问题的条件:
(1)目标变量是什么?有足够的数据资料吗?
(2)有与目标关联的数据资料吗?关联性如何?
(3)资料的完整性、可靠性和冗余情况?
(4)研究路线设想?
(5)有什么期待?
因为对目录中产品有需求的客户是购买了kitch、dish和flat叁类产品
的客户,在我们的数据记录中kitch、dish、flat和Dining变量反映了客户
购买信息。但Dining变量表示kitch、dish、flat购买量和,我们分析目标
是分析客户有没有购买kitch、dish、flat商品的意向,因此,我们的目标
变量是“当Dining变量>0,值为1,表示购买;否则为0,表示不购买”。
同时kitch、dish、flat和Dining变量不能作为预测目标变量自变量,因为
它们是共线性的。
我们的数据是由更大的客户数据库中用重抽样法抽取的,为了有足够
的样本做建模分析,使Dining变量响应值(即为1的值)在样本中的比例
近54%,这与现实中客户比例不合。因此,在建模中我们需要调整样本的
权重,现实中响应比例是12%。
抽样数据观察记录为1996个,作为统计推断和建模分析精度足够,数
据没有缺损值,完整性好。没有太多的齐异数据,基本可认为数据可靠。
通过数据的探索分析,可以发现有变量同目标变量存在相关性,因此,可
以考虑通过建立目标变量与其它变量的回归模型、决策树模型和神精网络
模型来预测目标变量。
相关系数
BLANKETS
DINING
BLANKETS
DINING
1
0.349426
1
创建数据挖掘项目
调用SAS数据挖掘功能
从SAS主菜单中选择 File
New
Project
创建数据挖掘项目
从SAS主菜单选择 Solutions
Analysis
Enterprise Miner.
在 Create new project 窗中的工作列表中选择工作,并输入 Dining 名字
后点击 Create 按扭。
创建数据挖掘流程
在Dining List中选择Untitled,并输入Propensity名。
节点栏
工具窗
报告窗按扭
项目管理
窗
工作窗
流程图
输入
数据
分割
数据
集
设置
数据
属性
缺损
值处
理
预测
数据
集
数据
变换
探测
数据
模型代码
及运行
决策
树模
型
分析
报告
回归
模型
模型
评估
观察
预测
结果
数据挖掘的第一步就是确定样本数据,数据的角色,变量的模型中角
色和数据类型。一般来说,用户数据仓库中的数据可能是海量的,如果全
部用来建模分析,则运算十分耗时。只要我们才取好的抽样方式,抽取几
百样本就足够保证统计推断精度,因此,第一步要抽取样本。
另外,为建模需要,我们要确定数据角色,即训练集用来拟合模型;
效验集用来检验模型误差,以便减少过度拟合情况,增加模型的稳建性;
测试集用来得到模型参数的一致有效估计无偏估计;得分集作为待预测的
数集,应该没有响应变量的值。我们要事先确定数据角色。
变量的模型角色分为目标变量、输入变量、时间变量和标识变量,在
建模之前必须分配每一个变量的模型角色,但模型角色是与数据类型有关
联,例如,目标变量可以是二值变量和区间变量,其它变量不行。对回归
模型来说,二值变量只能用LOGISTIC模型,它是预测响应发生的概率。
定义源数据
Input Data Source节点属于Sample类数据挖掘过程。用它
来确定你的源数据和指定输入变量的属性。关闭节点后,
数据集的名字成为节点的名字。
等间隔变量
(连续变量)
栏
定义数据角色,
全程不变。数
据分为五个角
色:
RAW:原始数据;
Training :训练数
集;
Validation:校验数
集;
Test :测试数集;
Score :得分数据
集。
选择数
据库和
数据集
确定抽样
数,默认
为2000个
样本
分类变量
栏
输入变量,
为模型中
的自变量
顺序变量
不参加建模
ID角色,记
分析
录标识
目标角色,预
测对象,全流
程唯一
连续变量,能
计算距离,比
例。
二值变量
Dining=Kitch+dish+flat
名义变量
注:可以改变模型角色、变量测度。
描述统计量
它可用来数据
初步清先。例如,
数据含有不合理
的值吗?
分布特性如何?
数据探测
利用Insight节点能交互式的探测数据。用它能分析单变量和多变量
分布,能画散点图和箱形图,能对结果浏览和研究变量相关性等工作。
还能通过方差分析、回归分析和线性模型来解释模型。
随机抽
样的
“随机
种子数”
Dining变量值从0至28,是三种产品购买量和,我们是要预测具有购买欲望的
潜在消费者,因此,只要购买过的消费者都是目标消费者。在此,需要把它
Dining变量转换成二值变量,即1表示购买,0表示不购买。
统计图分析
变量转换
Transform Variables节点能通过旧变量产生新变量。
软件提供的变换方法:
简单变换:取对数、开方、求倒数、平方、指数化和标准化;
分割变换:分割、分位数、最优分割;
最优幂变换:最大正态化、最大相关化、目标水平均等化;
你可以在Customize window中建立自己的变换公式。
我们产生一个新变量DINBEIN:
当Dining>0,则DINBEIN=1;
当Dining=0,则DINBEIN=0;
Transform Variables Toolbox
Transform Variables – 使用软件提供的变换公式创建一个
新变量
Create Variable – 使用Create Variables window 创建自定
义变换
Delete Variables – 删除变换后的新变量,但不能删除原变
量。
原数据变量窗口
数值键板
运算符面板
自定义变换公式
函数窗
Training – 用来拟合模型的数据集.
Validation – 用来评估模型和模型调整的数据集。
Test – 用来获得最终模型误差的无偏估计。
Score – 得分数据集,可以包括目标变量,也可以不包括。
分割
分位数(Quantile)用来划分频数相同的组。
分割(Bucket)为等间隔区间,每组间的样本数不一定等。
Optimal Binning for Relationship to Target:把变量分成n组,使分
组后变量与目标变量相关系数最大。适合在二值变量与输入变量之间
存在非线性关系的情况。
Maximize normality
Power
Transformation :
变换后变量最接近正态分布。
Maximize Correlation with
Target Power Transformation :
变换后变量与目标变量线性相关系
数最大,适合区间目标变量。
Equalize Spread with Target
Levels Power Transformation :
变换后变量与目标变量具有方差稳
定性。
选择x、log(x)、x1/4、sqrt(x)、x2、
x4、ex中之一作为变换式
在建模前,我们除了要定义变量模型角色、数据类型外,还必需定
义决策成本、收益信息,即决策函数。在商业智能中,分析模式都是商
业决策模型。例如,消费响应预测、信用等级评估和商品关联描述等模
型。
在本问题中,我们要定义DINBEIN为目标变量,是二值变量;放弃与
它共线性的四个变量。依据邮送成本收益和原总体响应比例情况,定义
决策矩阵和先验概率。
数据集属性节点能完成上述任务。
设置数据集属性
它能修改数据属性。例如,数据集名、描述、角色。也能修改样本
信息,例如,变量角色、测度水平。在变量表中可以定义目标变量框架。
预测模型需要定义唯一的目标变
量和多个输入变量,模型评价需
要定义目标变量的决策矩阵和样
本权重,预测需要定义DI变量。
变量表
决定变量是输出
还是不输出
修改变量角色
修改变量测度
本次数据挖掘工作:
(1)把Dining、Kitch、dish、flat四个变量角色改为Rejected,DINBEIN变
量角色改为Target。
(2)把DINBEIN变量测度改为binary。
定义目标变量框架
成本收益假设:
(1)制作、印刷和邮寄一份产品目录成本10元;
(2)若正确预测,即邮寄一份,顾客将来购物,每顾客平均花费90元,
即赢得利润80元;若预测不正确,即邮寄一份,但顾客未来购物,此时亏
本10元。
编辑目
标框架
评估信息,即定义
决策目标函数
先验概率定义
注:由于目标变量值较少,仅在总体中占12%,但为了有足够训练目标值,在数据
库中对样本进行了重抽样,产生了足够多的目标值,占样本中的54%左右,为此建
模需要加权处理。
数据分割
为了拟合模型需
Data Partition节点将输入数据分割为下列互斥数据:
要定义一个训练
Training – 用来拟合模型的数据集.
数据集;为了保
Validation – 用来评估模型和模型调整的数据集。
证模型的稳健性,
Test – 用来获得最终模型误差的无偏估计。
需要定义效验数
据集评估模型,
决策稳建模型;
为得到模型参数
的一致最小无偏
估计,需要定义
测试数据集。它
们均来自样本的
随机抽样的互斥
数据集。
前面过程
输入的数
据
只有观察
数据的角
色、测度
等信息,
不能改变。
简单随机
抽样
分层抽样
自定义数
集
将总体分成若干个层,指定每层样本数,在每层中进行
简单随机抽样,得到的总样本,这种抽样方式称为分层抽样。
自定义数集就是指定具有标志的分割数据集变量作为分
割变量,依据此变量将输入数据分为训练集、效验集、或测试
集。
观察结果
缺失值处理
Replacement节点用来处理缺失值。缺失值是不能用来回归建模
和神精网络建模。若用放弃所有的缺失值的样本来估计,可能会得有偏
估计模型。使用适当的缺失值处理方法有利得到更准确的预测。
本例中DINBEIN没
有缺失数据,可以省
掉此过程。
现实调查、观察和记录难免产生缺失数据,可是缺失数据经常会影
响模型的精度。例如,不回答者可能就是不赞成者,若你把他们全排除,
你的模型结论可能出现严重偏差。因此,在建前应该仔细研究缺失数据
的情况和原因,采取全适的方法处理,尽量减少缺失数据可能对模型影
响的程度。
Replacement节点专门处理缺失数据的功能模块,但处理缺失数据
的方法很多,要选择合适的方法,不仅需要专业统计知识,更需要熟习
数据采集情况,要了解产生缺失数据的原因。
在本例中没有缺失数据,因此,可以不要此过程。
回归模型建模之前需要处理缺失数据,决策树模型不需要,自动把缺失
数据归于一类。
选择具
备一定
角色的
数据集
随机抽样补缺
使用Defaults栏指定方法:
在处理缺失值之前指定缺失值代替方法。
用得分集代替不清楚类变量的值。
对每一个变量创建带有标志的处理变量
来处理观察值。
类变量统计处理方法:
最大频率法
基于分布法
树支处理法
树支首规则处理法
常数法
无处理
对区间变量处理缺失值统计方法:
Mean……均值法
Midrange……极值的中间值法
Tree imputation……树支处理法
Mid-minimum spacing……中间平均值估计法
Huber‘s……Huber加权法
Default constant……常数法
Median……中位数法
Distribution based……基于分布法
Tree imputation with surrogates……树支首规则处理法
Tukey‘s biweight……Tukey加权法
Andrew‘s Wave……Andrew波动法
None……不处理
树模型
一个完整的树是指通过一系列简单规则分割数据。每一个
规则就是根据某变量值将样本分给一个数据块,在数据块内一
个规则接一个规则应用,将数据块分为更细的数据块。层次称
为树,每块数据称为节。原始数据称为根,具有多个后续节的
节称为支,最终节称为叶。每一个叶为对全部样本的一个决策
结果,它依赖上下文,这种预测模型称为决策树模型。
分支标准设置
显著性水平,不
宜太高
F检验,
使叶间方
差与叶内
方差比足
够大。
减小节点平均值
的均方误
nm
I V m 
y
l 1
减少熵值,提
高节的纯度
 yˆ m 
减小Gini值,提
高节的纯度。
2
lm
nm
m
I E m    i log i
i 1
m
I G m   1    i2
i 1
节中保证
的最少观
察数
在每节中
替补值个
数
树节点支持下列模型评价标准:
区间目标变量:
Profit or loss – 平均利润最大,或平均损失最小。
ASE – 最小平均误差。
Average, profit, or loss in the top 10, 25, or 50% --对n%顶部样本最大平均利润,或最
小平均损失。
顺序目标变量:
Proportion misclassified – 最小错判率。
Ordinal-proportion correct, profit, or loss –最好的秩序正判率。
Proportion of event, profit, or loss in top 10, 25, or 50% --在数据n%的顶部最大利润或
最小损失。
Total Leaf Impurity (Gini Index) – 最大叶内纯度(最小Gini指数)。
二值或名义目标变量:
Proportion misclassified – 误判比例最小。
Profit or Loss – 最大平均利润或最小平均损失。
Proportion of event, profit, or loss in top 10, 25, or 50% --对n%顶部样本最大平均利润,
或最小平均损失。
Total Leaf Impurity (Gini Index) --最大叶内纯度(最小Gini指数)。
分支法则:
最好的评估值
最多叶
最少有n叶的最大支
足够样
本分裂
全部样
本分裂
给定P值,
即显著性
水平
给出树的最
多层次
给出有效变量
数,避免过多
的自变量
本例设置
运行结果
例如,得分前10%的样本中
有19%左右的响应,高于12
%;在得分前20%中有20%
左右的响应。
例如,得分前10%的样
本中有捕获了全部响应
的16%左右;在得分前
20%中捕获了全部响应
的32%左右。
若提取得分前10%样本,
则比不使用模型捕获率提高
1.58倍。
若对得分前20%的消费
者邮寄产品册,这项活
动则获得每个样本的平
均利润7.5元左右。
若对得分前20%的消费
者邮寄产品册,这项活
动则获得投资回报率
0.75。
回归模型
Regression节点能建立线性模型和logistic模型。线性回归模
型是用一个或几个输入变量的线性函数预测连续型的目标变量的值;
Logistic回归模型是用一个或几个输入变量函数预测分类目标变量
有利事件发生的概率。
回归模型的类型:
(1)线性模型
(2)Logistic模型
Logistic回归函数:
(1)Logit:
(2)CLOGLOG :
(3)PROBIT
:
回归方法:
(1)Backward – 后退法
(2)Forward – 前进法
(3)Stepwise – 逐步回归法
交互作用
模型评估
Assessment节点提供了决策树模型、神精网络模型、回归模型、
组合模型和自定义模型的比较和预测的平台。模型和预测工具的共同标
准是比较从模型结果中得到的期望利润或损失。它能比较多个模型节点
产生的模型。
不同的模型是由不同变量组成,所以对响应是用不同数据信息预测,
因此,对同一对象预测值不相同。这样我们应用模型预测时就要选择模型,
也就要对模型进行评价。评价模型好坏的唯一标准是决策目标函数平均误
差最小(有时是利润、有时是误判率)。可是不同的模型,对不同数据集
的预测效果是不一样的,就同一模型给定不同阀值,也使误判不一样,因
此,对阀值的选择就有优化决策。
特性曲线
敏感性:
正判数除于响应
数
Reg
模型
好
Tree模
型好
特异性:
误判数除于非响
应数
报告
Reporter节点把数据挖掘流程产生的结果集成为HTML格式报
告,以便网页浏览。报告内容包括报告描述、流程图和每个节点的子
报告。一般报告放在数据挖掘流程最后。
结果浏览
得分或预测
Score节点管理、编辑、输出、执行由训练模型产生的得
分代码。对一个没有目标值的数据集进行预测,它是数据挖掘
工作的最终结果。
训练和测试模型后,对目标用
Logistic回归,选择10%得分高的客
户邮寄产品目录。现在需要对客户
数据预测目标值,使用Score节点完
成工作。
我们只有提取的前面模型运算程序代码,将来才能离开SAS Enterprise
Miner 环境运行。 Score节点就是用来提取代码的,以便用在BASE SAS 环境
下运行。
为了产生邮寄名册,我们需要应用前面模型来预测更广泛的客户数据库,
即运用提取的代码在BASE SAS 上运行,得到目标变量的响应预测值,依据判
断阀值,选择得分值高于阀值的客户,从而产生了邮寄名册。在本例中,我
们以原数据集作为预测数据集。
选择前断节点
输入的数据
操作设置:
Inactive –输出最近数据集产生的模型计算代码。
Apply training data score code to score data set –从训练数据集到得
分数据集应用模型计算代码。
Accumulate data sets by type –复制和输出前续节点输入的数据集。
Merge data sets by type –合并前续节点输入的数据集。
Current imports – 列出前续节点输入当前得分代码。
Accumulated runs – 列出最近运行路径(训练操作)前续节点输出的得分代码。
Saved –列出已保存或合并的代码项。
All –列出由节点管理的代码项。
把代码文件输出保
存为:
REGRESSION。
在BASE SAS中显
示并编辑。
编辑代码
/*--------------------------------------------------------------*/
/* ENTERPRISE MINER: BEGIN SCORE CODE
/*--------------------------------------------------------------*/
%macro DMNORLEN; 32 %mend DMNORLEN;
*/
%macro DMNORMCP(in,out);
&out=substr(left(&in),1,min(%dmnorlen,length(left(&in))));
&out=upcase(&out);
%mend DMNORMCP;
%macro DMNORMIP(in);
&in=left(&in);
&in=substr(&in,1,min(%dmnorlen,length(&in)));
&in=upcase(&in);
%mend DMNORMIP;
DATA &_PREDICT ; SET &_SCORE ;
运行代码创造&_PREDICT 数据集,它放置预测值。
它由得分数据集&_SCORE描述。
在 &_PREDICT 和 &_SCORE插入:
%let _PREDICT=x;
%let _SCORE=sampsio.custdet1;
注:用哑元值初始化_PREDICT。不存在 X 数据集; _PREDICT 数据集由后来的得
分代码创建。
%macro DMNORMIP(in);
&in=left(&in);
&in=substr(&in,1,min(%dmnorlen,length(&in)));
&in=upcase(&in); %mend DMNORMIP;
%let _PREDICT=x;
%let _SCORE=sampsio.custdet1;
DATA &_PREDICT ; SET &_SCORE ;
*;
* CODE_CLEAN * ;
为了高分列在前列要进行观察值排序和观察得分情况,在代码结束
前要增加下列代码:
proc sort data=&_PREDICT;
by descending P_DINEBIN1;
run;
proc print data=&_PREDICT;
var dinebin P_DINEBIN1 P_DINEBIN0;
run;
预测
对预测集应用训练集
得到的得分代码预测。
浏览预测结果
例如,我们要取得分前10%的客户邮寄,则依据预测数据集选出名单。
信用评分模型寅示
问题背景
使用数据挖掘方法对客户信用进行评分,主要研究当个人申请服务和购物
贷款时如何对其信用可靠性进行评估。各种贷方(银行、投资公司、信用卡公
司)每天都会收到成千上万的申请,因此需要有一个自动决策系统帮助决定接
受或拒绝申请。我们以德国银行数据为基础,构建一个客户信用评分模型。
数据中含有1000个申请者观察数据,21个变量,其中一个表示信用可
靠性的二值变量(good_bad),其它意义如下:
社会人口变量
•marital性别与婚姻状况
•Age年龄
•Resident在现在住所居住年数
债权人财产
•Housing是否有房
•Depends是否拥有动产
•Existcr是否拥有不动产
个人和金融变量
•Checking是否有银行帐户
•savings是否有银行存折
•History返款历史
•Property已前财富数量
•Coapp是否申请其它资金
•job职业类型
•Employed工作年限
•Foreign是否是外国职员
具体贷款变量
•Amount数量
•Purpose贷款用途
•Duration贷款期
•Installp分期付款
•Other是否有其它共同债务人
数据探索分析
预备工作:
将Duration变为二值变量,即大
于18月对应1,小于或等对应0;
将Checking拆分为两个变量,即
good_Checking表示“余额大于
200马克”, bad_Checking表示
“负余额”;
将marital分为两个变量,即sex和
marital.
以目标值分层抽取
样本,从比例上是
不合实际的,虽然
不影响建模,但解
释时要加以注意。
流程图
参考书籍
<<统计分析与SAS软件>>
编著:黄平 梁满发
华南理工大学出版社
<<数据挖掘实践>>
著:Olivia Parr Rud
译者:朱扬勇等
机械工业出版社
<<实用数据挖掘>>
著:Paolo Giudici
译者:袁方等
电子工业出版社