数据挖掘技术
数据挖掘技术
哈尔滨商业大学
概论:大数据和数据挖掘
学习目的:了解大数据基本概念和数据挖掘基本思想,掌握市场数据处理、分析和展示基本方法和技能
一、 大数据和大数据时代
1、什么是大数据(Gig Data):一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。
2、计算机数据存储单位:
最小的基本单位是bit,按顺序给出所有单位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。
它们按照进率1024(2的十次方)来计算:
- 1 Byte =8 bit
- 1 KB = 1,024 Bytes = 8192 bit
- 1 MB = 1,024 KB = 1,048,576 Bytes
- 1 GB = 1,024 MB = 1,048,576 KB
- 1 TB = 1,024 GB = 1,048,576 MB
- 1 PB = 1,024 TB = 1,048,576 GB
- 1 EB = 1,024 PB = 1,048,576 TB
- 1 ZB = 1,024 EB = 1,048,576 PB
- 1 YB = 1,024 ZB = 1,048,576 EB
- 1 BB = 1,024 YB = 1,048,576 ZB
- 1 NB = 1,024 BB = 1,048,576 YB
- 1 DB = 1,024 NB = 1,048,576 BB
一般情况下:1个数字或英文字母占1B=8Bit,1个汉字占2B=16bit。
- 《红楼梦》含标点87万字(不含标点853509字)
- 1GB 约等于671部红楼梦
- 1TB 约等于631,903 部
- 1PB 约等于647,068,911部
- 美国国会图书馆藏书(151,785,778册)(2011年4月:收录数据235TB )
- 1EB = 4000倍美国国会图书馆存储的信息量
3、 大数据的特征
ü 容量(Volume):数据量巨大;
ü 种类(Variety):数据类型的多样性(结构化数据、半结构化数据和非结构化数据);
- 结构化数据
建立一个信息系统设计时肯定会涉及到数据的存储,一般我们都会将系统信息保存在某个指定的关系数据库中。我们会将数据按业务分类,并设计相应的表,然后将对应的信息保存到相应的表中。比如我们做一个业务系统,要保存员工基本信息:工号、姓名、性别、出生日期等等;我们就会建立一个对应的staff表。这种类别的数据最好处理,只要简单的建立一个对应的表就可以了。
- 非结构化数据
像图片、声音、视频等等。这类信息我们通常无法直接知道他的内容,数据库也只能将它保存在一个BLOB字段中,对以后检索非常麻烦。一般的做法是,建立一个包含三个字段的表(编号 number、内容描述 varchar(1024)、内容 blob)。引用通过编号,检索通过内容描述。现在还有很多非结构化数据的处理工具,市面上常见的内容管理器就是其中的一种。
- 半结构化数据
这样的数据和上面两种类别都不一样,它是结构化的数据,但是结构变化很大。因为我们要了解数据的细节所以不能将数据简单的组织成一个文件按照非结构化数据处理,由于结构变化很大也不能够简单的建立一个表和他对应。本文主要讨论针对半结构化数据存储常用的两种方式。
先举一个半结构化的数据的例子,比如存储员工的简历。不像员工基本信息那样一致每个员工的简历大不相同。有的员工的简历很简单,比如只包括教育情况;有的员工的简历却很复杂,比如包括工作情况、婚姻情况、出入境情况、户口迁移情况、党籍情况、技术技能等等。还有可能有一些我们没有预料的信息。通常我们要完整的保存这些信息并不是很容易的,因为我们不会希望系统中的表的结构在系统的运行期间进行变更。
ü 质量(Value):无法保证质量(沙里淘金,价值密度低);以监控视频为例,一部一小时的视频,在连续不间断监控过程中,可能有用的数据仅仅只有一两秒。如何通过强大的机器算法更迅速地完成数据的价值“提纯”是目前大数据汹涌背景下亟待解决的难题。
ü 速度(Velocity):指获得数据的速度(实时获取需要的信息);
4、大数据时代
半个世纪以来,随着计算机技术全面融入社会生活,信息爆炸已经积累到了一个开始引发变革的程度。它不仅使世界充斥着比以往更多的信息,而且其增长速度也在加快。信息爆炸的学科如天文学和基因学,创造出了“大数据”这个概念。如今,这个概念几乎应用到了所有人类智力与发展的领域中。21世纪是数据信息大发展的时代,移动互联、社交网络、电子商务等极大拓展了互联网的边界和应用范围,各种数据正在迅速膨胀并变大。
大数据时代的一些基本特征:
- 硬件成本降低
- 网络带宽提升
- 云存储、云计算兴起
- 网络技术快速发展
- 智能终端的普及
- 电子商务、社交网络、电子地图等的全面应用
- 物联网( “Internet of things(IoT)”。顾名思义,物联网就是物物相连的互联网)
二、数据挖掘概述
1、 什么是数据挖掘
- 数据挖掘(Data Mining),一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程。
- 数据挖掘--从大量数据中寻找其规律的技术,是统计学、数据库技术和人工智能技术的综合;
- 数据挖掘是从数据中自动地抽取模式、关联、变化、异常和有意义的结构。
2、 数据挖掘必备的基本技能
- 计算机科学(软件);
- 统计学和应用数学;
- 专业技术水平和实际工作经验。
3、 大数据时代统计数据处理过程
- 数据收集- Data Collection(数据抓取);
- 数据处理- Data Processing(数据预处理、数据清洗);
- 数据分析- Data Analysis(数据挖掘、建模、规律发现);
- 数据存储- Data Storage(海量数据存储和使用);
- 数据交换(数据传递方式:Email、QQ、微信等;数据交换格式:格式化字符、HTML、XML、JSON);
- 数据展示(图形、表格、公式、地图;文字、图像、视频;网页、博客。);
基本目的:
ü 预言(Predication):用历史预测未来
ü 描述(Description):了解数据中潜在的规律
ü 展示(Presentation):展示和演示数据趋势和规律
4、 数据挖掘基本技术
ü 分类 (Classification):首先从数据中选出已经分好类的训练集,在该训练集上运用数据挖掘分类的技术,建立分类模型,对于没有分类的数据进行分类(信用卡申请者:分类为低、中、高风险);
ü 估计(Estimation):根据购买模式,估计一个家庭的孩子个数,或估计一个家庭的收入;
ü 预测(Prediction):通过分类或估值得出模型,该模型用于对未知变量的预言;
ü 相关性分组或关联规则(Affinity grouping or association rules):超市中客户在购买A的同时,经常会购买B,即A => B(关联规则)。客户在购买A后,隔一段时间,会购买B (序列分析);
ü 聚类(Clustering):聚类是对记录分组,把相似的记录放在一个聚集里。聚集和分类的区别是聚类不依赖于预先定义好的类,不需要训练集;
ü 描述和可视化(Description and Visualization):是对数据挖掘结果的表示方式。一般只是指数据可视化工具,包含报表工具和商业智能分析产品(BI)的统称
ü 异常检测(Anomaly Detection):数据挖掘中一个重要方面,用来发现“小的模式”(相对于聚类),即数据集中间显著不同于其它数据的对象。异常探测应用在如下领域:
² 电信和信用卡欺骗
² 贷款审批
² 药物研究
² 气象预报
² 客户分类
² 网络入侵检测
² 故障检测与诊断等
5、 数据挖掘经典算法
ü C4.5:是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法;
ü K-means算法:是一种聚类算法;
ü SVM:一种监督式学习方法,广泛运用于统计分类以及回归分析中;
ü Apriori :是一种最有影响的挖掘布尔关联规则频繁项集的算法。
ü EM:最大期望值法;
ü pagerank:是google算法的重要内容;
ü Adaboost:是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器然后把弱分类器集合起来,构成一个更强的最终分类器;
ü KNN:是一个理论上比较成熟的方法,也是最简单的机器学习方法;
ü Naive Bayes:在众多分类方法中,应用最广泛的有决策树模型和朴素贝叶斯(Naive Bayes);
ü Cart:分类与回归树,在分类树下面有两个关键的思想,第一个是关于递归地划分自变量空间的想法,第二个是用验证数据进行减枝;
ü BP神经网络。
三、大数据和数据挖掘案例
1、一天之间,互联网上要发生多少事
ü 每天有2940亿封电子邮件发出,如果这些是纸质信件,在美国需要花费两年时间处理;
ü 每天有200万篇博客在网上发布,这些文章相当于《时代》杂志刊发770年的总量;
ü 每天有2.5亿张照片上传至社交网站Facebook,如果都打印出来,摞在一起能有80个埃菲尔铁塔那么高;
ü 每天有86.4万小时视频被上传至视频网站Youtube,相当于不间断播放视频98年;
ü 每天有1.87亿个小时的音乐会在流媒体音乐网站Pandora上播放,如果一台电脑从公元元年就开始播放这些音乐会,到现在还没完没了地接着放;
ü 谷歌翻译每天处理的文字数量,每天翻译次数达十亿次,相当于一百万册图书,超过了全世界的专业翻译人员一年能够翻译的文字规模;
ü 百度每天的关键词搜索量50亿,谷歌33.3亿;
ü 淘宝天猫双11那一天营业额达191亿人民币。中国小商品城全年成交额才580.03亿元人民币。
累积起来,互联网一天之内产生的信息总量,可以装满1.68亿张DVD光盘。
……
2、尿布与啤酒"的故事
在一家超市里,有一个有趣的现象:尿布和啤酒赫然摆在一起出售。但是这个奇怪的举措却使尿布和啤酒的销量双双增加了。这不是一个笑话,而是发生在美国沃尔玛连锁店超市的真实案例,并一直为商家所津津乐道。沃尔玛拥有世界上最大的数据仓库系统,为了能够准确了解顾客在其门店的购买习惯,沃尔玛对其顾客的购物行为进行购物篮分析,想知道顾客经常一起购买的商品有哪些。沃尔玛数据仓库里集中了其各门店的详细原始交易数据。在这些原始交易数据的基础上,沃尔玛利用数据挖掘方法对这些数据进行分析和挖掘。一个意外的发现是:"跟尿布一起购买最多的商品竟是啤酒!经过大量实际调查和分析,揭示了一个隐藏在"尿布与啤酒"背后的美国人的一种行为模式:在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,而他们中有30%~40%的人同时也为自己买一些啤酒。产生这一现象的原因是:美国的太太们常叮嘱她们的丈夫下班后为小孩买尿布,而丈夫们在买尿布后又随手带回了他们喜欢的啤酒。
按常规思维,尿布与啤酒风马牛不相及,若不是借助数据挖掘技术对大量交易数据进行挖掘分析,沃尔玛是不可能发现数据内在这一有价值的规律的。
四、数据挖掘和统计分析技术有什么不同?
硬要去区分Data Mining和Statistics的差异其实是没有太大意义的。Data Mining技术或计算等理论方法,都是由统计学者根据统计理论所发展衍生。换另一个角度看,Data Mining有相当大的比重是由高等统计学中的多变量分析(多元统计分析)所支撑。但是为什么Data Mining的出现会引发各领域的广泛注意呢?主要原因在相较于传统统计分析而言,Data Mining有下列几项特性:
ü 处理大量实际数据更强势,且无须太专业的统计背景去使用Data Mining的工具;
ü 数据分析趋势为从大型数据库抓取所需数据并使用专属计算机分析软件,Data Mining的工具更符合企业需求;
ü 纯就理论的基础点来看,Data Mining和统计分析有应用上的差别,毕竟Data Mining目的是方便企业终端用户使用而非给统计学家检测用的。
五、数据处理工具和软件(经济类专业)
1、微信、百度云和博客
参考博客:http://www.cnblogs.com/cloudtj/
2、WORD、PPT
3、EXCEL、VBA for EXCEL、R
第一章 数据处理
学习目的:理解运用数据挖掘方法前需要对数据进行清理、标准化等基础工作,掌握数据相似性和相异下分析方法
一、数据清理(EXCEL字符串函数)
二、数据标准化和归一化
1、 最大最小值标准化方法;
(A) 或 (B)
2、 均值方差标准化方法
(C)
数据实例一:现有男、女生各20人体重(公斤)数据如下,
男生 |
50 |
85 |
53 |
72 |
73 |
61 |
62 |
56 |
64 |
79 |
59 |
66 |
63 |
81 |
86 |
77 |
60 |
82 |
51 |
54 |
女生 |
62 |
62 |
67 |
78 |
50 |
57 |
48 |
54 |
54 |
64 |
69 |
77 |
60 |
56 |
64 |
74 |
51 |
54 |
53 |
55 |
问,男生还是女生体重变化较小?
解:
男生体重最大、最小值maxM=86、minM=50;
女生体重最大、最小值maxF=78、minF=48;
男生体重平均数和样本标准差,;
女生体重平均数和样本标准差,;
男女生体重数据标准化计算表:
男生 |
女生 |
男生A |
女生A |
男生B |
女生B |
男生C |
女生C |
50 |
62 |
0.00 |
0.47 |
1.00 |
0.53 |
-1.42 |
0.17 |
85 |
62 |
0.97 |
0.47 |
0.03 |
0.53 |
1.55 |
0.17 |
53 |
67 |
0.08 |
0.63 |
0.92 |
0.37 |
-1.16 |
0.74 |
72 |
78 |
0.61 |
1.00 |
0.39 |
0.00 |
0.45 |
1.97 |
73 |
50 |
0.64 |
0.07 |
0.36 |
0.93 |
0.53 |
-1.17 |
61 |
57 |
0.31 |
0.30 |
0.69 |
0.70 |
-0.48 |
-0.39 |
62 |
48 |
0.33 |
0.00 |
0.67 |
1.00 |
-0.40 |
-1.40 |
56 |
54 |
0.17 |
0.20 |
0.83 |
0.80 |
-0.91 |
-0.72 |
64 |
54 |
0.39 |
0.20 |
0.61 |
0.80 |
-0.23 |
-0.72 |
79 |
64 |
0.81 |
0.53 |
0.19 |
0.47 |
1.04 |
0.40 |
59 |
69 |
0.25 |
0.70 |
0.75 |
0.30 |
-0.65 |
0.96 |
66 |
77 |
0.44 |
0.97 |
0.56 |
0.03 |
-0.06 |
1.86 |
63 |
60 |
0.36 |
0.40 |
0.64 |
0.60 |
-0.31 |
-0.05 |
81 |
56 |
0.86 |
0.27 |
0.14 |
0.73 |
1.21 |
-0.50 |
86 |
64 |
1.00 |
0.53 |
0.00 |
0.47 |
1.64 |
0.40 |
77 |
74 |
0.75 |
0.87 |
0.25 |
0.13 |
0.87 |
1.52 |
60 |
51 |
0.28 |
0.10 |
0.72 |
0.90 |
-0.57 |
-1.06 |
82 |
54 |
0.89 |
0.20 |
0.11 |
0.80 |
1.30 |
-0.72 |
51 |
53 |
0.03 |
0.17 |
0.97 |
0.83 |
-1.33 |
-0.84 |
54 |
55 |
0.11 |
0.23 |
0.89 |
0.77 |
-1.08 |
-0.61 |
三、数据相似性分析
相似性和相异性被许多数据挖掘技术所使用,如聚类、最近邻分类、异常检测等。两个对象之间的相似度是这两个对象相似程度的数值度量,通常相似度是非
负值,并常常在0(不相似)和1(完全相似)之间取值。两个对象之间的相异度是这两个对象差异程度的数值度量,两个对象越相似,它们的相异度就越低,通常
用“距离”作为相异度的同义词。数据对象之间相似性和相异性的度量有很多,如何选择度量方法依赖于对象的数据类型,数据的量值是否重要,数据的稀疏性等。
1. 欧氏距离(Euclidean Distance)
欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。
(1)二维平面上两点a(x1,y1)与b(x2,y2)间的欧氏距离:
(2)三维空间两点a(x1,y1,z1)与b(x2,y2,z2)间的欧氏距离:
(3)两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的欧氏距离:
也可以用表示成向量运算的形式:
欧式距离是高维空间中两点之间的距离,它计算简单、应用广泛,但是没有考虑变量之间的相关性,当体现单一特征的多个变量参与计算时会影响结果的准确性,同时它对向量中得每个分量的误差都同等对待,一定程度上放大了较大变量误差在距离测度中的作用。
两个n维向量A(x11,x12,…,x1n)与B(x21,x22,…,x2n)间的欧氏距离定义为:D(A,B)=[(x11-x21)^2+(x12-x22)^2+…+(x1n-x2n)^2]^0.5
欧式距离的公式是
d=sqrt( ∑(xi1-xi2)^ ) 这里i=1,2..n
欧氏距离:(∑(Xi-Yi)2)1/2,即两项间的差是每个变量值差的平方和再平方根,目的是计算其间的整体距离即不相似性。
欧氏距离虽然很有用,但也有明显的缺点。它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求。例如,在教育研究中, 经常遇到对人的分析和判别,个体的不同属性对于区分个体有着不同的重要性。因此,有时需要采用不同的距离函数。
欧氏距离看作信号的相似程度。 距离越近就越相似,就越容易相互干扰,误码率就越高。
2. 曼哈顿距离(Manhattan Distance)
(1)二维平面两点a(x1,y1)与b(x2,y2)间的曼哈顿距离
(2)两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的曼哈顿距离
曼哈顿距离也称为城市街区距离(City Block distance),想象在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是“曼哈顿距离”。
两个n维向量A(x11,x12,…,x1n)与B(x21,x22,…,x2n)间的曼哈顿距离定义为:D(A,B)=|x11-x21|+|x12-x22|+…+|x1n-x2n|
两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的曼哈顿距离
以上两个距离都具有的数学性质是:
非负性:d(i,j)≥0 距离是一个非负的数值
同一性:d(i,i)= 0 对象到自身的距离为0
对称性:d(i,j)= d(j,i)距离是一个对称函数
三角不等式:d(i,j)≤d(i,k)+d(k,j)从对象i到对象j的直接距离不会大于途经的任何其他对象k的距离
3. 切比雪夫距离 (Chebyshev Distance )
数学上,切比雪夫距离(Chebyshev distance)或是L∞度量是向量空间中的一种度量,二个点之间的距离定义为其各座标数值差的最大值。以(x1,y1)和(x2,y2)二点为例,其切比雪夫距离为max(|x2-x1|,|y2-y1|)。切比雪夫距离得名自俄罗斯数学家切比雪夫。
切比雪夫距离也称为棋盘距离,国际象棋中,国王走一步能够移动到相邻的8个方格中的任意一个,那么国王从格子A(x1,y1)走到格子B(x2,y2)最少需要多少步?你会发现最少步数总是max{|x2-x1|,|y2-y1|}步。
两个n维向量A(x11,x12,…,x1n)与B(x21,x22,…,x2n)间的切比雪夫距离定义为:D(A,B)=max{|x11-
x21|,|x12-x22|,…,|x1n-x2n|},该公式的另一种等价形式是:D(A,B)=[(x11-x21)^k+(x12-
x22)^k+…+(x1n-x2n)^k]^(1/k),其中k趋向于无穷大。
4. 闵氏距离(Minkowski Distance)
闵可夫斯基距离:
闵可夫斯基距离(Minkowski distance)是衡量数值点之间距离的一种非常常见的方法,假设数值点 P 和 Q 坐标如下:
那么,闵可夫斯基距离定义为:
闵氏距离不是一种距离,而是一组距离的定义。
该距离最常用的 p 是 2 和 1, 前者是欧几里得距离(Euclidean distance),后者是曼哈顿距离(Manhattan distance)。假设在曼哈顿街区乘坐出租车从 P 点到 Q 点,白色表示高楼大厦,灰色表示街道:
绿色的斜线表示欧几里得距离,在现实中是不可能的。其他三条折线表示了曼哈顿距离,这三条折线的长度是相等的。
当 p 趋近于无穷大时,闵可夫斯基距离转化成切比雪夫距离(Chebyshev distance):
我们知道平面上到原点欧几里得距离(p = 2)为 1 的点所组成的形状是一个圆,当 p 取其他数值的时候呢?
注意,当 p < 1 时,闵可夫斯基距离不再符合三角形法则,举个例子:当 p < 1, (0,0) 到 (1,1) 的距离等于 (1 1)^{1/p} > 2, 而 (0,1) 到这两个点的距离都是 1。
闵可夫斯基距离比较直观,但是它与数据的分布无关,具有一定的局限性,如果 x 方向的幅值远远大于 y 方向的值,这个距离公式就会过度放大 x 维度的作用。所以,在计算距离之前,我们可能还需要对数据进行 z-transform 处理,即减去均值,除以标准差:
可以看到,上述处理开始体现数据的统计特性了。这种方法在假设数据各个维度不相关的情况下利用数据分布的特性计算出不同的距离。如果维度相互之间数据相关(例如:身高较高的信息很有可能会带来体重较重的信息,因为两者是有关联的),这时候就要用到马氏距离(Mahalanobis distance)了。
两个n维变量A(x11,x12,…,x1n)与B(x21,x22,…,x2n)间的闵氏距离定义为:D(A,B)=[|x11-
x21|^p+|x12-x22|^p+…+|x1n-x2n|^p]^(1/p),其中p是一个可变参数。当p=1时为曼哈顿距离,当p=2时为欧氏距
离,当p→∞时为切比雪夫距离。
闵氏距离,包括曼哈顿距离、欧氏距离和切比雪夫距离都存在明显的缺点:(1)对各个分量的量纲(Scale)没有区别对待。(2)未考虑各个分量的分布(期望,方差等)可能是不同的。
5. 标准化欧氏距离(Standardized Euclidean Distance)
标准化欧氏距离是针对简单欧氏距离的缺点而作的一种改进,其基本思想是先将数据对象的各个分量都进行均值为μ、标准差为s的标准化,然后再计算欧式距离。
两个n维向量A(x11,x12,…,x1n)与B(x21,x22,…,x2n)的标准化欧氏距离定义为:D(A,B)={[(x11-x21)/s1]^2+[(x12-x22)/s2]^2+…+[(x1n-x2n)/sn]^2}^0.5
6. 马氏距离(Mahalanobis Distance)
马氏距离由印度统计学家马哈拉诺斯(P.C.Mahalanobis)提出,表示数据的协方差距离,与欧式距离不同,它考虑了各指标之间相关性的干扰,而且不受各指标量纲的影响,但是它的缺点是夸大了变化微小的变量的作用。
设A、B是从均值向量为μ,协方差阵为∑的总体G中抽取的两个样本,A、B两点之间的马氏距离定义为:D(A,B)=[(A-B)T∑-1(A-B)]^0.5,A与总体G的马氏距离定义为D(A,G)=[(A-μ)T∑-1(A-μ)]^0.5。
当协方差矩阵∑是单位矩阵(各个样本向量之间独立同分布),则马氏公式就转化为欧氏距离;当协方差矩阵∑是对角阵时,则马氏距离就转化为标准化欧式距离;
例1:已知两样本{(25,30,28,40,26),(30,45,32,41,30)},计算如下距离:
欧氏距离(18.8226)、曼哈顿距离(29)、切比雪夫距离(15)、闵氏距离(19.525/1.5)、相关系数(0.667231)、夹角余弦(0.989811)、标准欧氏距离(3.263219、标准化时用样本标准差)
例2:现有样本集为:{(1,2),(3,4),(4,6),(2,3),(3,5)},求两样本{(1,2),(2,3)}的马氏距离。
解:
(该样本集为二维变量)
当样本集为四维变量时有,
,
已知,
,
7. 汉明距离(Hamming Distance)
在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。
例如:1011101 与 1001001 之间的汉明距离是 2;”toned”与”roses” 之间的汉明距离是3。
8. 皮尔逊相关系数(Pearson Correlation coefficient )
相关公式:
皮尔逊相关系数也称为简单相关系数,它是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高,负值表示负相关,正值表示正相关。
皮尔逊相关系数定义如下:r(X,Y)=Cov(X,Y)/[(D(X)^0.5)*(D(Y)^0.5)]=E((X-EX)*(Y-EY))/
[(D(X)^0.5)*(D(Y)^0.5)]=[(X1-X_bar)(Y1-Y_bar)+(X2-X_bar)(Y2-Y_bar)+…+
(Xn-X_bar)(Yn-Y_bar)]/{[(X1-X_bar)^2+(X2-X_bar)^2+…(Xn-X_bar)]*[(Y1-
Y_bar)^2+(Y2-Y_bar)^2+…(Yn-Y_bar)]}^0.5。
Pearson相关系数要求参与计算的变量为服从双变量正态分布的连续型数据,并且仅适用于线性相关的情况。另外,当极值对Pearson相关系数的影响非常大,因此在计算之前要首先进行极值处理。
9.斯皮尔曼秩相关系数(Spearman Rank Correlation)
与Pearson相关系数一样,它也可以反映两组变量联系的紧密程度,取值在-1到+1之间,计算方法上也完全相同,不同的是它建立在秩次的基础之上,对原始变量的分布和样本容量的大小不作要求,属于非参数统计方法,适用范围更广。
设R(R1,R2,…,Rn)表示X在(X1,X2,…,Xn)
中的秩,Q(Q1,Q2,…,Qn)表示Y在(Y1,Y2,…,Yn)中的秩,如果X和Y具有同步性,那么R和Q也会表现出同步性,反之依然,将其代入
Pearson相关系数,就得到秩之间的一致性,也就是Spearman相关系数。考虑到
R1+R2+…Rn=Q1+Q2+…+Qn=n(n+1)/2,R1^2+R2^2+…+Rn^2=Q1^2+Q2^2+…+Qn^2=n(n+1)
(2n+1)/6,Spearman相关系数可以定义为:r(X,Y)=1-6*[(R1-Q1)^2+(R2-Q2)^2+…(Rn-Qn)^2]
/[n(n^2-1)]
10.肯德尔秩相关系数(Kendall Rank Correlation )
Kendall在本质设想方面与Spearman是一样的,它从两个变量是否协同一致的角度出发检验两变量之间是否存在相关性。什么是协同?假设两
个变量X、Y有n对观察值(X1,Y1)(X2,Y2)…(Xn,Yn),如果(Xj-Xi)(Yj-Yi)>0(j>i),称
(Xi,Yi)与(Xj,Yj)满足协同性(concordant),或者说变化方向一致。否则,不满足协同性。
全部数据共有n(n-1)/2对,如果用Nc表示同向数对的数目,Nd表示反向数对的数目,则Nc+Nd=
n(n-1)/2,Kendall相关系数由两者的平均差定义:(Nc-Nd)/[n(n-1)/2]。Kendall相关系数的取值范围在-1到1之
间,当等于1时,表示两个随机变量拥有一致的等级相关性;当等于-1时,表示两个随机变量拥有完全相反的等级相关性;当等于0时,表示两个随机变量是相互
独立的。
举例:
假如我们设一组8人的身高和体重在那里A的人是最高的,第三重,等等:
Person |
A |
B |
C |
D |
E |
F |
G |
H |
Rank by Height |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Rank by Weight |
3 |
4 |
1 |
2 |
5 |
7 |
8 |
6 |
我们看到,有一些相关的两个排名之间的相关性,可以使用肯德尔头系数,客观地衡量对应。
注意,A最高,但体重排名为 3 ,比体重排名为 4,5,6,7,8 的重,贡献5个同序对,即AB,AE,AF,AG,AH。同理,我们发现B、C、D、E、F、G、H分别贡献4、5、4、3、1、0、0个同序对,因此,
P = 5 + 4 + 5 + 4 + 3 + 1 + 0 + 0 = 22.
因而R=(88/56)-1=0.57。这一结果显示出强大的排名之间的规律,符合预期。
11. 余弦相似度(Cosine Similarity)
几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中用这一概念来衡量样本向量之间的差异。夹角余弦的取值范围为[-1,1]。夹角余弦越大表
示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。
两个n维样本向量A(x11,x12,…,x1n)和B(x21,x22,…,x2n)的夹角余弦定义为:cosθ=
(A·B)/(|A|*|B|)
=(x11*x21+x12*x22+…X1n*X2n)/[(x11^2+x12^2+…+x1n^2)^0.5*
(x21^2+x22^2+…+x2n^2)^0.5],夹角余弦经常应用于像文档这样的稀疏数据,它变量的长度无关,如向量(1,2)和(2,4)的夹
角余弦与向量(1,2)和(10,20)的相等。
欧氏距离是最常见的距离度量,而余弦相似度则是最常见的相似度度量,很多的距离度量和相似度度量都是基于这两者的变形和衍生,所以下面重点比较下两者在衡量个体差异时实现方式和应用环境上的区别。
借助三维坐标系来看下欧氏距离和余弦相似度的区别:
从图上可以看出距离度量衡量的是空间各点间的绝对距离,跟各个点所在的位置坐标(即个体特征维度的数值)直接相关;而余弦相似度衡量的是空间向量的夹角,更加的是体现在方向上的差异,而不是位置。如果保持A点的位置不变,B点朝原方向远离坐标轴原点,那么这个时候余弦相似度cosθ是保持不变的,因为夹角不变,而A、B两点的距离显然在发生改变,这就是欧氏距离和余弦相似度的不同之处。
根据欧氏距离和余弦相似度各自的计算方式和衡量特征,分别适用于不同的数据分析模型:欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异;而余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分用户兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦相似度对绝对数值不敏感)。
12.调整余弦相似度(Adjusted Cosine Similarity)
余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感。因此没法衡量每个维数值的差异,会导致这样一个情况:比如用户对内容评分,5分制,X
和Y两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得出的结果是0.98,两者极为相似,但从评分上看X似乎不喜欢这2个内容,
而Y比较喜欢,余弦相似度对数值的不敏感导致了结果的误差,需要修正这种不合理性。
调整余弦相似度,将所有维度上的数值都减去一个均值,比如X和Y的评分均值都是3,那么调整后为(-2,-1)和(1,2),再用余弦相似度计算,得到-0.8,相似度为负值并且差异不小,但显然更加符合现实。
13. 简单匹配系数(Simple Matching Coefficient,SMC)
设A、B是两个二元属性组成的对象,这两个对象的比较导致如下四个频率变量:f00:A取0并且B取0属性的个数;f01:A取0并且B取1属性的个数;f10:A取1并且B取0属性的个数;f11:A取1并且B取1属性的个数。
那么SMC就是两个对象A、B属性值匹配的属性个数与所有属性个数的比值,即SMC(A,B)=(f11+f00)/(f01+f10+f11+f00)
14. Jaccard系数(Jaccard Coefficient)
当数据对象的二元属性是非对称的时,例如用1表示商品被购买,用0表示商品未被购买。由于未被购买的商品数远远大于被购买的商品数,因此,如果用SMC计算数据对象的相似度,其结果必然是所有的数据对象都是相似的。
Jaccard系数可以处理仅包含非对称二元属性的对象,它是匹配属性的个数与不涉及0-0匹配的属性个数的比值,即J(A,B)=f11/(f01+f10+f11)。
15. 广义Jaccard系数(Extended Tanimoto Coefficient)
广义Jaccard系数又称为Tanimoto系数,常常用于文档数据,并在二元属性情况下规约为Jaccard系数。
该系数用EJ表示,定义如下:EJ(A,B)=(A·B)/(|A|*|A|+|B|*|B|-
A·B)=(x11*x21+x12*x22+…+x1n*x2n)/[(x11^2+x12^+…x1n^2)+(x21^2+x22^2+…+x2n^2)-(x11*x21+x12*x22+…+x1n*x2n)]
第二章 EXCEL基础
一、EXCEL绝对和相对单元格操作
二、EXCEL常用函数
三、EXCEL在数据挖掘算法中的运用
四、EXCEL在线练习(单选和判断题)
链接:http://www.galaxystatistics.com/sjfxsTK/mypastExcel.html
第三章 KNN算法
地理学第一定律(Tobler's First Law) - k近邻(KNN)等数据挖掘方法理论基础:
All attribute values on a geographic surface are related to each other, but closer values are more strongly related than are more distant ones.
涵义:地理事物或属性在空间分布上互为相关,存在集聚(clustering)、随机(random)、规则(Regularity)分布。
一个空间单元内的信息与其周围单元信息有相似性,空间单元之间具有的连通性, 属性各阶矩的空间非均匀性或非静态性。空间分布模式主要有点模式、线模式、面模式和体模式, 其中最早被提出和研究的是点模式 ( po i n t pattern )。点模式分析的理论最早由Ripley(1977)提出,并不断得到完善(Haase,1995;Dixon,2002)。 目前应用领域最广的面模式——空间自相关。空间因素表现在「空间自相关」(Spatial Auto-correlation)与「空间异质」两个概念上,空间自相关是认为「邻近地区的影响」(neighborhood effect)的大小,空间异质性指空间位置差异造成的观察行为不恒定现象。例如在某个区域之中,存在著不同的次区域,各区域间误差的变异不相等。举例说明:犯罪率与教育程度的关系,不同地区 (文教区、贫困区)可能不一样,此即空间异质现象。基本上,人的行为表现受到所处环境或周遭环境的影响非常明显,空间分析学者尝詴结合日益成熟的电脑科技GIS、空间计量方法、以及大型资料库,目的在精确地界定空间因素的重要性及影响力:到底是哪一种「空间因素」产生影响?影响有多大?如何建立模型?解释自变数与因变数间的关系。
K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法。其中的K表示最接近自己的K个数据样本。KNN算法和K-Means算法不同的是,K-Means算法用来聚类,用来判断哪些东西是一个比较相近的类型,而KNN算法是用来做归类的,也就是说,有一个样本空间里的样本分成很几个类型,然后,给定一个待分类的数据,通过计算接近自己最近的K个样本来判断这个待分类数据属于哪个分类。你可以简单的理解为由那离自己最近的K个点来投票决定待分类数据归为哪一类。
一个比较经典的KNN图如下:
从上图中我们可以看到,图中的有两个类型的样本数据,一类是蓝色的正方形,另一类是红色的三角形。而那个绿色的圆形是我们待分类的数据。
如果K=3,那么离绿色点最近的有2个红色三角形和1个蓝色的正方形,这3个点投票,于是绿色的这个待分类点属于红色的三角形。
如果K=5,那么离绿色点最近的有2个红色三角形和3个蓝色的正方形,这5个点投票,于是绿色的这个待分类点属于蓝色的正方形。
我们可以看到,机器学习的本质——是基于一种数据统计的方法!那么,这个算法有什么用呢?我们来看几个示例。
- KNN分类
产品质量判断假设我们需要判断纸巾的品质好坏,纸巾的品质好坏可以抽像出两个向量,一个是“酸腐蚀的时间”,一个是“能承受的压强”。如果我们的样本空间如下:(所谓样本空间,又叫Training Data,也就是用于机器学习的数据)
向量X1 耐酸时间(秒) |
向量X2 圧强(公斤/平方米) |
品质Y |
7 |
7 |
坏 |
7 |
4 |
坏 |
3 |
4 |
好 |
1 |
4 |
好 |
那么,如果 X1 = 3 和 X2 = 7, 这个毛巾的品质是什么呢?这里就可以用到KNN算法来判断了。
假设K=3,K应该是一个奇数,这样可以保证不会有平票,下面是我们计算(3,7)到所有点的距离。
向量X1 耐酸时间(秒) |
向量X2 圧强(公斤/平方米) |
计算到 (3, 7)的距离 |
向量Y |
7 |
7 |
坏 |
|
7 |
4 |
N/A |
|
3 |
4 |
好 |
|
1 |
4 |
好 |
所以,最后的投票,好的有2票,坏的有1票,最终需要测试的(3,7)是合格品。(当然,你还可以使用权重——可以把距离值做为权重,越近的权重越大,这样可能会更准确一些)
- KNN预测
假设我们有下面一组数据,假设X是流逝的秒数,Y值是随时间变换的一个数值(你可以想像是股票值)
那么,当时间是6.5秒的时候,Y值会是多少呢?我们可以用KNN算法来预测之。
这里,让我们假设K=2,于是我们可以计算所有X点到6.5的距离,如:X=5.1,距离是 | 6.5 – 5.1 | = 1.4, X = 1.2 那么距离是 | 6.5 – 1.2 | = 5.3 。于是我们得到下面的表:
X |
Y |
X间距离 |
1 |
23 |
5.5 |
1.2 |
17 |
5.3 |
3.2 |
12 |
3.3 |
4 |
27 |
2.5 |
5.1 |
8 |
1.4 |
6.5 |
? |
K |
Y预测值 |
2 |
17.5 |
3 |
15.66667 |
注意,上图中因为K=2,所以得到X=4 和 X =5.1的点最近,得到的Y的值分别为27和8,在这种情况下,我们可以简单的使用平均值来计算:(27+8)/2=17.5。
第四章 聚类分析(最短距离法)
一、什么是聚类分析
聚类分析又称群分析,它是研究(样品或指标)分类问题的一种多元统计方法,所谓类,通俗地说,就是指相似元素的集合。严格的数学定义是较麻烦的,在不同问题中类的定义是不同的。详见参考文献[1]。
聚类分析起源于分类学,在考古的分类学中,人们主要依靠经验和专业知识来实现分类。随着生产技术和科学的发展,人类的认识不断加深,分类越来越细,要求也越来越高,有时光凭经验和专业知识是不能进行确切分类的,往往需要定性和定量分析结合起来去分类,于是数学工具逐渐被引进分类学中,形成了数值分类学。后来随着多元分析的引进,聚类分析又逐渐从数值分类学中分离出来而形成一个相对独立的分支。
在社会经济领域中存在着大量分类问题,比如对我国30个省市自治区独立核算工业企业经济效益进行分析,一般不是逐个省市自治区去分析,而较好地做法是选取能反映企业经济效益的代表性指标,如百元固定资产实现利税、资金利税率、产值利税率、百元销售收入实现利润、全员劳动生产率等等,根据这些指标对30个省市自治区进行分类,然后根据分类结果对企业经济效益进行综合评价,就易于得出科学的分析。又比如若对某些大城市的物价指数进行考察,而物价指数很多,有农用生产物价指数、服务项目价指数、食品消费物价指数、建材零售价格指数等等。由于要考察的物价指数很多,通常先对这些物价指数进行分类。总之,需要分类的问题很多,因此聚类分析这个有用的数学工具越来越受到人们的重视,它在许多领域中都得到了广泛的应用。
值得提出的是将聚类分析和其它方法联合起来使用,如判别分析、主成分分析、回归分析等往往效果更好。
聚类分析内容非常丰富,有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。本章主要介绍常用的系统聚类法。
二、八种系统聚类方法
正如样品之间的距离可以有不同的定义方法一样,类与类之间的距离也有各种定义。例如可以定义类与类之间的距离为两类之间最近样品的距离,或者定义为两类之间最远样品的距离,也可以定义为两类重心之间的距离等等。类与类之间用不同的方法定义距离,就产生了不同的系统聚类方法。本节介绍常用的八种系统聚类方法,即最短距离法、最长距离法、中间距离法、重心法、类平均法、可变类平均法、可变法、离差平方和法。系统聚类分析尽管方法很多,但归类的步骤基本上是一样的,所不同的仅是类与类之间的距离有不同的定义方法,从而得到不同的计算距离的公式。这些公式在形式上不大一样,但最后可将它们统一为一个公式,对上机计算带来很大的方便,详见后。
以下用表示样品与之间距离,用表示类与之间的距离。
1 最短距离法
定义类与之间的距离为两类最近样品的距离,即
设类与合并成一个新类记为,则任一类与的距离是:
最短距离法聚类的步骤如下:
(1)定义样品之间距离,计算样品两两距离,得一距离阵记为,开始每个样品自成一类,显然这时。
(2)找出的非对角线最小元素,设为,则将和合并成一个新类,记为,即。
(3)给出计算新类与其它类的距离公式:
将中第p、q行及p、q列用上面公式并成一个新行新列,新行新列对应,所得到的矩阵记为。
(4)对重复上述对的(2)、(3)两步得;如此下去,直到所有的元素并成一类为止。
如果某一步中非对角线最小的元素不止一个,则对应这些最小元素的类可以同时合并。
为了便于理解最短距离法的计算步骤,现在举一个最简单的数字例子。
例1 设抽取五个样品,每个样品只测一个指标,它们是1,2,3.5,7,9,试用最短距离法对五个样品进行分类。
(1)定义样品间距离采用绝对距离,计算样品两两距离,得距离阵如下:
表1
|
|||||
0 |
|
|
|
|
|
1 |
0 |
|
|
|
|
2.5 |
1.5 |
0 |
|
|
|
6 |
5 |
3.5 |
0 |
|
|
8 |
7 |
5.5 |
2 |
0 |
(2)找出中非对角线最小元素是1,即,则将与并成一个新类,记为。
(3)计算新类与其它类的距离,按公式:
即将表的前两例取较小的一列得表如下:
表2
|
G6 |
G3 |
G4 |
G5 |
0 |
|
|
|
|
1.5 |
0 |
|
|
|
5 |
3.5 |
0 |
|
|
7 |
5.5 |
2 |
0 |
(4)找出中非对角线最小元素是1.5,则将相应的两类G3和G6合并为,然后再按公式计算各类与G7的距离,即将G3, G6相应的两行两列归并一行一列,新的行列由原来的两行(列)中较小的一个组成,计算结果得表如下:
|
G7 |
G4 |
G5 |
0 |
|
|
|
3.5 |
0 |
|
|
5.5 |
2 |
0 |
(5)找出中非对角线最小元素是2,则将G4与G5合并成,最后再按公式计算G7与G8的距离,即将G4,G5相应的两行两列归并成一行一列,新的行列由原来的两行(列)中较小的一个组成,得表如下:
表4
|
G7 |
G8 |
0 |
|
|
3.5 |
0 |
最后将G7和G8合并成G9,上述并类过程可用下图表达。横坐标的刻度是并类的距离。
由上图看到分布两类及比较合适,在实际问题中有时给出一个阈值T,要求类与类之间的距离小于T,因此有些样品可能归不了类。
最短距离法也可用于指标(变量)分类,分类时可以用距离,也可以用相似系数。但用相似系数时应找最大的元素并类,也就是把公式中的min换成max。
2 最长距离法
定义类与类之间距离为两类最远样品的距离,即
最长距离法与最短距离法的并类步骤完全一样,也是将各样品先自成一类,然后将非对角线上最小元素对应的两类合并。设某一步将类与合并为,则任一类与的距离用最长距离公式为
=
再找非对角线最小元素的两类并类,直至所有的样品全归为一类为止。
易见最长距离法与最短距离法只有两点不同:一是类与类之间的距离定义不同;另一是计算新类与其它类的距离所用的公式不同。下面将要介绍的其它系统聚类法之间的不同点也表现在这两个方面,而并类步骤完全一样,所以下面介绍其它系统聚类方法时,主要指出这两个方面:定义和公式。
举例1应用最长距离法按聚类步骤(1)—(3)可得下表:
为
表5
|
|||||
0 |
|
|
|
|
|
1 |
0 |
|
|
|
|
2.5 |
1.5 |
0 |
|
|
|
6 |
5 |
3.5 |
0 |
|
|
8 |
7 |
5.5 |
2 |
0 |
(1)找出中非对角线最小元素是1,即,则将与并成一个新类,记为。
(2)计算新类与其它类的距离,按公式:
即将表的前两例取较大的一列得表如下:
表6
|
||||
0 |
|
|
|
|
2.5 |
0 |
|
|
|
6 |
3.5 |
0 |
|
|
8 |
5.5 |
2 |
0 |
(3)找出中非对角线最小元素是2,则将相应的两类G4和G5合并为,然后再按公式计算各类与G7的距离,即将G4, G5相应的两行两列归并一行一列,新的行列由原来的两行(列)中较大的一个组成,计算结果得表如下:
为
表7
|
|||
0 |
|
|
|
8 |
0 |
|
|
2.5 |
5.5 |
0 |
(4)找出中非对角线最小元素是2.5,则将G3与G6合并成,然后再按公式计算各类与G8的距离,即将G3、G6相应的两行两列归并成一行一列,新的行列由原来的两行(列)中较大的一个组成,得表如下:
表8
|
||
0 |
|
|
8 |
0 |
最后将和合并成。其聚类图如下,与最短距离法分类情况一致,只是并类的距离不同。
3 中间距离法
定义类与类之间的距离既不采用两类之间最近的距离,也不采用有两类之间最远的距离,而是采用介于两者之间的距离,故称为中间距离法。
如果在某一步将类与类合并为,任一类和的距离公式为:
当时,由初等几何知就是上面三角形的中线。
如果用最短距离法,则;如果用最长距离法,则;如果取夹在这两边的中线作为,则,由于距离公式中的量都是距离的平方,为了上机计算的方便,可将表、、、……中的元素,都用相应元素的平方代替而得表、、、…。
将例1用中间距离法分类,取。
(1)将每个样品看作自成一类,因此,得表,然后将中元素平方得表为
表9
|
|||||
0 |
|
|
|
|
|
1 |
0 |
|
|
|
|
6.25 |
2.25 |
0 |
|
|
|
36 |
25 |
12.25 |
0 |
|
|
64 |
49 |
30.25 |
4 |
0 |
(2)找出中非对角线最小元素是1,则将、合并成一个新类。
(3)按中间距离公式计算新类与其它类的平方距离得表为
表10
|
||||
0 |
|
|
|
|
4 |
0 |
|
|
|
30.25 |
12.25 |
0 |
|
|
56.25 |
30.25 |
4 |
0 |
如:
(4)找出中非对角线最小元素是,则将和合并成,将和合并成。
(5)最后计算和的平方距离,得表为:
表11
|
||
0 |
|
|
30.25 |
0 |
不难看出此聚类图的形状和前面两种聚类图一致,只是并类距离不同。而且可以发现中间距离法的并类距离大致处于它们的中间。
4 重心法
定义类与类之间距离时,为了体现出每类包含的样品个数给出重心法。
重心法定义两类之间的距离就是两类重心之间的距离。设和的重心(即该类样品的均值)分别是和(注意一般它们是p维向量),则和之间的距离是。
设聚类到某一步,和分别有样品个,将和合并为,则内样品个数为,它的重心是,某一类的重心是,它与新类的距离(如果最初样品之间的距离采用欧氏距离)为
利用代入上式得
显然,当时即为中间距离法的公式。
如果样品之间的距离不是欧氏距离,可根据不同情况给出不同的距离公式。
重心法的归类步骤与以上三种方法基本上一样,所不同的是每合并一次类,就要重新计算新类的重心及各类与新类的距离。
将例1用重心法分类。
重心法的初始距离阵与中间距离法相同(即表9),表为:
|
|||||
0 |
|
|
|
|
|
1 |
0 |
|
|
|
|
6.25 |
2.25 |
0 |
|
|
|
36 |
25 |
12.25 |
0 |
|
|
64 |
49 |
30.25 |
4 |
0 |
首先将与并成新类,其重心为,计算与其它各类重心之间的平方距离得阵如下:
|
||||
0 |
|
|
|
|
4 |
0 |
|
|
|
30.25 |
12.25 |
0 |
|
|
56.25 |
30.25 |
4 |
0 |
其中
非对角线最小元素为4,可将与并成,与并成,计算新类与其它重心间的平方距离得如下:
|
||
0 |
|
|
34.03 |
0 |
最后将与合并成,其聚类图如下:
5 类平均法
重心法虽有很好的代表性,但并未充分利用各样品的信息,因此给出类平均法,它定义两类之间的距离平方为这两类元素两两之间距离平方的平均,即
设聚类到某一步将和合并为,则任一类与的距离为
类平均法的聚类步骤与上述方法完全类似,就不详述了。
将例1用类平均法分类,同前表如下:
|
|||||
0 |
|
|
|
|
|
1 |
0 |
|
|
|
|
62.5 |
2.25 |
0 |
|
|
|
36 |
25 |
12.25 |
0 |
|
|
64 |
49 |
30.25 |
4 |
0 |
中非对角线最小元素是1,将与合并为,按类平均法的距离公式计算与其它类的距离得表如下:
其中 k =3,4,5
|
||||
0 |
|
|
|
|
4.25 |
0 |
|
|
|
30.5 |
12.25 |
0 |
|
|
56.5 |
30.25 |
4 |
0 |
如
中非对角线最小元素是4,将与合并为,计算与其它各类的距离得表如下:
|
|||
0 |
|
|
|
4.25 |
0 |
|
|
43.5 |
12.5 |
0 |
最后将与合并成,其聚类图如下
6 可变类平均法
由于类平均法公式中没有反映与之间距离的影响,所以给出可变类平均法,此法定义两类之间的距离同上,只是将任一类与新类的距离改为如下形式:
其中是可变的且。
仍取例1的数据用可变类平均法分类。
表如下:
|
|||||
0 |
|
|
|
|
|
1 |
0 |
|
|
|
|
6.25 |
2.25 |
0 |
|
|
|
36 |
25 |
12.25 |
0 |
|
|
64 |
49 |
30.25 |
4 |
0 |
中非对角线最小元素是1,将与合并成,并按照上述公式计算与其它各类的距离,取,求得表如下:
|
||||
0 |
|
|
|
|
5.06 |
0 |
|
|
|
37.88 |
12.25 |
0 |
|
|
70.38 |
30.25 |
4 |
0 |
中非对角线最小元素是4,将与合并为,计算与其它各类的距离得表如下:
将与合并成,计算与的距离得表如下:
|
|||
0 |
|
|
|
5.06 |
0 |
|
|
66.66 |
25.56 |
0 |
|
||
0 |
|
|
64.49 |
0 |
最后将与合并成,其聚类图如下:
7 可变法
此法定义两类之间的距离仍同上,而新类与任一类的的距离公式为:
其中是可变的,且。
显然在可变类平均法中取,即为上式。
可变类平均法与可变法的分类效果与的选择关系极大,如果接近1,一般分类效果不好,在实际应用中常取负值。下面用例1数据用可变法分类,取,表如下:
|
|||||
0 |
|
|
|
|
|
1 |
0 |
|
|
|
|
6.25 |
2.25 |
0 |
|
|
|
36 |
25 |
12.25 |
0 |
|
|
64 |
49 |
30.25 |
4 |
0 |
将与合并成,按上述公式计算与任一类的距离得表如下:
再将与合并成,计算与其它类距离得表如下:
|
||||
0 |
|
|
|
|
5.06 |
0 |
|
|
|
37.88 |
12.25 |
0 |
|
|
70.38 |
30.25 |
4 |
0 |
|
|||
0 |
|
|
|
5.06 |
0 |
|
|
66.66 |
25.56 |
0 |
再将与合并成,计算与的距离得表如下:
|
||
0 |
|
|
56.37 |
0 |
最后将与合并成,其聚类图如下:
8 离差平方和法
这个方法是Ward提出来的,故又称为Ward法。
设将n个样品分成k类:G1, G2, …, Gk, 用表示中的第i个样品(注意是p维向量),nt表示Gt中的样品个数,是Gt的重心,则Gt中样品的离差平方和为:
k个类的类内离差平方和为
Ward法的基本思想是来自于方差分析,如果分类正确,同类样品的离差平方和应当较小,类与类的离差平方和应当较大。具体做法是先将n个样品各自成一类,然后每次缩小一类,每缩小一类离差平方和就要增大,选择使S增加最小的两类合并(因为如果分类正确,同类样品的离差平方和应当较小)直到所有的样品归为一类为止。
粗看Ward法与前七种方法有较大的差异,但是如果将与的距离定义为
其中,就可使Ward法和前七种系统聚类方法统一起来,且可以证明Ward法合并类的距离公式为:
将例1用Ward法分类:
(1)将五个样品各自分成一类,显然这时类内离差平方和S=0。
(2)将一切可能的任意两列合并,计算所增加的离差平方和,取其中较小的S所对应的类合并,例如将、合并成一类,它的离差平方和,如果将、合并,它的离差平方和,将一切可能的两类合并的离差平方和都算出,列表如下:
表13
|
|||||
0 |
|
|
|
|
|
0.5 |
0 |
|
|
|
|
3.125 |
1.125 |
0 |
|
|
|
18 |
12.50 |
6.125 |
0 |
|
|
32 |
24.50 |
15.125 |
2 |
0 |
表中非对角线最小元素是0.5,说明将G1、G2合并为G6增加的S最少,计算G6与其它
类的距离得表如下:
|
||||
0 |
|
|
|
|
2.667 |
0 |
|
|
|
20.167 |
6.125 |
0 |
|
|
37.5 |
15.125 |
2 |
0 |
其中
这里
上表非对角线最小元素是2,将G4、G5合并为G7,计算G7与其它类的距离得表如下:
|
|||
0 |
|
|
|
2.667 |
0 |
|
|
42.25 |
13.5 |
0 |
其中
这里
上表非对角线最小元素是2.667,将G3、G6合并为G8,计算G8与G7的距离得表如下:
|
||
0 |
|
|
40.83 |
0 |
其中
最后将G7、G8合并G9,将全部分类过程列表如下:
分类数目 |
类 |
并类最小的离差平方和 |
5 |
{1}, {2}, {3.5}, {7}, {9} |
0 |
4 |
{1, 2}, {3.5}, {7}, {9} |
0.5 |
3 |
{1, 2}, {3.5}, {7, 9} |
2 |
2 |
{1, 2, 3.5}, {7, 9} |
2.667 |
1 |
{1, 2, 3.5, 7, 9} |
40.83 |
用增加最小的离差平方和代替合并的平方距离也可画出聚类图如下:
上面介绍了八种系统聚类方法,这些方法聚类的步骤是完全一样的,所不同的是类与类之间的距离有不同的定义法。依法所给出的新类与任一类的距离公式不同。但这些公式在1967年由兰斯(Lance)和威廉姆斯(Williams)统一起来(参考文献[1])。当采用欧氏距离时,八种方法有统一形式的递推公式。
如果不采用欧氏距离时,除重心法、中间距离法、离差平方和法之外,统一形式的递推公式仍成立。上式中参数、、、对不同的方法有不同的取值。表15列出上述八种方法中参数的取值。八种方法公式的统一,对于编制程序提供了很在的方便。
对指标进行分类时,常用的是相似系数,统一记为(如夹角余弦,相关系数等)。若用相关系数时应找最大的元素并类,也可将相关系数转化为距离,以便维护距离越小则关系越密切的含义,例如可取或者。
表15
方 法 |
||||
最短距离法 |
1/2 |
1/2 |
0 |
-1/2 |
最长距离法 |
1/2 |
1/2 |
0 |
1/2 |
中间距离法 |
1/2 |
1/2 |
0 |
|
重 心 法 |
0 |
|||
类 平 均 法 |
0 |
0 |
||
可变类平均法 |
<1 |
0 |
||
可 变 法 |
/2 |
/2 |
<1 |
0 |
离差平方和法 |
0 |
上述例1给出的数字例子,用八种系统聚类法并类的结果都是一致的,只是并类的距离不同。然而在一般情况下,用不同的方法聚类的结果是不完全一致的。自然会问哪一种方法好呢?这就需要提出一个标准作为衡量的依据,但至今还没有一个合适的标准。各种方法的比较目前仍是值得研究的一个课题,在实际应用中,一般采用以下两种处理方法:一种办法是根据分类问题本身的专业知识结合实际需要来选择分类方法,并确定分类个数。另一种办法是多用几种分类方法去作,把结果中的共性取出来,如果用几种方法的某些结果都一样,则说明这样的聚类确实反映了事物的本质,而将有争议的样品暂放一边或用其它办法如判别分析去归类。下面再看两个实例。
例1 为了更深入了解我国人口的文化程度状况,现利用1990年全国人口普查数据对全国30个省、直辖市、自治区进行聚类分析。分析选用了三个指标:(1)大学以上文化程度的人口占全部人口的比例(DXBZ);(2)初中文化程度的人口占全部人口的比例(CZBZ);(3)文盲半文盲人口占全部人口的比例(WMBZ)、分别用来反映较高、中等、较低文化程度人口的状况,原始数据如下表:
1990年全国人口普查文化程度人口比例(%)
地区 |
序 号 |
DXBZ |
CZBZ |
WMBZ |
北 京 |
1 |
9.30 |
30.55 |
8.70 |
天 津 |
2 |
4.67 |
29.38 |
8.92 |
河 北 |
3 |
0.96 |
24.69 |
15.21 |
山 西 |
4 |
1.38 |
29.24 |
11.30 |
内 蒙 |
5 |
1.48 |
25.47 |
15.39 |
辽 宁 |
6 |
2.60 |
32.32 |
8.81 |
吉 林 |
7 |
2.15 |
26.31 |
10.49 |
黑龙江 |
8 |
2.14 |
28.46 |
10.87 |
上 海 |
9 |
6.53 |
31.59 |
11.04 |
江 苏 |
10 |
1.47 |
26.43 |
17.23 |
浙 江 |
11 |
1.17 |
23.74 |
17.46 |
安 徽 |
12 |
0.88 |
19.97 |
24.43 |
福 建 |
13 |
1.23 |
16.87 |
15.63 |
江 西 |
14 |
0.99 |
18.84 |
16.22 |
山 东 |
15 |
0.98 |
25.18 |
16.87 |
河 南 |
16 |
0.85 |
26.55 |
16.15 |
河 北 |
17 |
1.57 |
23.16 |
15.79 |
湖 南 |
18 |
1.14 |
22.57 |
12.10 |
广 东 |
19 |
1.34 |
23.04 |
10.45 |
广 西 |
20 |
0.79 |
19.14 |
10.61 |
海 南 |
21 |
1.24 |
22.53 |
13.97 |
四 川 |
22 |
0.96 |
21.65 |
16.24 |
贵 州 |
23 |
0.78 |
14.65 |
24.27 |
云 南 |
24 |
0.81 |
13.85 |
25.44 |
西 藏 |
25 |
0.57 |
3.85 |
44.43 |
陕 西 |
26 |
1.67 |
24.36 |
17.62 |
甘 肃 |
27 |
1.10 |
16.85 |
27.93 |
青 海 |
28 |
1.49 |
17.76 |
27.70 |
宁 夏 |
29 |
1.61 |
20.27 |
22.06 |
新 疆 |
30 |
1.85 |
20.66 |
12.75 |
数据来源:《中国计划生育全书》第886页。
计算样品之间的相似系数,使用最长距离法、重心法和Ward法,将上机计算结果按样品号画出聚类图如下:
0 5 10 15 20 25
根据聚类图把30个样品分为四类能更好地反映我国实际情况。
第一类:北京、天津、山西、辽宁、吉林、黑龙江、上海。其中大多是东部经济、文化较发达的地区。
第二类:安徽、宁夏、青海、甘肃、云南、贵州。其中大多是西部经济、文化发展较慢的地区。
第三类:西藏。经济、文化较落后的地区。
第四类:其它省、直辖市、自治区。经济、文化在全国处于中等水平。
例2 根据信息基础设施的发展状况,对世界20个国家和地区进行分类。
|
country |
call |
movecall |
fee |
computer |
mips |
net |
1 |
美 国 |
631.60 |
161.90 |
0.36 |
403.00 |
26073.00 |
35.34 |
2 |
日 本 |
498.40 |
143.20 |
3.57 |
176.00 |
10223.00 |
6.26 |
3 |
德 国 |
557.60 |
70.60 |
2.18 |
199.00 |
11571.00 |
9.48 |
4 |
瑞 典 |
684.10 |
281.80 |
1.40 |
286.00 |
16660.00 |
29.39 |
5 |
瑞 士 |
644.00 |
93.50 |
1.98 |
234.00 |
13621.00 |
22.68 |
6 |
丹 麦 |
620.30 |
248.60 |
2.56 |
296.00 |
17210.00 |
21.84 |
7 |
新加坡 |
498.40 |
147.50 |
2.50 |
284.00 |
13578.00 |
13.49 |
8 |
中国台湾 |
469.40 |
56.10 |
3.68 |
119.00 |
6911.00 |
1.72 |
9 |
韩 国 |
434.50 |
73.00 |
3.36 |
99.00 |
5795.00 |
1.68 |
10 |
巴 西 |
81.90 |
16.30 |
3.02 |
19.00 |
876.00 |
0.52 |
11 |
智 利 |
138.60 |
8.20 |
1.40 |
31.00 |
1411.00 |
1.28 |
12 |
墨西哥 |
92.20 |
9.80 |
2.61 |
31.00 |
1751.00 |
0.35 |
13 |
俄罗斯 |
174.90 |
5.00 |
5.12 |
24.00 |
1101.00 |
0.48 |
14 |
波 兰 |
169.00 |
6.50 |
3.68 |
40.00 |
1796.00 |
1.45 |
15 |
匈牙利 |
262.20 |
49.40 |
2.66 |
68.00 |
3067.00 |
3.09 |
16 |
马来西亚 |
195.50 |
88.40 |
4.19 |
53.00 |
2734.00 |
1.25 |
17 |
泰 国 |
78.60 |
27.80 |
4.95 |
22.00 |
1662.00 |
0.11 |
18 |
印 度 |
13.60 |
0.30 |
6.28 |
2.00 |
101.00 |
0.01 |
19 |
法 国 |
559.10 |
42.90 |
1.27 |
201.00 |
11702.00 |
4.76 |
20 |
英 国 |
521.10 |
122.50 |
0.98 |
248.00 |
14461.00 |
11.91 |
这里选取了发达国家、新兴工业化国家、拉美国家、亚洲发展中国家、转型国家等不同类型的20个国家作Q型聚类分析。描述信息基础设施的变量主要有六个:(1)Call—每千人拥有电话线数,(2)movecall—每千房居民蜂窝移动电话数,(3)fee—高峰时期每三分钟国际电话的成本,(4)Computer—每千人拥有的计算机数,(5)mips—每千人中计算机功率《每秒百万指令》,(6)net—每千人互联网络户主数。数据摘自《世界竞争力报告—1997》。
由于数据存在量纲和数量级的差别,在聚类之前先进行标准化处理,计算样品之间的距离采用欧氏距离。下面分别用最长距离法、重心法、离差平方和法进行计算,其结果如下表:
最长距离法
重心法
离差平方和法见下页图。
从聚类图看,本例用三种方法聚类结果基本一致,而最长距离法和重心法所得结果更接近一致,结合实际情况分析采用离差平方和法把20个国家分为两类:
第Ⅰ类:巴西、墨西哥、波兰、匈牙利、智利、俄罗斯、泰国、印度、马来西亚。
第Ⅱ类:瑞典、丹麦、美国、中国台湾、韩国、日本、德国、法国、新加坡、英国、瑞士。
其中第Ⅰ类中的国家为转型国家和亚洲、拉美发展中国家,这些国家经济较不发达,基础设施薄弱,属于信息基础设施比较落后的国家;第Ⅱ类中的国家是美、日、欧洲发达国家与新兴工业化国家中国台湾、新加坡、韩国。新兴工业化国家这几十年来发展迅速,努力赶超发达国家,在信息基础设施的发展上已非常接近发达国家,而发达国家中美国、瑞典、丹麦的信息基础设施发展最为良好。
§5.4 系统聚类法的基本性质
1 单调性
设是系统聚类法中第k次并类时的距离,如果,则称并类距离具有单调性。可以证明最短距离法、最长距离法、类平均法、离差平方和法、可变法和可变类平均法都具有单调性,只有重心法和中间距离法不具有单调性。
有单调性画出的聚类图符合系统聚类的思想,先结合的类关系较近,后结合的类关系较远。
2 空间的浓缩或扩张
设两个同阶矩阵D(A)和D(B),如果D(A)的每一个元素不小于D(B)相应的元素,则记为D(A)≥D(B)。特别地如果矩阵D的元素是非负的,则有D≥0。(提醒注意,此处D≥0的含义与非负定阵的含义不同,这个记号仅在本章使用)。
如果D(A) ≥0,D(B) ≥0,D2(A)表示将D(A)的每个元素平方,则。
令
则
若有两个系统聚类法A, B,在第k步距离阵记为,若即,则称A比B使空间扩张或B比A使空间浓缩。用下例距离阵来说明最长距离法比最短距离法扩张)(或张说最短距离法比最长距离法浓缩)。
D(2) D*(2)
D(3) D*(3)
左边是用最短距离法的并类过程所算出的距离阵、、。右边是用最长距离法的并类过程所算的距离阵、、。显然、、,所以说最短距离法比最长距离法浓缩。
今用短、长、重、平、变平、可变、离,分别表示八种方法,它们的平方距离记为D2(短)、D2(长)、D2(中),…。然后以类平均法为基准,其它方法都与它来比较,则不难得出:
(1)D(短,平)≤0
(2)D(长,平)≥0
(3)D(重,平)≤0
(4)
(5)D(离,平)≤0
(6)中间距离法与类平均法的比较没有统一的结论,它可能≥0,也可能≤0。
一般作聚类图时横坐标(并类距离)的范围太小时对区别类的灵敏度就差些,也就是说太浓缩的方法不够灵敏,但太扩张的方法对分类不利。和类平均法相比最短距离法、重心法使空间浓缩。最长距离法、可变类平均法、最差平方和法使空间扩散,而类平均法比较适中,与其它方法相比,既不太浓缩也不太扩张。
还有一些性质,如单调变换不变性、类重复不变性等,就不再介绍了。
§5.5 附 注
1 选代表性指标
用聚类方法分类完之后,如果各类中指标较多,又不想把类分得太多,这时要想从每类中选一个代表性指标该怎么办?一个简单的办法就是计算每类中相关指数的平均值,取其中较大者对应的指数做为该类的代表性指标。
计算公式:
其中k为某一类中变量的个数,为该类内变量对类中其它变量的相关系数的平方。
例如:体重、胸围、大腿围是一类的三个指标,其相关系数表如下:
|
体重 |
胸围 |
大腿围 |
体重 |
1 |
|
|
胸围 |
0.8223 |
1 |
|
大腿围 |
0.7403 |
0.641 |
1 |
计算体重对胸围及大腿围的
胸围对体重及大腿围的
大腿围对体重及胸围的
由于值最大,所以这一类代表性指标取为体重。在身高一定的前提下,一般说来体重重的人其胸围和大腿围的指标都较大些,这是符合常规的。
2. 在本章§5.1中,曾提到聚类分析的内容是很丰富的,本章只介绍国内外常用的八种系统聚类法,除此而外,还有有序样品聚类法、模糊聚类法、动态聚类法等等。为便于读者使用这些方法,这里简单介绍一下这些方法所能解决的是哪类问题。
系统聚类法,被分类的样品是相互独立的,分类时彼此是平等的。而有序样品分类法要求样品按一定的顺序排列的,分类时是不能打乱次序的,即同一类样品必须是互相邻接的。比如要将建国以来国民收入的情况划分几个阶段,此阶段的划分必须依年份的顺序为依据;又如研究天气演变的历史时,样品是按从古到今的年代排列的,年代的次序也是不能打乱的,研究这类样品的分类问题就用有序样品聚类法。
有序样品的分类实质上是找一些分点,将有序样品划分为几个分段,每个分段看作一个类,所以分类也称为分割。显然分点取在不同的位置就可以得到不同的分割。通常寻找最好分割的一个依据就是使各段内部样品之间的差异最小,而各段样品之间的差异较大。有序样品聚类法就是研究这种最优分割法。
模糊聚类法是将模糊集的概念用到聚类分析中所产生的一种聚类方法,它是根据研究对象本身的属性而构造一个模糊矩阵,在此基础上根据一定的隶属度来确定其分类关系。
动态聚类法又称为逐步聚类法,它是先粗糙的进行预分类,然后再逐步调整,直到满意为止。整个聚类过程如下图:
框图的每一部分,均有许多种处理方法,这些方法按框图组合,就得到各种动态聚类方法。
选作题参考
5.1 对世界15个国家社会发展水平作聚类分析。
5.2 对世界16个国家8项经济指标作聚类分析。
5.3 对北京市区县保险公司分类的探讨。
5.4 中国房地产经济分区初步探讨。
5.5 分析我国农村消费区域类型。
5.6 按照城乡居民消费水平,对我国30个省市自治区分类。
5.7 横向比较30个省市自治区工业的经济效益和科技水平。
5.8 对各地区社会总产值的部门构成进行聚类分析。
5.9 对30个省市自治区根据农林牧副渔各生产值的大小进行分类。
5.10 从科研与发展状况这一角度对全国29个省市进行行发类。
5.11 某行政系统所属独立核算工业企业16个行业经济实力强弱的聚类分析。
5.12 聚类分析在行业经济效益分析中的应用。
5.13 对1991年工业总产值进行分类研究。
5.14 对世界各国国民生产总值部门构成进行研究。
5.15 聚类分析在研究各国国际竞争力中的应用。
5.16 运用聚类分析对世界各国财富来源构成的研究(财富来源包括:人力资源、生产资产、自然资本)。
5.17 对全国部分省份的城市设施水平的各项指标作聚类分析。
上述选作题的数据可来自各个方面,为节省篇幅,皆略去,如果读者在作题时遇到数据的困难,建议查阅历年《中国统计年鉴》,它可以帮助读者解决一部分数据的来源。以下各章的选作题数据都可如此处理。
第五章 K-Means算法(有条件聚类)
一.算法简介
k-means算法,也被称为k-平均或k-均值,是一种得到最广泛使用的聚类算法。 它是将各个聚类子集内的所有数据样本的均值作为该聚类的代表点,算法的主要思想是通过迭代过程把数据集划分为不同的类别,使得评价聚类性能的准则函数达到最优,从而使生成的每个聚类内紧凑,类间独立。这一算法不适合处理离散型属性,但是对于连续型具有较好的聚类效果。
二.划分聚类方法对数据集进行聚类时包括如下三个要点:
(1)选定某种距离作为数据样本间的相似性度量
k-means聚类算法不适合处理离散型属性,对连续型属性比较适合。因此在计算数据样本之间的距离时,可以根据实际需要选择欧式距离、曼哈顿距离或者明考斯距离中的一种来作为算法的相似性度量,其中最常用的是欧式距离。下面我给大家具体介绍一下欧式距离。
假设给定的数据集 ,X中的样本用d个描述属性A1,A2…Ad来表示,并且d个描述属性都是连续型属性。数据样本xi=(xi1,xi2,…xid), xj=(xj1,xj2,…xjd)其中,xi1,xi2,…xid和xj1,xj2,…xjd分别是样本xi和xj对应d个描述属性A1,A2,…Ad的具体取值。样本xi和xj之间的相似度通常用它们之间的距离d(xi,xj)来表示,距离越小,样本xi和xj越相似,差异度越小;距离越大,样本xi和xj越不相似,差异度越大。
欧式距离公式如下:
(2)选择评价聚类性能的准则函数
k-means聚类算法使用误差平方和准则函数来评价聚类性能。给定数据集X,其中只包含描述属性,不包含类别属性。假设X包含k个聚类子集X1,X2,…XK;各个聚类子集中的样本数量分别为n1,n2,…,nk;各个聚类子集的均值代表点(也称聚类中心)分别为m1,m2,…,mk。
则误差平方和准则函数公式为:
(3)相似度的计算根据一个簇中对象的平均值来进行。
1) 将所有对象随机分配到k个非空的簇中。
2) 计算每个簇的平均值,并用该平均值代表相应的簇。
3) 根据每个对象与各个簇中心的距离,分配给最近的簇。
4) 然后转2),重新计算每个簇的平均值。这个过程不断重复直到满足某个准则函数才停止。
*****************************************************************
三.算法描述
- 为中心向量c1, c2, …, ck初始化k个种子
- 分组:
a) 将样本分配给距离其最近的中心向量
b) 由这些样本构造不相交( non-overlapping )的聚类
- 确定中心:
a) 用各个聚类的中心向量作为新的中心
- 重复分组和确定中心的步骤,直至算法收敛
四.算法流程
输入:簇的数目k和包含n个对象的数据库。
输出:k个簇,使平方误差准则最小。
算法步骤:
1.为每个聚类确定一个初始聚类中心,这样就有K 个初始聚类中心。
2.将样本集中的样本按照最小距离原则分配到最邻近聚类
3.使用每个聚类中的样本均值作为新的聚类中心。
4.重复步骤2.3步直到聚类中心不再变化。
5.结束,得到K个聚类
O |
X |
Y |
1 |
0 |
2 |
2 |
0 |
0 |
3 |
1.5 |
0 |
4 |
5 |
0 |
5 |
5 |
2 |
五.算法举例
数据对象集合S见表1,作为一个聚类分析的二维样本,要求的簇的数量k=2。
(1)选择 , 为初始的簇中心,即 ,
(2)对剩余的每个对象,根据其与各个簇中心的距离,将它赋给最近的簇。
对 :
显然 ,故将 分配给
对于 :
因为 ,所以将 分配给
对于 :
因为 ,所以将 分配给
更新,得到新簇 和
计算平方误差准则,单个方差为
总体平均方差是:
(3)计算新的簇的中心。
重复(2)和(3),得到O1分配给C1;O2分配给C2,O3分配给C2 ,O4分配给C2,O5分配给C1。更新,得到新簇 和 。
中心为 , 。
单个方差分别为
总体平均误差是:
由上可以看出,第一次迭代后,总体平均误差值52.25~25.65,显著减小。由于在两次迭代中,簇中心不变,所以停止迭代过程,算法停止。
六.k-means算法的性能分析
6.1 k-means算法的优缺点
主要优点:
- 是解决聚类问题的一种经典算法,简单、快速。
- 对处理大数据集,该算法是相对可伸缩和高效率的。因为它的复杂度是0 (n k t ) , 其中, n 是所有对象的数目, k 是簇的数目, t 是迭代的次数。通常k < <n 且t < <n 。
- 当结果簇是密集的,而簇与簇之间区别明显时, 它的效果较好。
主要缺点
- 在簇的平均值被定义的情况下才能使用,这对于处理符号属性的数据不适用。
- 必须事先给出k(要生成的簇的数目),而且对初值敏感,对于不同的初始值,可能会导致不同结果。
- 它对于“躁声”和孤立点数据是敏感的,少量的该类数据能够对平均值产生极大的影响。
针对K-Means算法对于不同的初始值,可能会导致不同结果。解决方法:
1.多设置一些不同的初值,对比最后的运算结果)一直到结果趋于稳定结束,比较耗时和浪费资源
2.很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。这也是 K-means 算法的一个不足。有的算法是通过类的自动合并和分裂,得到较为合理的类型数目 K,例如 ISODATA 算法。
3. 所谓的gapstatistics( Gap统计模型)
6.2 ISODATA算法
6.2.1 ISODATA算法与K-均值算法的比较:
- K-均值算法通常适合于分类数目已知的聚类,而ISODATA算法则更加灵活;
- 从算法角度看, ISODATA算法与K-均值算法相似,聚类中心都是通过样本均值的迭代运算来决定的;
- ISODATA算法加入了一些试探步骤,并且可以结合成人机交互的结构,使其能利用中间结果所取得的经验更好地进行分类。主要是在选代过程中可将一类一分为二,亦可能二类合二为一,即“自组织”,这种算法具有启发式的特点。
6.2.2 ISODATA算法与K-means相比在下列几方面有改进:
1.考虑了类别的合并与分裂,因而有了自我调整类别数的能力。合并主要发生在某一类内样本个数太少的情况,或两类聚类中心之间距离太小的情况。为此设有最小类内样本数限制 ,以及类间中心距离参数 。若出现两类聚类中心距离小于的情况,可考虑将此两类合并。
分裂则主要发生在某一类别的某分量出现类内方差过大的现象,因而宜分裂成两个类别,以维持合理的类内方差。给出一个对类内分量方差的限制参数 ,用以决定是否需要将某一类分裂成两类。
2.由于算法有自我调整的能力,因而需要设置若干个控制用参数,如聚类数期望值K、每次迭代允许合并的最大聚类对数L、及允许迭代次数I等。
6.2.3 ISODATA算法基本步骤和思路
ü 选择某些初始值。可选不同的参数指标,也可在迭代过程中人为修改,以将N个模式样本按指标分配到各个聚类中心中去。
ü 计算各类中诸样本的距离指标函数。
ü (3)~(5)按给定的要求,将前一次获得的聚类集进行分裂和合并处理((4)为分裂处理,(5)为合并处理),从而获得新的聚类中心。
ü 重新进行迭代运算,计算各项指标,判断聚类结果是否符合要求。经过多次迭代后,若结果收敛,则运算结束。
6.3 k-means算法初始中心的选取对算法的影响
棋盘格数据集(Checkerboard data set)仅使用其中486个正类数据,并将数据变换到[-1,1]之间,分布情况如下图所示:
原始数据
初始聚类中心均在中心附近
初始聚类中心在平面内随机选取
七.k-means算法的改进方法
7.1 k-means算法的改进方法——k-mode 算法
uk-modes 算法:实现对离散数据的快速聚类,保留了k-means算法的效率同时将k-means的应用范围扩大到离散数据。
uK-modes算法是按照k-means算法的核心内容进行修改,针对分类属性的度量和更新质心的问题而改进。
具体如下:
1.度量记录之间的相关性D的计算公式是比较两记录之间,属性相同为0,不同为1.并所有相加。因此D越大,即他的不相关程度越强(与欧式距离代表的意义是一样的);
2.更新modes,使用一个簇的每个属性出现频率最大的那个属性值作为代表簇的属性值。
7.2 k-means算法的改进方法——k-prototype算法
u k-Prototype算法:可以对离散与数值属性两种混合的数据进行聚类,在k-prototype中定义了一个对数值与离散属性都计算的相异性度量标准。
u K-Prototype算法是结合K-Means与K-modes算法,针对混合属性的,解决2个核心问题如下:
1.度量具有混合属性的方法是,数值属性采用K-means方法得到P1,分类属性采用K-modes方法P2,那么D=P1+a*P2,a是权重,如果觉得分类属性重要,则增加a,否则减少a,a=0时即只有数值属性
2.更新一个簇的中心的方法,方法是结合K-Means与K-modes的更新方法。
7.3 k-means算法的改进方法——k-中心点算法
k-中心点算法:k -means算法对于孤立点是敏感的。为了解决这个问题,不采用簇中的平均值作为参照点,可以选用簇中位置最中心的对象,即中心点作为参照点。这样划分方法仍然是基于最小化所有对象与其参照点之间的相异度之和的原则来执行的。
八.K-means算法在图像分割上的简单应用
例1:
图片:一只遥望大海的小狗;此图为100 x 100像素的JPG图片,每个像素可以表示为三维向量(分别对应JPEG图像中的红色、绿色和蓝色通道);将图片分割为合适的背景区域(三个)和前景区域(小狗);
1.使用K-means算法对图像进行分割。
分割后的效果(注:最大迭代次数为20次,需运行多次才有可能得到较好的效果。)
例2:
注:聚类中心个数为5,最大迭代次数为10。
聚类中心个数为3
朴素贝叶斯分类(Naive Bayesian classification)
来源:算法杂货铺
0、写在前面的话
我个人一直很喜欢算法一类的东西,在我看来算法是人类智慧的精华,其中蕴含着无与伦比的美感。而每次将学过的算法应用到实际中,并解决了实际问题后,那种快感更是我在其它地方体会不到的。
一直想写关于算法的博文,也曾写过零散的两篇,但也许是相比于工程性文章来说太小众,并没有引起大家的兴趣。最近面临毕业找工作,为了能给自己增加筹码,决定再次复习算法方面的知识,我决定趁这个机会,写一系列关于算法的文章。这样做,主要是为了加强自己复习的效果,我想,如果能将复习的东西用自己的理解写成文章,势必比单纯的读书做题掌握的更牢固,也更能触发自己的思考。如果能有感兴趣的朋友从中有所收获,那自然更好。
这个系列我将其命名为“算法杂货铺”,其原因就是这些文章一大特征就是“杂”,我不会专门讨论堆栈、链表、二叉树、查找、排序等任何一本数据结构教科书都会讲的基础内容,我会从一个“专题”出发,如概率算法、分类算法、NP问题、遗传算法等,然后做一个引申,可能会涉及到算法与数据结构、离散数学、概率论、统计学、运筹学、数据挖掘、形式语言与自动机等诸多方面,因此其内容结构就像一个杂货铺。当然,我会竭尽所能,尽量使内容“杂而不乱”。
1.1、摘要
贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本文作为分类算法的第一篇,将首先介绍分类问题,对分类问题进行一个正式的定义。然后,介绍贝叶斯分类算法的基础——贝叶斯定理。最后,通过实例讨论贝叶斯分类中最简单的一种:朴素贝叶斯分类。
1.2、分类问题综述
对于分类问题,其实谁都不会陌生,说我们每个人每天都在执行分类操作一点都不夸张,只是我们没有意识到罢了。例如,当你看到一个陌生人,你的脑子下意识判断TA是男是女;你可能经常会走在路上对身旁的朋友说“这个人一看就很有钱、那边有个非主流”之类的话,其实这就是一种分类操作。
从数学角度来说,分类问题可做如下定义:
已知集合:和,确定映射规则,使得任意有且仅有一个使得成立。(不考虑模糊数学里的模糊集情况)
其中C叫做类别集合,其中每一个元素是一个类别,而I叫做项集合,其中每一个元素是一个待分类项,f叫做分类器。分类算法的任务就是构造分类器f。
这里要着重强调,分类问题往往采用经验性方法构造映射规则,即一般情况下的分类问题缺少足够的信息来构造100%正确的映射规则,而是通过对经验数据的学习从而实现一定概率意义上正确的分类,因此所训练出的分类器并不是一定能将每个待分类项准确映射到其分类,分类器的质量与分类器构造方法、待分类数据的特性以及训练样本数量等诸多因素有关。
例如,医生对病人进行诊断就是一个典型的分类过程,任何一个医生都无法直接看到病人的病情,只能观察病人表现出的症状和各种化验检测数据来推断病情,这时医生就好比一个分类器,而这个医生诊断的准确率,与他当初受到的教育方式(构造方法)、病人的症状是否突出(待分类数据的特性)以及医生的经验多少(训练样本数量)都有密切关系。
1.3、贝叶斯分类的基础——贝叶斯定理
每次提到贝叶斯定理,我心中的崇敬之情都油然而生,倒不是因为这个定理多高深,而是因为它特别有用。这个定理解决了现实生活里经常遇到的问题:已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A)。这里先解释什么是条件概率:
表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。其基本求解公式为:。
贝叶斯定理之所以有用,是因为我们在生活中经常遇到这种情况:我们可以很容易直接得出P(A|B),P(B|A)则很难直接得出,但我们更关心P(B|A),贝叶斯定理就为我们打通从P(A|B)获得P(B|A)的道路。
下面不加证明地直接给出贝叶斯定理:
1.4、朴素贝叶斯分类
1.4.1、朴素贝叶斯分类的原理与流程
朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴素,朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。通俗来说,就好比这么个道理,你在街上看到一个黑人,我问你你猜这哥们哪里来的,你十有八九猜非洲。为什么呢?因为黑人中非洲人的比率最高,当然人家也可能是美洲人或亚洲人,但在没有其它可用信息下,我们会选择条件概率最大的类别,这就是朴素贝叶斯的思想基础。
朴素贝叶斯分类的正式定义如下:
1、设为一个待分类项,而每个a为x的一个特征属性。
2、有类别集合。
3、计算。
4、如果,则。
那么现在的关键就是如何计算第3步中的各个条件概率。我们可以这么做:
1、找到一个已知分类的待分类项集合,这个集合叫做训练样本集。
2、统计得到在各类别下各个特征属性的条件概率估计。即。
3、如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:
因为分母对于所有类别为常数,因为我们只要将分子最大化皆可。又因为各特征属性是条件独立的,所以有:
根据上述分析,朴素贝叶斯分类的流程可以由下图表示(暂时不考虑验证):
可以看到,整个朴素贝叶斯分类分为三个阶段:
第一阶段——准备工作阶段,这个阶段的任务是为朴素贝叶斯分类做必要的准备,主要工作是根据具体情况确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。
第二阶段——分类器训练阶段,这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。
第三阶段——应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。
1.4.2、估计类别下特征属性划分的条件概率及Laplace校准
这一节讨论P(a|y)的估计。
由上文看出,计算各个划分的条件概率P(a|y)是朴素贝叶斯分类的关键性步骤,当特征属性为离散值时,只要很方便的统计训练样本中各个划分在每个类别中出现的频率即可用来估计P(a|y),下面重点讨论特征属性是连续值的情况。
当特征属性为连续值时,通常假定其值服从高斯分布(也称正态分布)。即:
而
因此只要计算出训练样本中各个类别中此特征项划分的各均值和标准差,代入上述公式即可得到需要的估计值。均值与标准差的计算在此不再赘述。
另一个需要讨论的问题就是当P(a|y)=0怎么办,当某个类别下某个特征项划分没有出现时,就是产生这种现象,这会令分类器质量大大降低。为了解决这个问题,我们引入Laplace校准,它的思想非常简单,就是对没类别下所有划分的计数加1,这样如果训练样本集数量充分大时,并不会对结果产生影响,并且解决了上述频率为0的尴尬局面。
1.4.3、朴素贝叶斯分类实例:检测SNS社区中不真实账号
下面讨论一个使用朴素贝叶斯分类解决实际问题的例子,为了简单起见,对例子中的数据做了适当的简化。
这个问题是这样的,对于SNS社区来说,不真实账号(使用虚假身份或用户的小号)是一个普遍存在的问题,作为SNS社区的运营商,希望可以检测出这些不真实账号,从而在一些运营分析报告中避免这些账号的干扰,亦可以加强对SNS社区的了解与监管。
如果通过纯人工检测,需要耗费大量的人力,效率也十分低下,如能引入自动检测机制,必将大大提升工作效率。这个问题说白了,就是要将社区中所有账号在真实账号和不真实账号两个类别上进行分类,下面我们一步一步实现这个过程。
首先设C=0表示真实账号,C=1表示不真实账号。
1、确定特征属性及划分
这一步要找出可以帮助我们区分真实账号与不真实账号的特征属性,在实际应用中,特征属性的数量是很多的,划分也会比较细致,但这里为了简单起见,我们用少量的特征属性以及较粗的划分,并对数据做了修改。
我们选择三个特征属性:a1:日志数量/注册天数,a2:好友数量/注册天数,a3:是否使用真实头像。在SNS社区中这三项都是可以直接从数据库里得到或计算出来的。
下面给出划分:a1:{a<=0.05, 0.05<a<0.2, a>=0.2},a1:{a<=0.1, 0.1<a<0.8, a>=0.8},a3:{a=0(不是),a=1(是)}。
2、获取训练样本
这里使用运维人员曾经人工检测过的1万个账号作为训练样本。
3、计算训练样本中每个类别的频率
用训练样本中真实账号和不真实账号数量分别除以一万,得到:
4、计算每个类别条件下各个特征属性划分的频率
5、使用分类器进行鉴别
下面我们使用上面训练得到的分类器鉴别一个账号,这个账号使用非真实头像,日志数量与注册天数的比率为0.1,好友数与注册天数的比率为0.2。
可以看到,虽然这个用户没有使用真实头像,但是通过分类器的鉴别,更倾向于将此账号归入真实账号类别。这个例子也展示了当特征属性充分多时,朴素贝叶斯分类对个别属性的抗干扰性。
1.5、分类器的评价
虽然后续还会提到其它分类算法,不过这里我想先提一下如何评价分类器的质量。
首先要定义,分类器的正确率指分类器正确分类的项目占所有被分类项目的比率。
通常使用回归测试来评估分类器的准确率,最简单的方法是用构造完成的分类器对训练数据进行分类,然后根据结果给出正确率评估。但这不是一个好方法,因为使用训练数据作为检测数据有可能因为过分拟合而导致结果过于乐观,所以一种更好的方法是在构造初期将训练数据一分为二,用一部分构造分类器,然后用另一部分检测分类器的准确率。
朴素贝叶斯分类器的应用
作者: 阮一峰
日期: 2013年12月16日
生活中很多场合需要用到分类,比如新闻分类、病人分类等等。
本文介绍朴素贝叶斯分类器(Naive Bayes classifier),它是一种简单有效的常用分类算法。
一、病人分类的例子
让我从一个例子开始讲起,你会看到贝叶斯分类器很好懂,一点都不难。
某个医院早上收了六个门诊病人,如下表。
症状 职业 疾病
打喷嚏 护士 感冒
打喷嚏 农夫 过敏
头痛 建筑工人 脑震荡
头痛 建筑工人 感冒
打喷嚏 教师 感冒
头痛 教师 脑震荡
现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大?
根据贝叶斯定理:
P(A|B) = P(B|A) P(A) / P(B)
可得
P(感冒|打喷嚏x建筑工人)
= P(打喷嚏x建筑工人|感冒) x P(感冒)
/ P(打喷嚏x建筑工人)
假定"打喷嚏"和"建筑工人"这两个特征是独立的,因此,上面的等式就变成了
P(感冒|打喷嚏x建筑工人)
= P(打喷嚏|感冒) x P(建筑工人|感冒) x P(感冒)
/ P(打喷嚏)
x P(建筑工人)
这是可以计算的。
P(感冒|打喷嚏x建筑工人)
= 0.66 x 0.33 x 0.5 / 0.5 x 0.33
= 0.66
因此,这个打喷嚏的建筑工人,有66%的概率是得了感冒。同理,可以计算这个病人患上过敏或脑震荡的概率。比较这几个概率,就可以知道他最可能得什么病。
这就是贝叶斯分类器的基本方法:在统计资料的基础上,依据某些特征,计算各个类别的概率,从而实现分类。
二、朴素贝叶斯分类器的公式
假设某个体有n项特征(Feature),分别为F1、F2、...、Fn。现有m个类别(Category),分别为C1、C2、...、Cm。贝叶斯分类器就是计算出概率最大的那个分类,也就是求下面这个算式的最大值:
P(C|F1F2...Fn)
= P(F1F2...Fn|C)P(C) / P(F1F2...Fn)
由于 P(F1F2...Fn) 对于所有的类别都是相同的,可以省略,问题就变成了求
P(F1F2...Fn|C)P(C)
的最大值。
朴素贝叶斯分类器则是更进一步,假设所有特征都彼此独立,因此
P(F1F2...Fn|C)P(C)
= P(F1|C)P(F2|C) ... P(Fn|C)P(C)
上式等号右边的每一项,都可以从统计资料中得到,由此就可以计算出每个类别对应的概率,从而找出最大概率的那个类。
虽然"所有特征彼此独立"这个假设,在现实中不太可能成立,但是它可以大大简化计算,而且有研究表明对分类结果的准确性影响不大。
下面再通过两个例子,来看如何使用朴素贝叶斯分类器。
三、账号分类的例子
本例摘自张洋的《算法杂货铺----分类算法之朴素贝叶斯分类》。
根据某社区网站的抽样统计,该站10000个账号中有89%为真实账号(设为C0),11%为虚假账号(设为C1)。
C0 = 0.89
C1 = 0.11
接下来,就要用统计资料判断一个账号的真实性。假定某一个账号有以下三个特征:
F1: 日志数量/注册天数
F2: 好友数量/注册天数
F3: 是否使用真实头像(真实头像为1,非真实头像为0)
F1 = 0.1
F2 = 0.2
F3 = 0
请问该账号是真实账号还是虚假账号?
方法是使用朴素贝叶斯分类器,计算下面这个计算式的值。
P(F1|C)P(F2|C)P(F3|C)P(C)
虽然上面这些值可以从统计资料得到,但是这里有一个问题:F1和F2是连续变量,不适宜按照某个特定值计算概率。
一个技巧是将连续值变为离散值,计算区间的概率。比如将F1分解成[0, 0.05]、(0.05, 0.2)、[0.2, +∞]三个区间,然后计算每个区间的概率。在我们这个例子中,F1等于0.1,落在第二个区间,所以计算的时候,就使用第二个区间的发生概率。
根据统计资料,可得:
P(F1|C0) = 0.5, P(F1|C1) = 0.1
P(F2|C0) = 0.7, P(F2|C1) = 0.2
P(F3|C0) = 0.2, P(F3|C1) = 0.9
因此,
P(F1|C0) P(F2|C0) P(F3|C0) P(C0)
= 0.5 x 0.7 x 0.2 x 0.89
= 0.0623
P(F1|C1) P(F2|C1) P(F3|C1) P(C1)
= 0.1 x 0.2 x 0.9 x 0.11
= 0.00198
可以看到,虽然这个用户没有使用真实头像,但是他是真实账号的概率,比虚假账号高出30多倍,因此判断这个账号为真。
四、性别分类的例子
本例摘自维基百科,关于处理连续变量的另一种方法。
下面是一组人类身体特征的统计资料。
性别 身高(英尺) 体重(磅) 脚掌(英寸)
男
6 180 12
男
5.92 190 11
男
5.58 170 12
男
5.92 165 10
女
5 100 6
女
5.5 150 8
女
5.42 130 7
女
5.75 150 9
已知某人身高6英尺、体重130磅,脚掌8英寸,请问该人是男是女?
根据朴素贝叶斯分类器,计算下面这个式子的值。
P(身高|性别) x P(体重|性别) x P(脚掌|性别) x P(性别)
这里的困难在于,由于身高、体重、脚掌都是连续变量,不能采用离散变量的方法计算概率。而且由于样本太少,所以也无法分成区间计算。怎么办?
这时,可以假设男性和女性的身高、体重、脚掌都是正态分布,通过样本计算出均值和方差,也就是得到正态分布的密度函数。有了密度函数,就可以把值代入,算出某一点的密度函数的值。
比如,男性的身高是均值5.855、方差0.035的正态分布。所以,男性的身高为6英尺的概率的相对值等于1.5789(大于1并没有关系,因为这里是密度函数的值,只用来反映各个值的相对可能性)。
有了这些数据以后,就可以计算性别的分类了。
P(身高=6|男) x P(体重=130|男) x P(脚掌=8|男) x P(男)
= 6.1984 x e-9
P(身高=6|女) x P(体重=130|女) x P(脚掌=8|女) x P(女)
= 5.3778 x e-4
可以看到,女性的概率比男性要高出将近10000倍,所以判断该人为女性。
决策树算法:ID3和C4.5
一、ID3的基本概念如下:
- 决策树中每一个非叶结点对应着一个非类别属性,树枝代表这个属性的值。一个叶结点代表从树根到叶结点之间的路径对应的记录所属的类别属性值。
- 每一个非叶结点都将与属性中具有最大信息量的非类别属性相关联。
- 采用信息增益来选择能够最好地将样本分类的属性。
二、信息增益
从信息论知识中我们直到,期望信息越小,信息增益越大,从而纯度越高。所以ID3算法的核心思想就是以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。下面先定义几个要用到的概念。
设D为用类别对训练元组进行的划分,则D的熵(entropy)表示为:
其中pi表示第i个类别在整个训练元组中出现的概率,可以用属于此类别元素的数量除以训练元组元素总数量作为估计。熵的实际意义表示是D中元组的类标号所需要的平均信息量。
现在我们假设将训练元组D按属性A进行划分,则A对D划分的期望信息为:
而信息增益即为两者的差值:
ID3算法就是在每次需要分裂时,计算每个属性的增益率,然后选择增益率最大的属性进行分裂。下面我们继续用SNS社区中不真实账号检测的例子说明如何使用ID3算法构造决策树。为了简单起见,我们假设训练集合包含10个元素:
其中s、m和l分别表示小、中和大。
设L、F、H和R表示日志密度、好友密度、是否使用真实头像和账号是否真实,下面计算各属性的信息增益。
因此日志密度的信息增益是0.276。
用同样方法得到H和F的信息增益分别为0.033和0.553。
因为F具有最大的信息增益,所以第一次分裂选择F为分裂属性,分裂后的结果如下图表示:
在上图的基础上,再递归使用这个方法计算子节点的分裂属性,最终就可以得到整个决策树。
上面为了简便,将特征属性离散化了,其实日志密度和好友密度都是连续的属性。对于特征属性为连续值,可以如此使用ID3算法:
先将D中元素按照特征属性排序,则每两个相邻元素的中间点可以看做潜在分裂点,从第一个潜在分裂点开始,分裂D并计算两个集合的期望信息,具有最小期望信息的点称为这个属性的最佳分裂点,其信息期望作为此属性的信息期望。
案例:
SNS社区中不真实账号检测,使用ID3算法构造决策树。为了简单起见,假设训练集合包含10个样本:
日志密度/L |
好友密度/F |
真实头像/H |
真实账户/R |
S |
S |
NO |
NO |
S |
L |
YES |
YES |
L |
M |
YES |
YES |
M |
M |
YES |
YES |
L |
M |
YES |
YES |
M |
L |
NO |
YES |
M |
S |
NO |
NO |
L |
M |
NO |
YES |
M |
S |
NO |
YES |
S |
S |
YES |
NO |
其中S、M和L分别表示小、中和大。
设L、F、H和R表示日志密度、好友密度、是否使用真实头像和账号是否真实试用ID3算法构造决策树。
解:设D为10个样本集,其中决策属性(真实账户/R)有7个YES、3个NO。决策属性信息熵为:
Entropy(D) = - [(7/10) Log2 (7/10) + (3/10) Log2 (3/10)] = 0.8813
Notice entropy is 0 if all members of D belong to the same class (the data is perfectly classified). The range of entropy is 0 ("perfectly classified") to 1 ("totally random")
日志密度属性期望信息熵为:
Entropy(D, 日志密度) = -0.3*(0* Log2 (0)+1* Log2 (1) ) – 0.4*(0.25* Log2 (0.25)+0.75* Log2 (0.75) ) – 0.3*(0.6667* Log2 (0.6667)+0.3333* Log2 (0.3333) ) = 0.6
好友密度属性期望信息熵为:
Entropy(D, 好友密度) = -0.2*(0* Log2 (0)+1* Log2 (1) ) – 0.4*(0* Log2 (0)+1* Log2 (1) ) – 0.4*(0.75* Log2 (0.75)+0.25* Log2 (0.25) ) = 0.3245
真实头像属性期望信息熵为:
Entropy(D, 真实头像) = -0.5*(0.4* Log2 (0.4)+0.6* Log2 (0.6) ) – 0.5*(0.2* Log2 (0.2)+0.8* Log2 (0.8) ) = 0.8464
日志密度信息增益: Entropy(D) - Entropy(D, 日志密度) = 0.8813 – 0.6 = 0.2813
好友密度信息增益: Entropy(D) - Entropy(D, 好友密度) = 0.8813 – 0.3245 = 0.5568
真实头像信息增益: Entropy(D) - Entropy(D, 真实头像) = 0.8813 – 0.8464 = 0.0349
因为好友密度(F)具有最大的信息增益,所以第一次分裂选择好友密度F为分裂属性,分裂后的结果如下图表示:
训练样本分解如下:
好友密度F-L属性(树叶,结束划分) |
|||
日志密度/L |
好友密度/F |
真实头像/H |
真实账户/R |
S |
L |
YES |
YES |
M |
L |
NO |
YES |
好友密度F-S属性(决策属性信息不纯,继续划分) |
|||
日志密度/L |
好友密度/F |
真实头像/H |
真实账户/R |
S |
S |
NO |
NO |
M |
S |
NO |
NO |
M |
S |
NO |
YES |
S |
S |
YES |
NO |
好友密度F-M属性(树叶,结束划分) |
|||
日志密度/L |
好友密度/F |
真实头像/H |
真实账户/R |
L |
M |
YES |
YES |
M |
M |
YES |
YES |
L |
M |
YES |
YES |
L |
M |
NO |
YES |
待划分决策表为:
日志密度/L |
真实头像/H |
真实账户/R |
S |
NO |
NO |
M |
NO |
NO |
M |
NO |
YES |
S |
YES |
NO |
设D1为4个样本集,其中决策属性(真实账户/R)有1个YES、3个NO。决策属性信息熵为:
Entropy(D1) = - [(1/4) Log2 (1/4) + (3/4) Log2 (3/4)] = 0.8113
日志密度属性期望信息熵为:
Entropy(D1, 日志密度) = -0.5*(0.5* Log2 (0.5)+0.5* Log2 (0.5) ) – 0.5*(1* Log2 (1)+0* Log2 (0) ) = 0.5
真实头像属性期望信息熵为:
Entropy(D1, 真实头像) = -0.75*(0.6667* Log2 (0.6667)+0.3333* Log2 (0.3333) ) – 0.25*(1* Log2 (1)+0* Log2 (0) ) = 0.6887
日志密度信息增益: Entropy(D1) - Entropy(D1, 日志密度) = 0.8113 – 0.5 = 0.3113
真实头像信息增益: Entropy(D1) - Entropy(D1, 真实头像) = 0.8113 – 0.6887 = 0.0613
因为好友密度(F)具有最大的信息增益,所以第二次分裂选择日志密度L为分裂属性,分裂后的结果如下图表示:
L S M
{YES} {YES}
M S
{ ? } {NO}
学习样本:{L, M, NO, ?}, {S, L, YES, ?}, {L, S, NO, ?},{M,S, YES, ?}, {S, S, NO, ?}
决策结果:{L, M, NO, YES},{S, L,YES, YES},{L, S, NO, X},{M,S, YES, ?}, {S, S, NO, NO}
练习:
现有样本集如下::
Day |
Outlook |
Temperature |
Humidity |
Wind |
Play ball |
D1 |
Sunny |
Hot |
High |
Weak |
No |
D2 |
Sunny |
Hot |
High |
Strong |
No |
D3 |
Overcast |
Hot |
High |
Weak |
Yes |
D4 |
Rain |
Mild |
High |
Weak |
Yes |
D5 |
Rain |
Cool |
Normal |
Weak |
Yes |
D6 |
Rain |
Cool |
Normal |
Strong |
No |
D7 |
Overcast |
Cool |
Normal |
Strong |
Yes |
D8 |
Sunny |
Mild |
High |
Weak |
No |
D9 |
Sunny |
Cool |
Normal |
Weak |
Yes |
D10 |
Rain |
Mild |
Normal |
Weak |
Yes |
D11 |
Sunny |
Mild |
Normal |
Strong |
Yes |
D12 |
Overcast |
Mild |
High |
Strong |
Yes |
D13 |
Overcast |
Hot |
Normal |
Weak |
Yes |
D14 |
Rain |
Mild |
High |
Strong |
No |
试用ID3算法构建决策树。如果某天具体情况为(学习样本):{D, Sunny, Cool, High, Strong, ?},试用决策树判断该天是否可以打球。
三、C4.5算法
ID3算法存在一个问题,就是偏向于多值属性,例如,如果存在唯一标识属性ID,则ID3会选择它作为分裂属性,这样虽然使得划分充分纯净,但这种划分对分类几乎毫无用处。ID3的后继算法C4.5使用增益率(gain ratio)的信息增益扩充,试图克服这个偏倚。
C4.5算法首先定义了“分裂信息”,其定义可以表示成:
其中各符号意义与ID3算法相同,然后,增益率被定义为:
C4.5选择具有最大增益率的属性作为分裂属性,其具体应用与ID3类似,不再赘述。
四、关于决策树的几点补充说明
4.1、如果属性用完了怎么办
在决策树构造过程中可能会出现这种情况:所有属性都作为分裂属性用光了,但有的子集还不是纯净集,即集合内的元素不属于同一类别。在这种情况下,由于没有更多信息可以使用了,一般对这些子集进行“多数表决”,即使用此子集中出现次数最多的类别作为此节点类别,然后将此节点作为叶子节点。
4.2、关于剪枝
在实际构造决策树时,通常要进行剪枝,这时为了处理由于数据中的噪声和离群点导致的过分拟合问题。剪枝有两种:
先剪枝——在构造过程中,当某个节点满足剪枝条件,则直接停止此分支的构造。
后剪枝——先构造完成完整的决策树,再通过某些条件遍历树进行剪枝。
C4.5算法的分析和实现
2014-05-08 17:30 1484人阅读 评论(0) 收藏 举报
基于决策树技术的数据挖掘方法分析和研究
——C4.5算法的分析和实现
摘要
大数据时代已经到来,对数据的处理越来越受到人们的关注,人们迫切需要海量数据背后的重要信息和知识,发现数据中存在的关系和规则,获取有用的知识,并且根据现有数据对未来的发展做出预测。决策树分类算法C4.5算法是数据挖掘中最常用、最经典的分类算法,能够以图形化的形式表现挖掘的结果,从而方便于使用者快速做出决定或预测。决策树实际在各行业应用非常广泛,如客户资源管理(CRM)系统等。本报告从决策树的各个方面对决策树进行分析,理解C4.5算法相对于ID3算法的改进,并对C4.5算法加以实现。同时也指出C4.5算法还存在不足。
关键字:数据挖掘;决策树算法;C4.5算法
一、具体应用场景和意义
决策树(Decision Tree)是用于分类和预测的主要技术,它着眼于从一组无规则的事例推理出决策树表示形式的分类规则,采用自顶向下的递归方式,在决策树的内部节点进行属性值的比较,并根据不同属性判断从该节点向下分支,在决策树的叶节点得到结论。因此,从根节点到叶节点就对应着一条合理规则,整棵树就对应着一组表达式规则。基于决策树算法的一个最大的优点是它在学习过程中不需要使用者了解很多背景知识,只要训练事例能够用属性即结论的方式表达出来,就能使用该算法进行学习。
决策树算法在很多方面都有应用,如决策树算法在医学、制造和生产、金融分析、天文学、遥感影像分类和分子生物学、机器学习和知识发现等领域得到了广泛应用。
决策树技术是一种对海量数据集进行分类的非常有效的方法。通过构造决策树模型,提取有价值的分类规则,帮助决策者做出准确的预测已经应用在很多领域。决策树算法是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后对新数据进行分析。本质上决策树是通过一系列规则对数据进行分类的过程。
决策树的典型算法有ID3、C4.5和CART等,基于决策树的分类模型有如下几个特点:(1)决策树方法结构简单,便于理解;(2)决策树模型效率高,对训练集较大的情况较为适合;(3)决策树方法通常不需要接受训练集数据外的知识;(4)决策树方法具有较高的分类精确度。
本报告主要通过分析C4.5算法来研究决策树算法。在决策树算法中,最常用的、最经典的是C4.5算法,它在决策树算法中的主要优点是:形象直观。该算法通过两个步骤来建立决策树:树的生成阶段和树的剪枝阶段。该算法主要基于信息论中的熵理论。熵在系统学上是表示事物的无序度,是系统混乱程度的统计量。C4.5基于生成的决策树中节点所含的信息熵最小的原理。它把信息增益率作为属性选择的度量标准,可以得出很容易理解的决策规则。
二、现状分析
决策树技术是迄今为止发展最为成熟的一种概念学习方法。它最早产生于二十世纪60年代,是由Hunt等人研究人类概念建模时建立的学习系统(CLS,Concept Learning System),到70年代末,J Ross Quinlan提出ID3算法,此算法的目的在于减少树的深度。但是忽略了叶子数目的研究。1975年和1984年,分别有人提出CHAID(Chi-squared Automatic Interaction Detection)和CART(Classification and Regression Tree,亦称BFOS)算法。1986年,J.C.Schlimmer提出ID4算法。1988年,P.E.Utgoff提出ID5R算法。1993年,Quinlan本人以ID3算法为基础研究出C4.5/C5.0算法,C4.5算法在ID3算法的基础上进行了改进,对于预测变量的缺值处理、剪枝技术、派生规则等方面作了较大的改进,既适合于分类问题,又适合于回归问题。
决策树算法的优点如下:(1)分类精度高;(2)生成的模式简单;(3)对噪声数据有很好的健壮性。因而是目前应用最为广泛的归纳推理算法之一,在数据挖掘中收到研究者的广泛关注。
数据挖掘需要选择复杂度低的算法和并行高效的策略,复杂度低的算法包括尽量把全局最优问题转化成局部最优的问题和近似线性或尽量低阶的多项式复杂度算法等,而高效并行的策略包括需要有高超的递归改为循环的技巧和尽量避免使用全局信息等。
现在研究者们还在继续研究改进的决策树算法,对于C4.5算法研究人员们从不同的角度对其进行了相应的改进,其中有针对C4.5算法处理连续型属性比较耗时的改进,利用数学上的等价无穷小提高信息增益率的计算效率等等方面。本报告时针对C4.5算法本身进行的分析和算法实现,同时会考虑进一步的深入学习。
三、技术挑战分析与解决方案
决策树构造的输入是一组带有类别标记的例子,构造的结果是一棵二叉树或多叉树。二叉树的内部节点(非叶子节点)一般表示为一个逻辑判断,如形式为a=的逻辑判断,其中a是属性,是该属性的所有取值:树的边是逻辑判断的分支结果。多叉树(ID3)的内部结点是属性,边是该属性的所有取值,有几个属性值就有几条边。树的叶子节点都是类别标记。
由于数据表示不当、有噪声或者由于决策树生成时产生重复的子树等原因,都会造成产生的决策树过大。因此,简化决策树是一个不可缺少的环节。寻找一棵最优决策树,主要应解决以下3个最优化问题:①生成最少数目的叶子节点;②生成的每个叶子节点的深度最小;③生成的决策树叶子节点最少且每个叶子节点的深度最小。
ID3算法是一种经典的决策树算法,它从根节点开始,根节点被赋予一个最好的属性。随后对该属性的每个取值都生成相应的分支,在每个分支上又生成新的节点。对于最好的属性的选择标准,ID3采用基于信息熵定义的信息增益来选择内节点的测试属性,熵(Entropy)刻画了任意样本集的纯度。
ID3算法存在的缺点:(1)ID3算法在选择根节点和内部节点中的分支属性时,采用信息增益作为评价标准。信息增益的缺点是倾向于选择取值较多是属性,在有些情况下这类属性可能不会提供太多有价值的信息。(2)ID3算法只能对描述属性为离散型属性的数据集构造决策树。
ID3算法的局限是它的属性只能取离散值,为了使决策树能应用与连续属性值,Quinlan给出了ID3的一个扩展算法,即C4.5算法。C4.5算法是ID3的改进,其中属性的选择依据同ID3。它对于实值变量的处理与接下来论述的CART算法一致,采用多重分支。C4.5算法能实现基于规则的剪枝。因为算法生成的每个叶子都和一条规则相关联,这个规则可以从树的根节点直到叶子节点的路径上以逻辑合取式的形式读出。
决策树的分类过程就是把训练集划分为越来越小的子集的过程。理想的结果是决策树的叶子节点的样本都有同类标记。如果是这样,显然决策树的分支应该停止了,因为所以的类别已经被分开了。
C4.5算法之所以是最常用的决策树算法,是因为它继承了ID3算法的所有优点并对ID3算的进行了改进和补充。C4.5算法采用信息增益率作为选择分支属性的标准,克服了ID3算法中信息增益选择属性时偏向选择取值多的属性的不足,并能够完成对连续属性离散化是处理,还能够对不完整数据进行处理。C4.5算法属于基于信息论(Information Theory)的方法,它是以信息论为基础,以信息熵和信息增益度为衡量标准,从而实现对数据的归纳分类。
C4.5算法主要做出了以下方面的改进:
(1) 用信息增益率来选择属性
克服了用信息增益来选择属性时偏向选择值多的属性的不足。信息增益率定义为:
其中,Grain(S,A)与ID3算法中的信息增益相同,而分裂信息SplitInfo(S, A)代表了按照属性A分裂样本集S的广度和均匀性。
其中,S1到Sc是c个不同值的属性A分割S而形成的c个样本子集。如按照属性A把S集(含30个用例)分成了10个用例和20个用例两个集合,则SplitInfo(S,A)=-1/3*log(1/3)-2/3*log(2/3)。
(2) 可以处理连续数值型属性
C4.5算法既可以处理离散型描述属性,也可以处理连续性描述属性。在选择某节点上的分枝属性时,对于离散型描述属性,C4.5算法的处理方法与ID3相同,按照该属性本身的取值个数进行计算;对于某个连续性描述属性Ac,假设在某个节点上的数据集的样本数量为total,C4.5算法将作以下处理:
l 将该节点上的所有数据样本按照连续型描述的属性的具体数值,由小到大进行排序,得到属性值的取值序列{A1c,A2c,……Atotalc}。
l 在取值序列生成total-1个分割点。第i(0<i<total)个分割点的取值设置为Vi=(Aic+A(i+1)c)/2,它可以将该节点上的数据集划分为两个子集。
l 从total-1个分割点中选择最佳分割点。对于每一个分割点划分数据集的方式,C4.5算法计算它的信息增益比,并且从中选择信息增益比最大的分割点来划分数据集。
(3) 采用了一种后剪枝方法
避免树的高度无节制的增长,避免过度拟合数据,该方法是用训练样本本身来估计剪枝前后的误差,从而决定是否真正剪枝。方法中使用的公式如下:
其中N是实例的数量,f=E/N为观察到的误差率(其中E为N个实例中分类错误的个数),q为真实的误差率,c为置信度(C4.5算法的一个熟人参数,默认值为0.25),z为对应于置信度c的标准差,其值可根据c的设定值通过查正态分布表得到。通过该公式即可计算出真实误差率q的一个置信区间上限,用此上限为该节点误差率e做一个悲观的估计:
通过判断剪枝前后e的大小,从而决定是否需要剪枝。
(4) 对于缺失值的处理
在某些情况下,可供使用的数据可能缺少某些属性的值。假如<x,c(x)>是样本集S中的一个训练实例,但是其属性A的值A(x)未知。处理缺少属性值的一种策略是赋给它节点n所对应的训练实例中该属性的最常见值;另外一种更复杂的策略是为A的每个可能值赋予一个概率。例如,给定一个布尔属性A,如果结点n包含6个已知A=1和4个A=0的实例,那么A(x)=1的概率是0.6,而A(x)=0的概率是0.4。于是,实例x的60%被分配到A=1的分支,40%被分配到另一个分支。这些片断样例(fractional examples)的目的是计算信息增益,另外,如果有第二个缺失值的属性必须被测试,这些样例可以在后继的树分支中被进一步细分。C4.5就是使用这种方法处理缺少的属性值
四、系统设计与实现
C4.5算法的优点是产生的分类规则易于理解,准确率较高。缺点就是在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。此外,C4.5算法只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时,程序无法运行。
C4.5算法的实现
假设用S代表当前样本集,当前候选属性集用A表示,则C4.5算法C4.5formtree(S, A)的伪代码如下。
算法:Generate_decision_tree由给定的训练数据产生一棵决策树
输入:训练样本samples;候选属性的集合attributelist
输出:一棵决策树
(1) 创建根节点N;
(2) IF S都属于同一类C,则返回N为叶节点,标记为类C;
(3) IF attributelist为空 OR S中所剩的样本数少于某给定值
则返回N为叶节点,标记N为S中出现最多的类;
(4) FOR each attributelist中的属性
计算信息增益率information gain ratio;
(5) N的测试属性test.attribute = attributelist具有最高信息增益率的属性;
(6) IF测试属性为连续型
则找到该属性的分割阈值;
(7) For each由节点N一个新的叶子节点{
If该叶子节点对应的样本子集S’为空
则分裂此叶子节点生成新叶节点,将其标记为S中出现最多的类
Else
在该叶子节点上执行C4.5formtree(S’, S’.attributelist),继续对它分裂;
}
(8) 计算每个节点的分类错误,进行剪枝。
2、 C4.5算法的基本原理
设S是s个数据样本的集合。假定类标号Ci(I = 1,……,m)具有m个不同的值,设si是类Ci中的样本数。对一个给定的样本分类所需的期望信息由下式给出:
其中,是任意样本属于的概率,并用si/s来估计。
设属性A具有v个子集,……,;其中,包含S中这样一些样本,它们在A上具有值。如果A选作测试属性,则这些子集对应于由包含集合S的节点生长出来的分枝。设是子集中类的样本数。根据由A划分成子集的熵由下式给出:
其中,项充当第j个子集的权,并且等于子集(即A值为)中的样本个数除以s中的样本总数。熵值越小,子集划分的纯度越高。对于给定的子集有:
其中,=是中的样本属于类的概率。
在A上分枝将获得的编码信息是:
以上和ID3算法的基本原理相同,而C4.5所不同的是在后面使用信息增益比例来取代信息增益。
其中,到是c个值的属性A分割S而形成的c个样本子集。
这时,在属性A上所得到的信息增益比为:
C4.5算法计算每个属性的信息增益比。具有最高信息增益比的属性选作给定集合S的测试属性。创建一个节点,并以该属性标记,对属性的每个值创建分枝,并据此划分样本。
3、 实例分析
下面我们通过对毕业生就业信息的分析加以理解。在这个分析的结果能够帮助教育者寻找到可能影响毕业生就业的信息,从而在今后的教学过程中进行改进,使得毕业生在就业时更具有竞争力。
学号 |
性别 |
学生干部 |
综合成绩 |
毕业论文 |
就业情况 |
2000041134 |
男 |
是 |
70-79 |
优 |
已 |
2000041135 |
女 |
是 |
80-89 |
中 |
已 |
2000041201 |
男 |
否 |
60-69 |
不及格 |
未 |
2000041202 |
男 |
是 |
60-69 |
良 |
已 |
2000041203 |
男 |
是 |
70-79 |
中 |
已 |
2000041204 |
男 |
否 |
70-79 |
良 |
未 |
2000041205 |
女 |
是 |
60-69 |
良 |
已 |
2000041209 |
男 |
是 |
60-69 |
良 |
已 |
2000041210 |
女 |
是 |
70-79 |
中 |
未 |
2000041211 |
男 |
否 |
60-69 |
及格 |
已 |
2000041215 |
男 |
是 |
80-89 |
及格 |
已 |
2000041216 |
男 |
是 |
70-79 |
良 |
已 |
2000041223 |
男 |
否 |
70-79 |
及格 |
未 |
2000041319 |
男 |
否 |
60-69 |
及格 |
已 |
2000041320 |
男 |
是 |
70-79 |
良 |
已 |
2000041321 |
男 |
否 |
70-79 |
良 |
未 |
2000041322 |
男 |
否 |
80-89 |
良 |
未 |
2000041323 |
女 |
是 |
70-79 |
良 |
已 |
2000041324 |
男 |
否 |
70-79 |
不及格 |
未 |
2000041325 |
男 |
否 |
70-79 |
良 |
未 |
2000041326 |
女 |
是 |
60-69 |
优 |
已 |
2000041327 |
男 |
是 |
60-69 |
良 |
已 |
表1的数据时经过预处理的数据集,从表中我们可以得到类标号属性“就业情况”有2个不同的值(“已”,“未”),因此有2个不同的类。其中对应于类值“已”有14个样本,类值“未”有8个样本。
根据公式(5)我们先计算训练集的全部信息量:
I(就业情况) = I(14, 8) = -14/22log2(14/22)-8/22log2(8/22) = 0.945660305
接着,需要计算每个属性的信息增益比。如以属性“性别”为例:
由公式(5)有:
I(男) = I(10, 7) = -10/17log2(10/17)-7/17log2(7/17)=0.97741728
I(女) = I(4, 1) = -4/5log2(1/5)-1/5log2(1/5)=0.72192809
由公式(6)有:
E(性别) = 17/22*I(男) + 5/22*I(女)=0.91935197
由公式(8)求出这种划分的信息增益:
Gain(性别) = I(就业情况) – E(性别) = 0.02630833
再根据公式(9)求出在该属性上的分裂信息:
SplitInfo(性别) = -17/22log2(17/22)-5/22-log2(55/22)=0.77322667
最后再根据公式(10)求出在该属性上的增益比:
GainRatio(学生干部) = 0.41171446, GainRatio(综合成绩) = 0.08839108, GainRatio(毕业成绩) = 0.10167158
由上述计算结果可知“学生干部”在属性中具有最大的信息增益比,取“学生干部”为根属性,引出一个分枝,样本按此划分。对引出的每一个分枝再用此分类法进行分类,再引出分枝。最后所构造出的判定数如下图所示:
图1 毕业生就业情况判定树
这是C4.5算法的实现,当然C4.5算法本身也存在一些不足之处,如处理连续属性比较耗时、计算信息增益率的速度还有待提高等,所以C4.5算法还需要不断的研究,并对其加以改进。在以后的学习研究中,我会加深对决策树算法的理解,发现其还存在的不足,提出新的改进方法。
决策树之CART算法
2015-03-27 01:38 12297人阅读 评论(6) 收藏 举报
分类:
机器学习(32)
版权声明:本文为博主原创文章,未经博主允许不得转载。
在之前介绍过决策树的ID3算法实现,今天主要来介绍决策树的另一种实现,即CART算法
Contents
1. CART算法的认识
2. CART算法的原理
3. CART算法的实现
1. CART算法的认识
Classification And Regression Tree,即分类回归树算法,简称CART算法,它是决策树的一种实现,通
常决策树主要有三种实现,分别是ID3算法,CART算法和C4.5算法。
CART算法是一种二分递归分割技术,把当前样本划分为两个子样本,使得生成的每个非叶子结点都有两个分支,
因此CART算法生成的决策树是结构简洁的二叉树。由于CART算法构成的是一个二叉树,它在每一步的决策时只能
是“是”或者“否”,即使一个feature有多个取值,也是把数据分为两部分。在CART算法中主要分为两个步骤
(1)将样本递归划分进行建树过程
(2)用验证数据进行剪枝
2. CART算法的原理
上面说到了CART算法分为两个过程,其中第一个过程进行递归建立二叉树,那么它是如何进行划分的 ?
设代表单个样本的个属性,表示所属类别。CART算法通过递归的方式将维的空间划分为不重
叠的矩形。划分步骤大致如下
(1)选一个自变量,再选取的一个值,把维空间划分为两部分,一部分的所有点都满足,
另一部分的所有点都满足,对非连续变量来说属性值的取值只有两个,即等于该值或不等于该值。
(2)递归处理,将上面得到的两部分按步骤(1)重新选取一个属性继续划分,直到把整个维空间都划分完。
在划分时候有一个问题,它是按照什么标准来划分的 ? 对于一个变量属性来说,它的划分点是一对连续变量属
性值的中点。假设个样本的集合一个属性有个连续的值,那么则会有个分裂点,每个分裂点为相邻
两个连续值的均值。每个属性的划分按照能减少的杂质的量来进行排序,而杂质的减少量定义为划分前的杂质减
去划分后的每个节点的杂质量划分所占比率之和。而杂质度量方法常用Gini指标,假设一个样本共有类,那么
一个节点的Gini不纯度可定义为
其中表示属于类的概率,当Gini(A)=0时,所有样本属于同类,所有类在节点中以等概率出现时,Gini(A)
最大化,此时。
有了上述理论基础,实际的递归划分过程是这样的:如果当前节点的所有样本都不属于同一类或者只剩下一个样
本,那么此节点为非叶子节点,所以会尝试样本的每个属性以及每个属性对应的分裂点,尝试找到杂质变量最大
的一个划分,该属性划分的子树即为最优分支。
下面举个简单的例子,如下图
在上述图中,属性有3个,分别是有房情况,婚姻状况和年收入,其中有房情况和婚姻状况是离散的取值,而年
收入是连续的取值。拖欠贷款者属于分类的结果。
假设现在来看有房情况这个属性,那么按照它划分后的Gini指数计算如下
而对于婚姻状况属性来说,它的取值有3种,按照每种属性值分裂后Gini指标计算如下
最后还有一个取值连续的属性,年收入,它的取值是连续的,那么连续的取值采用分裂点进行分裂。如下
根据这样的分裂规则CART算法就能完成建树过程。
建树完成后就进行第二步了,即根据验证数据进行剪枝。在CART树的建树过程中,可能存在Overfitting,许多
分支中反映的是数据中的异常,这样的决策树对分类的准确性不高,那么需要检测并减去这些不可靠的分支。决策
树常用的剪枝有事前剪枝和事后剪枝,CART算法采用事后剪枝,具体方法为代价复杂性剪枝法。可参考如下链接
剪枝参考:http://www.cnblogs.com/zhangchaoyang/articles/2709922.html