资源描述
第11章 数据挖掘简介
数据挖掘是一个多学科交叉领域,涉及数据库技术、机器学习、统计学、神经网络、模式识别、知识库信息提取、高性能计算等诸多领域,并在工业、商务、财经、通讯、医疗卫生、生物工程、科学研究等众多行业得到广泛应用。本章在介绍数据挖掘一般概念的基础上,简要介绍统计学习中的Logistic回归。
11.1 数据挖掘的一般概念
现代计算机、通信和网络计算正在改变着整个人类生活方式以及社会生产经营和管理方式,其中大量的信息在给人们的生活、工作带来方便的同时也带来许多问题。例如,信息过量,难以消化;信息真假难以辨识;信息安全难以保证;信息方式不一致,难以统一处理;信息的有效提取变得更困难,需要的时间成倍增加;信息之间的关联及因果更加难以把握等等。人们开始考虑如何才能不被信息淹没,能及时从中发现有用的信息,提高信息利用率。数据挖掘(data mining)正是在这样的背景下产生的。具体地讲,由于超大数据库的出现(比如商业数据仓库和计算机自动收集的数据记录)、先进的计算技术、对海量数据的快速访问以及较难的统计方法运用于分析计算等等因素,激发了数据挖掘的开发、应用和研究的发展。
11.1.1 数据挖掘的概念及知识分类
数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中提出隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。它是一类深层次的数据分析方法。数据分析本身已经有很长历史,只不过过去数据收集和分析的主要目的是用于科学研究,加之由于以前计算机技术的局限,对大数据量处理进行的复杂数据分析方法受到很大限制。现在各行各业均实现业务自动化,商业领域产生了大量的业务数据,这些数据不再是为了分析的目的而收集的,而是由于纯商业运作而产生的;分析这些数据不再是单纯为了研究的需要,更重要的是为商业决策提供真正有价值的信息,进而提高管理水平、生产效率和利润等等。但所有企业面临的一个共同的问题是:企业数据量非常大,而其中真正对自己有价值的信息却很少,因此,从大量的数据中经过深层次分析获得有利于商业运作、提高竞争力的信息很有必要。
数据挖掘发现的知识最常见的可分为以下四类:
(1)广义知识
广义知识(generalization)指类别特征的概括性描述知识。根据数据的微观特性发现其表征的、带有普遍性的、较高层次概念的、中观和宏观的知识,反映同类事物的共同性质,是对数据的概况、提炼和抽象。
(2)关联知识
它是反映一个事件和其他事件之间依赖或关联的知识。如果两项或多项属性之间存在关联,那么其中一项的属性值就可以依据其他属性进行预测。最为著名的关联规则发现方法是Agrawal提出的Apriori算法。关联规则的发现可分为两步,第一步是迭代识别所有的频繁项目集,要求频繁项目的支持率不低于用户设定的最低值;第二步是从频繁项目集中构造可信度不低于用户设定值的规则。识别和发现所有频繁项目集是关于关联规则发现算法的核心,也是计算量最大的部分。
(3)分类知识
它是反映同类事物共同性质的特征型知识和不同事物之间的差异型特征知识。它除了用主成分分析和判别分析等数理统计方法获得外,最为典型的方法是从基于决策树的分类方法得到,也有用神经网络方法在数据库中进行分类和规则提取。
(4)预测型知识
它根据时间序列型数据,由历史的和当前的数据去预测未来的数据,也可以认为是以时间为关键属性的关联知识。研究或获取这种知识的方法,有经典的统计方法、神经网络和机器学习等,还有经典的平稳时间序列方法和现代的非平稳时间序列分析方法等等。
11.1.2 数据挖掘的功能、步骤和分类
1.数据挖掘的功能
数据挖掘通过预测未来趋势及行为作出前瞻的、基于知识的决策。数据挖掘的目标是从数据库中发现隐含的、有意义的知识,主要有以下五大类功能:
(1)自动预测趋势和行为
数据挖掘自动在数据库中寻找预测性信息,以往需要进行大量手工分析的问题如今可以迅速直接由数据本身得出结论。
(2)关联分析
数据关联是数据库中存在的一类重要的可被发现的知识。若两个或多个变量的取值之间存在某种规律性,就称为关联。关联可分为简单关联、时间关联、因果关联等。关联分析的目的是找出数据库中隐藏的关联网。有时并不知道数据库中数据的关联函数,即使知道也是不确定的,因此,关联分析生成的规则用可信度来表示该规则的置信程度。
(3)聚类
数据库中的记录可被划分为一系列的子集,即聚类。聚类增强了人们对客观现实的认识,是概念描述和偏差分析的先决条件。聚类技术包括传统数理统计中的聚类分析,还有现代的概念聚类技术,其要点是在划分对象时不仅考虑对象之间某种距离,还要求划分出的类具有某种内涵描述,从而避免了传统技术的某些片面性。
(4)概念描述
概念描述就是对某类对象的内涵进行描述,并概况这类对象的有关特征。概念描述分为特征性描述和区别性描述。前者描述某类对象的共同特征,后者描述不同类对象之间的区别。
(5)异常检测
数据库中的数据常有一些异常记录,从数据库中检测这些异常很有意义。异常包括很多潜在的知识,如分类中的反常实例、不满足规则的特例、观测结果与模型预测值的偏差等等。异常检测的基本方法是寻找观测结果与参照值之间有意义的差别。
2.数据挖掘的步骤
实施数据挖掘的步骤如下:
(1)确定业务对象
清楚地定义出业务问题,认清数据挖掘的目的是数据挖掘的重要一步。挖掘的最后结果是不可预测的,但要探索的问题应是有预见的。为了数据挖掘而挖掘往往带有盲目性,是不会成功的。
(2)数据准备
①数据选择 搜索所有与业务对象有关的内部和外部数据信息,从中选择出适用于数据挖掘应用的数据。
②数据预处理 包括对冗余、与任务无关数据的删除,缺失数据、异常数据处理,数据标准化等等,数据预处理是数据挖掘成功的关键。
(3)数据挖掘
对得到的经过转换的数据进行挖掘,也就是用分析模型进行分析计算。
(4)结果分析
解释并评估结果,其使用的分析方法一般应随数据挖掘操作而定,通常还会用到可视化技术。
(5)知识的同化
将分析所得的知识集成到业务信息系统的组织结构中去。
3.数据挖掘的分类
由于数据挖掘是一门受到来自各种不同领域的研究者关注的交叉性学科,因此导致了很多不同的术语名称。其中,最常用的术语是“知识发现”和“数据挖掘”。相对而言,数据挖掘主要流行于统计界(最早出现于统计文献中),数据分析、数据库和管理信息系统界;而知识发现则主要流行于人工智能和机器学习界。
根据数据挖掘的任务分,有如下几种:分类或预测模型、数据总结、数据聚类、关联规则发现、序列模式发现、依赖关系或依赖模型发现、异常和趋势发现等等。
根据数据挖掘的对象分,有如下几种数据源:关系数据库、面向对象数据库、空间数据库、时态数据库、文本数据库、多媒体数据、异质数据库以及Web数据源。
根据数据挖掘的方法分,可粗分为统计方法、机器学习方法、神经网络方法和数据库方法。统计方法可细分为回归分析(多元回归、自回归等)、判别分析(贝叶斯判别、费歇尔判别、非参数判别等)、聚类分析(系统聚类、动态聚类等)、探索性分析(主成分分析法、相关分析法等)以及模糊集、粗糙集、支持向量机等。机器学习可细分为归纳学习方法(决策树、规则归纳等)、基于范例的推理、遗传算法、贝叶斯网络等。神经网络方法可细分为前向神经网络、自组织神经网络等。数据库方法主要是基于可视化的多维数据分析,另外还有面向属性的归纳方法。
11.2 统计学习方法概述
统计学领域不断受到来自科学界和产业界问题的挑战。早期,这些问题通常来自农业和工业实验,且规模相对较小。随着计算机和信息时代的到来,统计问题的规模的复杂性都有了急剧的增加,数据存储、组织和检索领域的挑战导致一个新领域数据挖掘的产生。许多领域都产生海量数据,而统计学家的工作就是理解这些数据,提取重要的模式和趋势,理解这些数据“说什么”,我们称之为从数据中学习。
为理解有关概念和术语,下面引进几个学习问题的例子。
(1)预测一个因心脏病发作而住院的病人是否会再次心脏病发作。这种预测基于人口统计学、饮食和对该病人的临床检查。
(2)根据公司的业绩和经济数据,预测今后6个月的股票价格。
(3)从数字化的图像,识别手写的邮政编码中的数字。
这三个例子有一些共同点:每个例子都有一个可以看作输入的变量集;这些输入对一个或多个输出有影响;每个例子的目标都是使用输入来预测输出的值,这就称为有指导学习(supervised learning)。把输入的变量集称为训练数据集(training set data),把使用这些数据建立的预测模型称为学习器(learner)。
从数据中学习可以粗略地分为有指导学习和无指导学习(unsupervised learning)。对于有指导学习,目标是根据一些输入值预测一个结果值,对于无指导学习,没有结果值,其目标是描述输入集合中的关联和模式。
变量一般分为定量变量、定性变量和有序分类变量三大类。定性变量的值不是一个度量值,且各值之间没有显式的顺序关系,定性变量通常称为分类(categorical)。有序分类(ordered categorical)的变量也不是度量值,但有顺序(如大、中、小)。上述例子中(2)的输入、输出变量都是定量的,而(1)的输入是定量的、输出是定性的。
我们把输出是定量的预测称为回归,而将输出是定性的预测称为分类(classification)。
前面我们已经介绍了回归分析,下面我们介绍一下Logistic回归。
11.3 Logistic回归
11.3.1 Logistic回归模型
在许多社会经济问题中,所研究的现象往往只有两个可能结果,如:投资成功或失败,企业生存或倒闭等。这些问题中都有一个共同的特点,就是因变量均只有两种可能取值。也就是说,的分布是贝努利分布(或两点分布),通常用1和0分别代表的两种可能结果。例如,用1代表投资成功,0代表投资失败。我们关心的是,在两个可能结果中某个结果的出现(如投资成功)与某些变量之间存在的关系。
如果我们考虑线性回归模型
(11.1)
来研究型因变量与自变量间的关系,其中,,那么将至少会遇到如下两个方面的困难,第一:因变量的取值最大是1,最小是0,而式右端的取值可能会超出区间的范围,甚至可能在整个实数轴上取值。第二:因变量本身只取0,1两个离散值,而式右端的取值可在一个范围内连续变化。
针对第一个问题,我们可寻找一个函数,使得经此函数变换后的取值范围在内。符合这样条件的函数有很多,例如所有连续型随机变量的分布函数都符合要求,其中最常用的是标准正态分布的分布函数。还有一个符合要求的函数是
. (11.2)
我们称它为Logistic函数,其曲线形状如图11.1所示。Logistic函数自变量的取值范围是,而函数值的取值范围是,当自变量从变化到时,其函数值相应地从0变化到1。
图11.1 Logistic函数
对于第二个问题,由于是型贝努利随机变量,其概率分布为
.
根据离散型随机变量期望值的定义,可得
.
是随机变量取1的概率,其值可在区间内连续变化。因此,在进行了次观测后,用下列模型来研究型因变量与自变量间的关系是非常合理的。
. (11.3)
模型称为Logistic回归模型,它是非线性模型,其中
(11.4)
正是Logistic函数,其中,,为未知参数向量。
由于,故Logistic回归模型也可表示成
, (11.5)
模型很好地描述了事件发生的概率与变量间的关系。
11.3.2 Logistic回归模型的参数估计
对模型的两端同时作变换
, (11.6)
可得
. (11.7)
变换称为逻辑(logit)变换,Logistic模型经逻辑变换后的模型其右端已变成参数的线性函数。因此,如果我们已知事件发生的概率,或预先能估计出的值,那么就可应用线性回归模型的有关知识来估计Logistic模型中的参数。
1.分组数据情形
在对因变量进行的次观测中,如果在相同的处进行了多次重复观测,则可用样本比例对进行估计,这种结构的数据称为分组数据,分组个数记为。将的估计值代替中的,并记
, (11.8)
则得
.
由线性回归模型的知识知,参数的最小二乘估计为
, (11.9)
其中
.
下面用一个例子来说明分组数据Logistic回归模型的参数估计。
例11.1 在一次住房展销会上,与房地产商签订初步购房意向书的共有名顾客,在随后的3个月的时间内,只有一部分顾客确实购买了房屋。购买了房屋的顾客记为1,没有购买房屋的顾客记为0。以顾客的家庭年收入为自变量,家庭年收入按照高低不同分成了9组,数据列在表11.1中。表11.1还列出了在每个不同的家庭年收入组中签订意向书的人数和相应的实际购房人数。房地产商希望能建立签订意向的顾客最终真正买房的概率与家庭年收入间的关系式,以便能分析家庭年收入的不同对最终购买住房的影响。
表11.1 签订购房意向和最终买房的客户数据
序号
家庭年收入
(万元)
签订意向书
人数
实际购房
人数
实际购房比例
逻辑变换
1
1.5
25
8
0.32
-0.7538
2
2.5
32
13
0.4063
-0.3795
3
3.5
58
26
0.4483
-0.2076
4
4.5
52
22
0.4231
-0.3102
5
5.5
43
20
0.4651
-0.1398
6
6.5
39
22
0.5641
0.2578
7
7.5
28
16
0.5714
0.2877
8
8.5
21
12
0.5714
0.2877
9
9.5
15
10
0.6667
0.6931
解 显然,这里的因变量是型的贝努利随机变量,因此可通过Logistic回归来建立签订意向的顾客最终真正买房的概率与家庭年收入之间的关系。由于从表11.1中可见,对应同一个家庭年收入组有多个重复观测值,因此可用样本比例来估计第个家庭年收入组中客户最终购买住房的概率,其估计值记为。然后,对进行逻辑变换。的值及其经逻辑变换后的值都列在表11.1中。
本例中,自变量个数,分组数,由式计算可得的最小二乘估计分别为
,
相应的线性回归方程为
,
决定系数,统计量,显著性检验,线性回归方程高度显著。最终所得的Logistic回归方程为
. (11.10)
由式可知,越大,即家庭年收入越高,就越大,即签订意向后真正买房的概率就越大。对于一个家庭年收入为9万元的客户,将代入回归方程中,即可得其签订意向后真正买房的概率
.
这也可以说,约有62.62%的家庭年收入为9万元的客户,其签订意向后会真正买房。
计算的MATLAB程序如下:
clc, clear
a=[25 32 58 52 43 39 28 21 15
8 13 26 22 20 22 16 12 10]';
b=a(:,2)./a(:,1); %计算实际购房比例
y=log(b./(1-b)); %进行逻辑变换
x=[ones(9,1),[1.5:9.5]'];
[b,bint,r,rint,stats]=regress(y,x)
pi0=1/(1+exp(-[1,9]*b)) %计算x=9的概率
save gdata11_1 b %把回归系数保存到mat文件中,供下面例题使用
也可以使用MATLAB中广义线性回归的命令glmfit求解上述问题。glmfit的调用格式如下:
b=glmfit(X,y,distr,param1,val1,param2,val2,...)
其中X是的矩阵(没有数学表达式中第1列的“1”),是自变量的个数,为样本容量。distr可以是下列任意一个字符串:'binomial','gamma','inverse gaussian','normal'(缺省值)和 'poisson'。在大多数情形,y是的列向量。对于二项分布情形“binomial”,y可以是取值为0或1的列向量,其中0表示失败,1表示成功;或者y是两列的矩阵,第一列表示每类观测成功的次数,第二列表示每类观测的实验次数,param1,val1是参数及参数对应的取值。返回值b是拟合参数的取值。
计算广义线性模型值的函数调用格式为
yhat=glmval(b,X,link)
其中link的取值及含义如表11.2所列。
表11.2 link的取值及含义
link的取值
含义
'identity'
'log'
'logit'
'probit'
'comploglog'
'reciprocal'
'loglog'
(一个数)
利用glmfit计算的MATLAB程序如下:
clc, clear
a=[25 32 58 52 43 39 28 21 15
8 13 26 22 20 22 16 12 10]';
a=a(:,[2,1]); %交换矩阵第1列和第2列的位置
x=[1.5:9.5]';
b=glmfit(x,a,'binomial') %计算参数的取值
yfit=glmval(b,9,'logit') %计算概率的预测值
用MATLAB工具箱的函数glmfit计算得到的真正买房的概率
.
上述两种MATLAB程序计算结果有点差异,第一个程序实际上是线性化之后使用最小二乘法拟合模型中的参数,glmfit是使用最大似然估计法拟合参数。
需要注意的是,式要求不能等于0也不能等于1。如果有一组的或,或者没有重复观测(非分组数据),即每个组只有一个观测值,则上述方法都将不再适用。另外,即使每组的不能等于0也不能等于1,但组数很小;或者每组的样本量很小不能保证的估计精度,这些情况都会影响最终所得的Logistic回归方程的精度。也就是说,分组数据的Logistic回归只适用于某些大样本的分组数据,对小样本的未分组数据并不适用。对于这些情况可采用下面介绍的极大似然估计方法对Logistic回归模型中的参数进行估计。
2.非分组数据情形
设是型随机变量,是对的取值有影响的确定性变量。在处分别对进行了次独立观测,记第次的观测值为。显然是相互独立的贝努利随机变量,其概率分布为
.
于是,似然函数为
,
对数似然函数为
. (11.11)
Logistic模型描述了与之间有如下关系:
, (11.12)
其中,是未知的待估参数。将式代入式中,得
. (11.13)
使得达到最大值的就是的极大似然估计。但是式是一个较复杂的的非线性函数,要求其最大值点并不是容易的事。幸运的是,目前已有很多软件都提供了相应的计算功能。
11.3.3 Logistic回归模型的应用
在流行病学中,经常需要研究某一疾病发生与不发生的可能性大小,如一个人得流行性感冒相对于不得流行性感冒的可能性是多少,对此通常用赔率来度量。赔率的具体定义如下:
定义11.1 一个随机事件发生的概率与其不发生的概率之比值称为事件的赔率,记为,即。
如果一个事件发生的概率,则其不发生的概率,所以事件的赔率。这就是说,事件发生与不发生的可能性是3比1。粗略地讲,即在4次观测中有3次事件发生而有一次不发生。例如,事件表示“投资成功”,那么即表示投资成功的可能性是投资不成功的3倍。又例如,事件表示“客户理赔事件”,且已知,则,从而事件的赔率,这表明发生客户理赔事件的风险是不发生的三分之一。用赔率可很好地度量一些经济现象发生与否的可能性大小。
仍以上述“客户理赔事件”为例,有时我们还需要研究某一群客户相对于另一群客户发生客户理赔事件的风险大小,如职业为司机的客户群相对于职业是教师的客户群发生客户理赔事件的风险大小,这需要用到赔率比的概念。
定义11.2 随机事件的赔率与随机事件的赔率之比值称为事件对事件的赔率比,记为,即。
若记为职业为司机的客户发生理赔事件,记为职业为教师的客户发生理赔事件,又已知,,则事件对事件的赔率比。这表明职业为司机的客户发生理赔的赔率是职业为教师的客户的1.5倍。
应用Logistic回归可以方便地估计一些事件的赔率及多个事件的赔率比。下面仍以例11.1为例来说明Logistic回归在这方面的应用。
例11.2(续例11.1) 房地产商希望能估计出一个家庭年收入为9万元的客户其签订意向后最终买房与不买房的可能性大小之比值,以及一个家庭年收入为9万元的客户其签订意向后最终买房的赔率是年收入为8万元客户的多少倍。
解 由例11.1中所得的模型得
,
因此
. (11.14)
将代入上式,得一个家庭年收入为9万元的客户其签订意向后最终买房与不买房的可能性大小之比值为
.
这说明一个家庭年收入为9万元的客户其签订意向后最终买房的可能性是不买房的1.6752倍。
另外,由式还可得
.
所以一个家庭年收入为9万元的客户其签订意向后最终买房的赔率是年收入为8万元客户的1.1686倍。
计算的MATLAB程序如下:
clc, clear
load('gdata11_1.mat') %加载回归系数数据
odds9=exp([1,9]*b)
odds9vs8=exp([1,9]*b)/exp([1,8]*b)
一般地,如果Logistic模型的参数估计为,则在,,,条件下事件赔率的估计值为
. (11.15)
如果记,,并将相应条件下的事件仍分别记为和,则事件对赔率比的估计可由下式获得
. (11.16)
例11.3 企业到金融商业机构贷款,金融商业机构需要对企业进行评估。评估结果为0,1两种形式,0表示企业两年后破产,将拒绝贷款,而1表示企业两年后具备还款能力,可以贷款。在表11.3中,已知前20家企业的三项评价指标值和评估结果,试建立模型对其他5家企业(企业21~25)进行评估。
表11.3 企业还款能力评价表
企业编号
的预测值
1
-62.3
-89.5
1.7
0
0
2
3.3
-3.5
1.1
0
0
3
-120.8
-103.2
2.5
0
0
4
-18.1
-28.8
1.1
0
0
5
-3.8
-50.6
0.9
0
0
6
-61.2
-56.2
1.7
0
0
7
-20.3
-17.4
1
0
0
8
-194.5
-25.8
0.5
0
0
9
20.8
-4.3
1
0
0
10
-106.1
-22.9
1.5
0
0
11
43
16.4
1.3
1
1
12
47
16
1.9
1
1
13
-3.3
4
2.7
1
1
14
35
20.8
1.9
1
1
15
46.7
12.6
0.9
1
1
16
20.8
12.5
2.4
1
1
17
33
23.6
1.5
1
1
18
26.1
10.4
2.1
1
1
19
68.6
13.8
1.6
1
1
20
37.3
33.4
3.5
1
1
21
-49.2
-17.2
0.3
0
22
-19.2
-36.7
0.8
0
23
40.6
26.4
1.8
1
24
34.6
26.4
1.8
1
25
19.9
26.7
2.3
1
解 对于该问题,可以用Logistic模型来求解。建立如下的Logistic回归模型
.
这里)分别为变量的20个观测值,这里是20个随机变量。
我们使用最大似然估计法,求模型中的参数,即求参数使得似然函数
达到最大值,这里是的20个观测值。
利用MATLAB求得
,,,.
因而求得的Logistic回归模型为
利用已知数据对上述Logistic模型进行检验,准确率达到100%,说明模型的准确率较高,可以用来预测新企业的还款能力。5个新企业的预测结果见表11.3的最后1列,即有两个企业拒绝贷款,有3个企业可以贷款。
计算的MATLAB程序如下:
clc, clear
a=xlsread('gtable11_3.xlsx','A1:D20'); %读入已知20个点的数据
x0=a(:,[1:3]); y0=a(:,4); %分离自变量和因变量的数据
b=glmfit(x0,y0,'binomial') %拟合参数
c=xlsread('gtable11_3.xlsx','A1:C25'); %读入25个点自变量的数据
d=glmval(b,c,'logit') %求25个点的预测值(前面20个为检验)
习题11
11.1 在对某一新药的研究中,记录了不同剂量()下有副作用人的比例(),具体数据列在表11.4中。要求:
(1)作(剂量)与(有副作用的人数的比例)的散点图,并判断建立关于的一元线性回归方程是否合适?
(2)建立关于的Logistic回归方程。
(3)估计有一半人有副作用的剂量水平。
表11.4 剂量与副作用数据
(剂量)
0.9
1.1
1.8
2.3
3.0
3.3
4.0
0.37
0.31
0.44
0.60
0.67
0.81
0.79
11.2 生物学家希望了解种子的发芽数是否受水分及是否加盖的影响,为此,在加盖与不加盖两种情况下对不同水分分别观察100粒种子是否发芽,记录发芽数,相应数据列在表11.5中。要求:
(1)建立关于和的Logistic回归方程。
(2)分别求加盖与不加盖的情况下发芽率为50%的水分。
(3)在水分值为6的条件下,分别估计加盖与不加盖的情况下发芽与不发芽的概率之比值(发芽的赔率),估计加盖对不加盖发芽的赔率比。
表11.5 种子发芽数据
(水分)
(加盖)
(发芽)
频数
(水分)
(加盖)
(发芽)
频数
1
0(不加盖)
1(发芽)
24
5
0
0
33
1
0
0(不发芽)
76
7
0
1
78
3
0
1
46
7
0
0
22
3
0
0
54
9
0
1
73
5
0
1
67
9
0
0
27
1
1(加盖)
1
43
5
1
0
24
1
1
0
57
7
1
1
52
3
1
1
75
7
1
0
48
3
1
0
25
9
1
1
37
5
1
1
76
9
1
0
63
292
展开阅读全文