第9章rapidminerkmeans聚类辨别分析v1Word文档格式.docx
《第9章rapidminerkmeans聚类辨别分析v1Word文档格式.docx》由会员分享,可在线阅读,更多相关《第9章rapidminerkmeans聚类辨别分析v1Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
K-均值算法对孤立点的敏感性,K-中心点算法不采用簇中对象的平均值作为簇中心,而选用簇中离平均值最近的对象作为簇中心。
系统聚类
系统聚类也叫多层次聚类,分类的单位由高到低呈树形结构,且所处的位置越低,其所包含的对象就越少,但这些对象间的共同特征越多。
该聚类方法只适合在小数据量的时候使用,数据量大的时候速度会非常慢。
9.1.2K-Means聚类算法
K-Means算法是典型的基于距离的非层次聚类算法,在最小化误差函数的基础上将数据划分为预定的类数K,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。
1.算法过程
1)从N个样本数据中随机选取K个对象作为初始的聚类中心;
2)分别计算每个样本到各个聚类中心的距离,将对象分配到距离最近的聚类中;
3)所有对象分配完成后,重新计算K个聚类的中心;
4)与前一次计算得到的K个聚类中心比较,如果聚类中心发生变化,转2),否则转5);
5)当质心不发生变化时停止并输出聚类结果。
聚类的结果可能依赖于初始聚类中心的随机选择,可能使得结果严重偏离全局最优分类。
实践中,为了得到较好的结果,通常以不同的初始聚类中心,多次运行K-Means算法。
在所有对象分配完成后,重新计算K个聚类的中心时,对于连续数据,聚类中心取该簇的均值,但是当样本的某些属性是分类变量时,均值可能无定义,可以使用K-众数方法。
2.数据类型与相似性的度量
(1)连续属性
对于连续属性,要先对各属性值进行零-均值规范,再进行距离的计算。
K-Means聚类算法中,一般需要度量样本之间的距离、样本与簇之间的距离以及簇与簇之间的距离。
度量样本之间的相似性最常用的是欧几里得距离、曼哈顿距离和闵可夫斯基距离;
样本与簇之间的距离可以用样本到簇中心的距离
;
簇与簇之间的距离可以用簇中心的距离
。
用
个属性来表示
个样本的数据矩阵如下:
欧几里得距离
(9-1)
曼哈顿距离
(9-2)
闵可夫斯基距离
(9-3)
为正整数,
时即为曼哈顿距离;
时即为欧几里得距离。
(2)文档数据
对于文档数据使用余弦相似性度量,先将文档数据整理成文档—词矩阵格式,如表93。
表93文档—词矩阵
lost
win
team
score
music
happy
sad
…
coach
文档一
14
2
8
7
10
6
文档二
1
13
3
4
16
文档三
9
5
两个文档之间的相似度的计算公式为:
(9-4)
3.目标函数
使用误差平方和SSE作为度量聚类质量的目标函数,对于两种不同的聚类结果,选择误差平方和较小的分类结果。
连续属性的SSE计算公式为:
(9-5)
文档数据的SSE计算公式为:
(9-6)
簇
的聚类中心
计算公式为:
(9-7)
表94符号表
符号
含义
K
聚类簇的个数
第
个簇
对象(样本)
个簇中样本的个数
下面结合具体案例来实现本节开始提出问题。
部分餐饮客户的消费行为特征数据如表95。
根据这些数据将客户分类成不同客户群,并评价这些客户群的价值。
表95消费行为特征数据
ID
R(最近一次消费时间间隔)
F(消费频率)
M(消费总金额)
37
579
35
616
25
394
52
111
36
521
41
225
56
118
793
54
18
1086
采用K-Means聚类算法,设定聚类个数K为3,距离函数默认为欧氏距离。
执行K-Means聚类算法输出的结果见表96。
表96聚类算法输出结果
分群类别
分群1
分群2
分群3
样本个数
352
370
218
样本个数占比
%
聚类中心
R
F
M
以下是绘制的不同客户分群的概率密度函数图,通过这些图能直观地比较不同客户群的价值。
图92分群1的概率密度函数图
图93分群2的概率密度函数图
图94分群3的概率密度函数图
客户价值分析:
分群1特点:
R主要集中在10~30天之间;
消费次数集中在5~30次;
消费金额在1600~2000。
分群2特点:
R分布在20~45天之间;
消费次数集中在5~25次;
消费金额在800~1600。
分群3特点:
R分布在30~60天之间;
消费次数集中在1~10次;
消费金额在200~800。
对比分析:
分群1时间间隔较短,消费次数多,而且消费金额较大,是高消费高价值人群。
分群2的时间间隔、消费次数和消费金额处于中等水平。
分群3的时间间隔较长,消费次数和消费金额处于较低水平,是价值较低的客户群体。
9.1.3聚类分析算法评价
聚类分析仅根据样本数据本身将样本分组。
其目标是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的)。
组内的相似性越大,组间差别越大,聚类效果就越好。
(1)purity评价法
purity方法是极为简单的一种聚类评价方法,只需计算正确聚类数占总数的比例:
(9-8)
其中,
是聚类的集合。
表示第k个聚类的集合。
表示需要被聚类的集合,
表示第
个聚类对象。
表示被聚类集合对象的总数。
(2)RI评价法
实际上这是一种用排列组合原理来对聚类进行评价的手段,RI评价公式如下:
(9-10)
其中R是指被聚在一类的两个对象被正确分类了,W是指不应该被聚在一类的两个对象被正确分开了,M指不应该放在一类的对象被错误的放在了一类,D指不应该分开的对象被错误的分开了。
(3)F值评价法
这是基于上述RI方法衍生出的一个方法,F评价公式如下:
(9-11)
其中
,
实际上RI方法就是把准确率p和召回率r看得同等重要,事实上有时候我们可能需要某一特性更多一点,这时候就适合使用F值方法。
实例1—利用K-Means聚类确定患冠心病的高风险人群
背景和概要说明
Sonia在一家主要健康保险公司担任项目总监。
最近她一直在阅读医学刊物和其他文章,并发现好多文章都在强调体重、性别和胆固醇对患冠心病的影响。
她阅读的研究文件一次又一次地确认这三个变量之间存在关联。
尽管人们无法在自己的性别方面下功夫,但无疑可以通过选择合理的生活方式来改变胆固醇水平和体重。
于是她开始提议公司为健康保险客户提供体重和胆固醇管理项目。
在考虑她的工作在哪里开展可能最为有效时,她希望了解是否存在发生高体重和高胆固醇风险最高的自然群体,如果存在,这些群体之间的自然分界线在哪里。
业务理解
Sonia的目标是确定由公司提供保险服务且因体重和/或高胆固醇患冠心病的风险非常高的人员,并试图联络这些人员。
她了解患冠心病风险较低的人员,即体重和胆固醇水平较低的人员不太可能会参加她提供的项目。
她还了解可能存在高体重和低胆固醇、高体重和高胆固醇,以及低体重和高胆固醇的保单持有人。
她还认识到可能会有许多人介于它们之间。
为了实现目标,她需要在数以千计的保单持有人中搜索具有类似特征的群体,并制定相关且对这些不同的群体有吸引力的项目和沟通方式。
数据理解
使用该保险公司的索赔数据库,Sonia提取了547个随机挑选的人员的三个属性,即受保人最近的体检表上记录的体重(单位:
磅)、最近一次验血时测得的胆固醇水平,以及性别。
和在许多数据集中的典型做法一样,性别属性使用0来表示女性,并使用1来表示男性。
我们将使用从Sonia公司的数据库中提取的这些样本数据构建聚类模型,以便帮助Sonia了解公司的客户(即健康保险保单持有人)根据体重、性别和胆固醇水平进行分组的情况。
我们应切记在构建模型时,均值尤其容易受到极端离群点的不当影响,因此在使用K均值聚类数据挖掘方法时查看是否存在不一致的数据至关重要。
数据准备
将“.K-Means聚类.csv”数据集导入到RapidMiner数据存储库中,保存为//LocalRepository/data/K-Means聚类。
我们可以看到先前定义的三个属性有547个观察项。
我们可以看到三个属性中的每个属性的平均值,以及对应的标准差和范围,如图。
其中没有看起来不一致的值(切记前面关于使用标准差查找统计离群点的备注)。
由于没有缺失的值要处理,因此数据看起来非常干净,并可直接进行挖掘。
图数据基本信息
操作步骤
第一步:
对数据进行聚类
将数据拖拽到操作视图界面,检索“k-Means”操作符并将其与数据进行连接,然后与输出端口连接,点击运行,我们可以看到如图运行结果,在参数设置如图中,我们可以设计聚成的k的类数,以及“maxruns”最大循环迭代的次数。
图k-Means聚类参数设置
第二步:
结果集过滤
将“FilterExamples”结果集过滤操作符拖进操作界面,如图,在参数设置中,选择类别等于类别0,如图。
图操作符流程视图
图结果集过滤参数设置
第三步:
输出结果
点击运行,我们可以看到如图的输出结果
图筛选类别后的输出结果
这样我们的主人公,就可以根据显示输出的结果,来重点关注疾病的高发人群,从而有针对性的进行服务。
实例2—利用判别分析技术分类运动员专攻项目
背景和概要说明
Gill运营着一个体育学院,旨在帮助高中年纪的运动员最大限度地发挥其在体育方面的潜力。
对于学院的男生,他侧重于四个主要体育项目,即橄榄球、篮球、棒球和曲棍球。
他发现虽然许多高中运动员在念高中时都喜欢参加多种体育项目,但随着他们开始考虑在大学时从事的体育项目,他们将倾向于专攻某一项。
通过多年来与运动员之间的合作,Gill整理了一个内容非常广泛的数据集。
现在他想知道他是否可以使用先前部分客户的以往成绩,为即将到来的高中运动员预测主攻的体育项目。
最终,他希望可以就每个运动员可能最应选择专攻哪个体育项目,向他们提供建议。
通过评估每个运动员在一系列测试中的成绩,Gill希望我们可以帮助他确定每个运动员在哪个体育项目方面资质最高。
判别分析的含义
判别分析(DiscriminantAnalysis,简称DA)技术是由费舍(R.A.Fisher)于1936年提出的。
它是根据观察或测量到的若干变量值判断研究对象如何分类的方法。
具体地讲,就是已知一定数量案例的一个分组变量(groupingvariable)和这些案例的一些特征变量,确定分组变量和特征变量之间的数量关系,建立判别函数(discriminantfunction),然后便可以利用这一数量关系对其他已知特征变量信息、但未知分组类型所属的案例进行判别分组。
沿用多元回归模型的称谓,在判别分析中称分组变量为因变量,而用以分组的其他特征变量称为判别变量(discriminantvariable)或自变量。
判别分析技术曾经在许多领域得到成功的应用,例如医学实践中根据各种化验结果、疾病症状、体征判断患者患的是什么疾病;
体育选材中根据运动员的体形、运动成绩、生理指标、心理素质指标、遗传因素判断是否选入运动队继续培养;
还有动物、植物分类,儿童心理测验,地理区划的经济差异,决策行为预测等。
Gill的目标是对年轻运动员进行考核,并根据其在一系列指标方面的成绩来帮助他们决定最适合专攻哪个体育项目。
Gill认识到他的所有客户都热衷于体育运动,并且喜欢参加多种体育项目。
他的大多数客户都非常年轻、热爱体育运动、适应能力非常强,并且都擅长多种体育项目。
多年来,他看到有些人具有极高的天赋,无论选择专攻任何体育项目都能有杰出的表现。
因此他认识到,由于此项数据挖掘工作的局限,他可能无法使用数据来确定运动员的“最佳”体育项目。
此外,他还查看了过去的衡量指标和评估工作,并发现先前有些运动员确实在事先选定了某种体育项目,并在专攻该项目后取得了巨大成功。
根据他的行业经验,他决定尝试使用数据挖掘来了解运动员的资质,并请我们提供帮助。
为了开始制定计划,我们与Gill一起对他的数据资产进行了审查。
在过去的几年中,进入Gill学院的每个运动员都接受了一系列针对多项运动特征和个人特征的测试。
虽然学院对参加多种不同体育项目的男生和女生都进行了这些测试,但在此项初步研究中,我们和Gill决定只查看男生的数据。
因为学院已经运营了一段时间,所有Gill能够知道之前有哪些学员选择专攻一种体育项目,以及其中每个学员选择的是哪种体育项目。
通过与Gill密切合作,我们收集了先前所有选择专攻一种体育项目的客户在这些测试中的结果,Gill还添加了其中每个学员专攻的体育项目,于是我们获得了一个包含493个观察项以及以下属性的数据集:
年龄:
参与者在接受运动特征和个人特征系列测试时的年龄(精确到位),介于13-19岁之间。
力量:
通过一系列举重运动测得的参与者的力量,介于0-10分之间,其中0分表示力量有限,10分表示力量足可以毫不费力地进行所有举重运动。
没有参与者的评分达到8分、9分或10分,但却有些参与者的评分为0分。
反应能力:
参与者在接受一系列反应能力测试后获得的成绩。
这些测试记录参与者在灯光发出指示后经过多长时间才按下按钮,或蜂器响起后经过多长时间才跳起来。
反应时间被记录在表中,介于0-6分之间,其中6分表示反应非常快,0分表示反应非常慢。
对于此属性,每个分值都有对应的参与者。
伤病:
一个内容为yes
(1)/no(0)且非常简单的列,用于表示年轻运动员是否曾受过与体育运行相关的伤,并且严重到需要手术或其他重要医疗干预的程度。
通过冰敷、休息、舒展肢体等方法治疗的常见伤被记录为0。
需要三周以上才能痊愈、需要采取物理疗法或需要手术的伤将被记录为1。
视力:
不仅使用视力表按一般的20/20视力等级对运动员进行测试,而且还使用视线跟踪技术测试他们用视线跟踪物体的能力。
此项测试要求参与者识别视野内快速移动的物体,并估算移动物体的移动速度和方向。
此项评分介于0分到4分之间,其中4分表示视力非常好,并能够很好地识别移动物体。
没有参与者的评分达到满分(4分),但0分到3分之间都有对应的参与者。
耐力:
参与者接受一系列身体素质测试,其中包括跑步、柔软体操、有氧心肺功能运动和长距离游泳。
此项成绩介于0-10分之间,其中10分表示能够在不感到任何疲劳的情况下完成所有任务。
在此项属性方面,参与者的评分介于0分到6分之间。
Gill告诉我们,即使状况再好的专业运动员在这部分测试中的评分也不能达到10分,因为此项测试旨在测试人类耐力的极限。
敏捷性:
参与者在接受一系列移动、扭转、转动、跳跃、转向等测试后获得的评分。
此项测试旨在检查运动员朝各个方向敏捷、精确、有力移动的能力。
这是一项综合指标,受一些其他指标的影响,因为敏捷性通常取决于一个人的力量、速度等。
此项属性的评分介于0分到100分之间。
在Gill提供的数据集中,此项成绩都介于13分和80分之间。
决策能力:
此部分旨在测试运动员在各种运动状况中作出决策的过程。
让运动员参与各种模拟情景,以便测试他们在是否挥棒、是否传球、是否朝运动场上可能有利的位置移动等方面的选择。
此项评分介于0分到100分之间,但Gill表示在完成此项测试的人中,没有人的评分能够低于3分,因为只要成功开始并结束决策测试部分,即可得到3分。
Gill知道此数据表中的所有493名前运动员都成功开始并结束了此部分测试,但数据表中却有一些分数低于3分,而且还有一些分数高于100分,因此我们知道后面我们还有一些数据准备工作要做。
专攻体育项目:
此项属性是指453名运动员中的每名运动员在离开Gill的学院后专攻的体育项目。
这是Gill希望能够为目前的客户预测的属性。
对于此项研究中的男生,此项属性将为以下四种体育项目中的其中一种:
橄榄球、篮球、棒球和曲棍球。
将“辨别分析”数据集导入到RapidMiner数据存储库中,保存为//LocalRepository/data/判别分析_Training。
将“辨别分析”数据集导入到RapidMiner数据存储库中,保存为//LocalRepository/data/判别分析_Scoring。
操作过程
图总体流程图
数据清洗
通过观察数据集的整体情况,我们发现在训练数据集中,决策能力这一栏的数据有一样,按照规定,这个数据的取值范围是0-100,并且最少能够得到3分,而在这里显示的是0-103,我们需要对数据进行处理。
另外,我们观察测试数据集的情况,它的决策数据值在0-119,同样也超出的3-100的正常取值范围,这地方我们在运行的时候也要进行处理。
我们调用“FilterExamples”操作符,把它与数据连接,我们在其参数配置中添加一个过滤条件,我们选择保留决策能力大于等于3,小于等于100的数据,如图。
图过滤参数设置
线性辨别应用
搜索“LinearDiscriminantAnalysis”线性辨别分析操作符,并将其拖拽到执行界面加入到执行流程中来,LDA操作符不需要设置参数。
此外线性辨别分析需要标签属性,因此我们还需要SetRole角色操作符对“专供体育项目”设置为“label”角色,如图。
图角色参数设置
运行模型,这样如图,就会显示LDA的输出结果,结果中显示了各个体育类别所占的比例。
图LDA模型输出结果
利用训练模型进行预测
接下来,首先加载测试数据集,然后我们仍使用“FilterExamples”操作符对数据集中的异常值进行过滤,过滤的条件跟训练集是一样的,所以我们复制即可。
调用“ApplyModel”应用模型操作符,将LDA线性辨别分析模型、清洗后的数据分别和“ApplyModel”应用模型操作符连接,最后将其与最终输出结果相连接,如图。
点击运行,在运行结果视图中,我们可以看到绿色的这一列,就是它的预测结果,这里它帮我们根据每一个新同学的测试成绩,对其进行的专攻的体育项目的预测判断。
我们的主人公,就可以拿着这个结果,找到每个同学分析他们的潜力,推荐给他们可能的体育项目。
图线性辨别分析模型预测结果