第9章rapidminer_k_means聚类.辨别分析v1
- 格式:doc
- 大小:364.50 KB
- 文档页数:16
K-means聚类分析⼀、原理1. 先确定簇的个数,K2. 假设每个簇都有⼀个中⼼点centroid3. 将每个样本点划分到距离它最近的中⼼点所属的簇中选择K个点做为初始的中⼼点while(1){将所有点分配个K个中⼼点形成K个簇重新计算每个簇的中⼼点if(簇的中⼼点不再改变)break;}⽬标函数:定义为每个样本与其簇中⼼点的距离的平⽅和(theSum of Squared Error, SSE) – µk 表⽰簇Ck 的中⼼点(或其它能代表Ck的点) – 若xn被划分到簇Ck则rnk=1,否则rnk= 0• ⽬标:找到簇的中⼼点µk及簇的划分rnk使得⽬标函数SSE最⼩初始中⼼点通常是随机选取的(收敛后得到的是局部最优解)不同的中⼼点会对聚类结果产⽣不同的影响:1、2、此时你⼀定会有疑问:如何选取"较好的"初始中⼼点?1. 凭经验选取代表点2. 将全部数据随机分成c类,计算每类重⼼座位初始点3. ⽤“密度”法选择代表点4. 将样本随机排序后使⽤前c个点作为代表点5. 从(c-1)聚类划分问题的解中产⽣c聚类划分问题的代表点 结论:若对数据不够了解,可以直接选择2和4⽅法需要预先确定K Q:如何选取K SSE⼀般随着K的增⼤⽽减⼩A:emmm你多尝试⼏次吧,看看哪个合适。
斜率改变最⼤的点⽐如k=2总结:简单的来说,K-means就是假设有K个簇,然后通过上⾯找初始点的⽅法,找到K个初始点,将所有的数据分为K个簇,然后⼀直迭代,在所有的簇⾥⾯找到找到簇的中⼼点µk及簇的划分rnk使得⽬标函数SSE最⼩或者中⼼点不变之后,迭代完成。
成功把数据分为K类。
预告:下⼀篇博⽂讲K-means代码实现。
Clustering中文翻译作“聚类”,简单地说就是把相似的东西分到一组,同Classification(分类)不同,对于一个classifier,通常需要你告诉它“这个东西被分为某某类”这样一些例子,理想情况下,一个classifier会从它得到的训练集中进行“学习”,从而具备对未知数据进行分类的能力,这种提供训练数据的过程通常叫做supervised learning(监督学习),而在聚类的时候,我们并不关心某一类是什么,我们需要实现的目标只是把相似的东西聚到一起,因此,一个聚类算法通常只需要知道如何计算相似度就可以开始工作了,因此clustering通常并不需要使用训练数据进行学习,这在Machine Learning中被称作unsupervised learning(无监督学习)。
举一个简单的例子:现在有一群小学生,你要把他们分成几组,让组内的成员之间尽量相似一些,而组之间则差别大一些。
最后分出怎样的结果,就取决于你对于“相似”的定义了,比如,你决定男生和男生是相似的,女生和女生也是相似的,而男生和女生之间则差别很大”,这样,你实际上是用一个可能取两个值“男”和“女”的离散变量来代表了原来的一个小学生,我们通常把这样的变量叫做“特征”。
实际上,在这种情况下,所有的小学生都被映射到了两个点的其中一个上,已经很自然地形成了两个组,不需要专门再做聚类了。
另一种可能是使用“身高”这个特征。
我在读小学候,每周五在操场开会训话的时候会按照大家住的地方的地域和距离远近来列队,这样结束之后就可以结队回家了。
除了让事物映射到一个单独的特征之外,一种常见的做法是同时提取N种特征,将它们放在一起组成一个N维向量,从而得到一个从原始数据集合到N维向量空间的映射——你总是需要显式地或者隐式地完成这样一个过程,因为许多机器学习的算法都需要工作在一个向量空间中。
那么让我们再回到clustering的问题上,暂且抛开原始数据是什么形式,假设我们已经将其映射到了一个欧几里德空间上,为了方便展示,就使用二维空间吧,如下图所示:从数据点的大致形状可以看出它们大致聚为三个cluster,其中两个紧凑一些,剩下那个松散一些。
k-means聚类方法的原理和步骤k-means聚类方法是一种常用的数据聚类算法,它可以将一组数据划分成若干个类别,使得同一类别内的数据相似度较高,不同类别之间的数据相似度较低。
本文将介绍k-means聚类方法的原理和步骤。
k-means聚类方法基于数据的距离度量,具体而言,它通过最小化各个数据点与所属类别中心点之间的距离来达到聚类的目的。
其基本原理可以概括为以下几点:-定义类别中心点:在聚类开始前,需要预先设定聚类的类别数量k。
根据k的数量,在数据集中随机选取k个点作为初始的类别中心点。
-分配数据点到类别:对于每一个数据点,计算其与各个类别中心点之间的距离,并将其分配到距离最近的类别中。
-更新类别中心点:当所有数据点分配完毕后,重新计算每个类别中的数据点的均值,以此获得新的类别中心点。
-重复分配和更新过程:将新的类别中心点作为参考,重新分配数据点和更新类别中心点,直到类别中心点不再变化或达到预设的迭代次数。
按照上述原理,k-means聚类方法的步骤可以分为以下几个阶段:-第一步,随机选择k个类别中心点。
-第二步,计算每个数据点与各个类别中心点之间的距离,并将其分配到距离最近的类别中。
-第三步,重新计算每个类别中数据点的均值,以此获得新的类别中心点。
-第四步,判断新的类别中心点是否与上一次迭代的中心点相同,如果相同,则结束聚类过程;如果不同,则更新类别中心点,返回第二步继续迭代。
-第五步,输出最终的类别划分结果。
需要注意的是,k-means聚类方法对聚类的初始中心点敏感,不同的初始点可能会导致不同的聚类结果。
为了避免陷入局部最优解,通常采用多次随机初始化的方式进行聚类,然后选取最好的结果作为最终的聚类划分。
综上所述,k-means聚类方法是一种常用的数据聚类算法,它通过最小化数据点与类别中心点之间的距离来实现聚类。
按照预设的步骤进行迭代,最终得到稳定的聚类结果。
在实际应用中,还可以根据具体问题进行算法的改进和优化,以满足实际需求。
K-means聚类算法1. 概述K-means聚类算法也称k均值聚类算法,是集简单和经典于⼀⾝的基于距离的聚类算法。
它采⽤距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越⼤。
该算法认为类簇是由距离靠近的对象组成的,因此把得到紧凑且独⽴的簇作为最终⽬标。
2. 算法核⼼思想K-means聚类算法是⼀种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中⼼,然后计算每个对象与各个种⼦聚类中⼼之间的距离,把每个对象分配给距离它最近的聚类中⼼。
聚类中⼼以及分配给它们的对象就代表⼀个聚类。
每分配⼀个样本,聚类的聚类中⼼会根据聚类中现有的对象被重新计算。
这个过程将不断重复直到满⾜某个终⽌条件。
终⽌条件可以是没有(或最⼩数⽬)对象被重新分配给不同的聚类,没有(或最⼩数⽬)聚类中⼼再发⽣变化,误差平⽅和局部最⼩。
3. 算法实现步骤1、⾸先确定⼀个k值,即我们希望将数据集经过聚类得到k个集合。
2、从数据集中随机选择k个数据点作为质⼼。
3、对数据集中每⼀个点,计算其与每⼀个质⼼的距离(如欧式距离),离哪个质⼼近,就划分到那个质⼼所属的集合。
4、把所有数据归好集合后,⼀共有k个集合。
然后重新计算每个集合的质⼼。
5、如果新计算出来的质⼼和原来的质⼼之间的距离⼩于某⼀个设置的阈值(表⽰重新计算的质⼼的位置变化不⼤,趋于稳定,或者说收敛),我们可以认为聚类已经达到期望的结果,算法终⽌。
6、如果新质⼼和原质⼼距离变化很⼤,需要迭代3~5步骤。
4. 算法步骤图解上图a表达了初始的数据集,假设k=2。
在图b中,我们随机选择了两个k类所对应的类别质⼼,即图中的红⾊质⼼和蓝⾊质⼼,然后分别求样本中所有点到这两个质⼼的距离,并标记每个样本的类别为和该样本距离最⼩的质⼼的类别,如图c所⽰,经过计算样本和红⾊质⼼和蓝⾊质⼼的距离,我们得到了所有样本点的第⼀轮迭代后的类别。
此时我们对我们当前标记为红⾊和蓝⾊的点分别求其新的质⼼,如图d所⽰,新的红⾊质⼼和蓝⾊质⼼的位置已经发⽣了变动。
大连理工大学硕士学位论文K-means聚类算法的研究姓名:冯超申请学位级别:硕士专业:软件工程指导教师:吴国伟20071215大连理工大学硕士学位论文摘要聚类是数据挖掘领域中重要的技术之一,用于发现数据中未知的分类。
聚类分析已经有了很长的研究历史,其重要性已经越来越受到人们的肯定。
聚类算法是机器学习、数据挖掘和模式识别等研究方向的重要研究内容之一,在识别数据对象的内在关系方面,具有极其重要的作用。
聚类主要应用于模式识别中的语音识别、字符识别等,机器学习中的聚类算法应用于图像分割,图像处理中,主要用于数据压缩、信息检索。
聚类的另一个主要应用是数据挖掘、时空数据库应用、序列和异常数据分析等。
此外,聚类还应用于统计科学,同时,在生物学、地质学、地理学以及市场营销等方面也有着重要的作用。
本文是对聚类算法K-means的研究。
首先介绍了聚类技术的相关概念。
其次重点对K-means算法进行了分析研究,K-means算法是一种基于划分的方法,该算法的优点是简单易行,时间复杂度为00),并且适用予处理大规模数据。
但是该算法存在以下缺点:需要给定初始的聚类个数K以及K个聚类中心,算法对初始聚类中心点的选择很敏感,容易陷入局部最优,并且一般只能发现球状簇。
本文针对聚类个数足的确定、初始K个聚类中心的选定作了改进,给出了改进的算法MMDBK(Max.Min and Davies.BouldinIndex based K-means,简称MMDBK)。
算法的出发点是确保发现聚类中心的同时使同一类内的相似度大,而不同类之间的相似度小。
算法采用Davies.Bouldin Index 聚类指标确定最佳聚类个数,改进的最大最小距离法选取新的聚类中心,以及聚类中心的近邻查找法来保证各个类之间的较小的相似度。
文中最后使用KDD99数据集作为实验数据,对K-means算法以及MMDBK算法进行了仿真实验。
结果显示改进后的MMDBK算法在入侵检测中是有效的。
kmeans聚类算法总结
kmeans聚类算法是一种常见的无监督机器学习算法,它主要用于将数据分组并将相似的数据点归为同一类别。
下面是kmeans聚类算法的总结:
1. kmeans聚类算法通常需要指定类别数量k,在输入数据分类时会将数据分为k个类别,并且每个类别都有一个代表(即聚类中心)。
2. kmeans聚类算法是一种迭代算法,其主要步骤包括初始化聚类中心、分配数据点到最近的聚类中心、更新聚类中心并重复直到收敛。
3. kmeans聚类算法尝试最小化每个数据点到其所属聚类中心的距离平方和(即SSE),这个过程可以通过最小化聚类中心与每个数据点之间的平方欧几里得距离来实现。
4. kmeans聚类算法对数据分布的假设是数据点可以分为均匀大小的凸形小团,这也导致了其对异常值和噪声敏感。
5. kmeans聚类算法在处理大型数据集时可能会面临时间和内存限制的挑战。
6. kmeans聚类算法可以用于各种应用,如图像分割、市场细分、客户分类和信用评级等。
综上所述,kmeans聚类算法是一种经典的、简单但有效的聚类算法。
它具有易于解释、易于实现等优点,在处理一些相关应用时表现不俗。
但是,它对于数据集的分布假设较为苛刻,对于异常值和噪声敏感,并且处理大型数据集时可能会面临一些挑战。
第9章K-Means 聚类、辨别分析9.1理解聚类分析餐饮企业经常会碰到这样的问题:1)如何通过餐饮客户消费行为的测量,进一步评判餐饮客户的价值和对餐饮客户进行细分,找到有价值的客户群和需关注的客户群2)如何合理对菜品进行分析,以便区分哪些菜品畅销毛利又高,哪些菜品滞销毛利又低餐饮企业遇到的这些问题,可以通过聚类分析解决。
9.1.1常用聚类分析算法与分类不同,聚类分析是在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法。
与分类模型需要使用有类标记样本构成的训练数据不同,聚类模型可以建立在无类标记的数据上,是一种非监督的学习算法。
聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度将他们划分为若干组,划分的原则是组内样本最小化而组间(外部)距离最大化,如错误!未找到引用源。
所示。
图9-1 聚类分析建模原理常用聚类方法见错误!未找到引用源。
表9-1常用聚类方法类别包括的主要算法常用聚类算法见错误!未找到引用源。
2。
表9-2常用聚类分析算法9.1.2K-Means聚类算法K-Means算法是典型的基于距离的非层次聚类算法,在最小化误差函数的基础上将数据划分为预定的类数K,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。
1.算法过程1)从N个样本数据中随机选取K个对象作为初始的聚类中心;2)分别计算每个样本到各个聚类中心的距离,将对象分配到距离最近的聚类中;3)所有对象分配完成后,重新计算K个聚类的中心;4)与前一次计算得到的K个聚类中心比较,如果聚类中心发生变化,转2),否则转5);5)当质心不发生变化时停止并输出聚类结果。
聚类的结果可能依赖于初始聚类中心的随机选择,可能使得结果严重偏离全局最优分类。
实践中,为了得到较好的结果,通常以不同的初始聚类中心,多次运行K-Means算法。
在所有对象分配完成后,重新计算K个聚类的中心时,对于连续数据,聚类中心取该簇的均值,但是当样本的某些属性是分类变量时,均值可能无定义,可以使用K-众数方法。
机器学习--k-means聚类原理“物以类聚,⼈以群分”, 所谓聚类就是将相似的元素分到⼀"类"(有时也被称为"簇"或"集合"), 簇内元素相似程度⾼, 簇间元素相似程度低. 常⽤的聚类⽅法有划分聚类, 层次聚类, 密度聚类, ⽹格聚类, 模型聚类等. 我们这⾥重点介绍划分聚类.1. 划分聚类划分聚类, 就是给定⼀个样本量为N的数据集, 将其划分为K个簇(K<N), 每⼀个簇中⾄少包含⼀个样本点.⼤部分的划分⽅法是基于距离的, 即簇内距离最⼩化, 簇间距离最⼤化. 常⽤的距离计算⽅法有: 曼哈顿距离和欧⼏⾥得距离. 坐标点(x1, y1)到坐标点(x2, y2)的曼哈顿距离和欧⼏⾥得距离分别表⽰为:为了达到全局最优解, 传统的划分法可能需要穷举所有可能的划分点, 这计算量是相当⼤的. ⽽在实际应⽤中, 通常会通过计算到均值或中⼼点的距离进⾏划分来逼近局部最优, 把计算到均值和到中⼼点距离的算法分别称为K-MEANS算法和K-MEDOIDS算法, 在这⾥只介绍K-MEANS 算法.2. K-MEANS算法K-MEANS算法有时也叫快速聚类算法, 其⼤致流程为:第⼀步: 随机选取K个点, 作为初始的K个聚类中⼼, 有时也叫质⼼.第⼆步: 计算每个样本点到K个聚类中⼼的距离, 并将其分给距离最短的簇, 如果k个簇中均⾄少有⼀个样本点, 那么我们就说将所有样本点分成了K个簇.第三步: 计算K个簇中所有样本点的均值, 将这K个均值作为K个新的聚类中⼼.第四步: 重复第⼆步和第三步, 直到聚类中⼼不再改变时停⽌算法, 输出聚类结果.显然, 初始聚类中⼼的选择对迭代时间和聚类结果产⽣的影响较⼤, 选不好的话很有可能严重偏离最优聚类. 在实际应⽤中, 通常选取多个不同的K值以及初始聚类中⼼, 选取其中表现最好的作为最终的初始聚类中⼼. 怎么算表现最好呢? 能满⾜业务需求的, 且簇内距离最⼩的.簇内距离可以簇内离差平⽅和表⽰:其中, K表⽰K个簇, n j表⽰第j个簇中的样本个数, x i表⽰样本, u j表⽰第j个簇的质⼼, K-means算法中质⼼可以表⽰为:3. 优缺点及注意事项优点:1. 原理简单, 计算速度快2. 聚类效果较理想.缺点:1. K值以及初始质⼼对结果影响较⼤, 且不好把握.2. 在⼤数据集上收敛较慢.3. 由于⽬标函数(簇内离差平⽅和最⼩)是⾮凸函数, 因此通过迭代只能保证局部最优.4. 对于离群点较敏感, 这是由于其是基于均值计算的, ⽽均值易受离群点的影响.5. 由于其是基于距离进⾏计算的, 因此通常只能发现"类圆形"的聚类.注意事项:1. 由于其是基于距离进⾏计算的, 因此通常需要对连续型数据进⾏标准化处理来缩⼩数据间的差异.(对于离散型, 则需要进⾏one-hot编码)2. 如果采⽤欧⼏⾥得距离进⾏计算的话, 单位的平⽅和的平⽅根是没有意义的, 因此通常需要进⾏⽆量纲化处理以上便是我本次分享的内容,如有任何疑问,请在下⽅留⾔,或在公众号【转⾏学数据分析】联系我。
第9章K-Means 聚类、辨别分析9.1理解聚类分析餐饮企业经常会碰到这样的问题:1)如何通过餐饮客户消费行为的测量,进一步评判餐饮客户的价值和对餐饮客户进行细分,找到有价值的客户群和需关注的客户群?2)如何合理对菜品进行分析,以便区分哪些菜品畅销毛利又高,哪些菜品滞销毛利又低?餐饮企业遇到的这些问题,可以通过聚类分析解决。
9.1.1常用聚类分析算法与分类不同,聚类分析是在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法。
与分类模型需要使用有类标记样本构成的训练数据不同,聚类模型可以建立在无类标记的数据上,是一种非监督的学习算法。
聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度将他们划分为若干组,划分的原则是组内样本最小化而组间(外部)距离最大化,如图9-1所示。
图9-1 聚类分析建模原理常用聚类方法见表9-1。
表9-1常用聚类方法常用聚类算法见图9-2。
表9-2常用聚类分析算法9.1.2K-Means聚类算法K-Means算法是典型的基于距离的非层次聚类算法,在最小化误差函数的基础上将数据划分为预定的类数K,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。
1.算法过程1)从N个样本数据中随机选取K个对象作为初始的聚类中心;2)分别计算每个样本到各个聚类中心的距离,将对象分配到距离最近的聚类中;3)所有对象分配完成后,重新计算K个聚类的中心;4)与前一次计算得到的K个聚类中心比较,如果聚类中心发生变化,转2),否则转5);5)当质心不发生变化时停止并输出聚类结果。
聚类的结果可能依赖于初始聚类中心的随机选择,可能使得结果严重偏离全局最优分类。
实践中,为了得到较好的结果,通常以不同的初始聚类中心,多次运行K-Means算法。
在所有对象分配完成后,重新计算K个聚类的中心时,对于连续数据,聚类中心取该簇的均值,但是当样本的某些属性是分类变量时,均值可能无定义,可以使用K-众数方法。
1.基本概念 (2)1.1 分类和聚类 (2)1.2 聚类算法 (2)1.3 划分法 (2)2.k-means算法 (3)2.1K-means算法 (3)2.2K-means算法图示 (4)2.3K-means性能分析 (8)2.4K-means算法优化 (9)2.4.1 k值选择 (9)2.4.2 初始聚类中心的选择 (10)1.基本概念1.1 分类和聚类我们首先看一下基本概念里的聚类与分类。
我们都知道,有些时候,数据是有标签的,比如,输入数据x(i)如果对应的人脸的特征,而它对应的标签y(i)是相对应的人年龄。
有标签的机器学习是有监督学习。
但有些时候,数据是没有标签的,对果数据向量没有标签,则表时这种机器学习是无监督的。
有监督学习可以用来判断种类,比如,我们可以把一个人的外貌貌特征作为输入x(i),而以他的职业作为标签,则表明我们在做分类。
同样,如果把一个人的外貌作为输入x(i),而使用他的年龄作为标签,由于年龄是一个数值,则表明我们在进行回归,回归是通过类别的或着数值的输入数据来拟合一个数值的输出。
这里,我们只说明比较分类和聚类,因此,回归这一块不再详述。
当数据没有标签,但我们却对数据能否自然归类感兴趣时,使用到的便是无监督学习中的聚类算法(clustering algorithm),目的是把这些无标签的数据按照它们的距离远近进行归类。
1.2 聚类算法简单举个例子来说明一下聚类算法的实用价值。
在商业上,聚类可以帮助市场分析人员从消费者数据库中区分出不同的消费群体来,并且概括出每一类消费者的消费习惯。
它作为数据挖掘中的一个模块,可以作为一个单独的工具来发现数据库中分布的一些深层的信息,并且概括出每一类的特点,或者把注意力放在某一个特定的类上做进一步的分析。
在商业上,聚类可以帮助市场分析人员从杂乱无章的消费者信息中来区分不同的消费的群体,从而总结这个消费群体的行为习惯,而引导消费。
聚类算法一般有五种方法,最主要的是划分方法和层次方法两种。
聚类分析⼀、K-Means前⾔⼈们常说“物以类聚,⼈以群分”,在⽣物学中也对⽣物从界门纲⽬科属种中进⾏了划分。
在统计学中,也有聚类分析法,通过把相似的对象通过静态分类的⽅法分成不同的组别或者更多的⼦集,从⽽让同⼀个⼦集中的成员都有相似的⼀些属性,然后对这些⼦集中的数据进⾏分析,其关键则在于聚类。
这系列⽂章将来讲讲各种聚类⽅法,这篇开篇⽂章将介绍下聚类的相关概念以及最基本的算法 K-Means。
聚类我们都知道,在机器学习中,⼀般分为有监督、⽆监督、半监督学习三类。
其中⽆监督学习常⽤的⽅法便是聚类。
将⼀个数据集分为多类后,每⼀类⼜称为簇,同⼀簇中的样本尽可能的相似,⽽不同簇中的样本尽可能不同。
即具有⾼类内相似性和低类间相似性的特点。
聚类的⽅法⼤致可分为两种分区(Partitional algorithms )基于原型:K-Means ,GMM 等基于密度:DBACAN ,MeanShift 等分层(Hierarchical algorithms )⾃顶向下⾃底向上这⾥,就不禁产⽣⼀个疑问,我们以什么为标准进⾏聚类?这也就涉及到了相似度的问题,即我们如何判断两个样本数据是不是相似的?如果数据特征只有⼆维,那我们把数据中的点放置在⼆维坐标系中,如果属于⼀类,那这些点肯定是会离得⽐较近,这个近实际上就是我们的相似度度量标准,即距离。
那当特征维数增加,在超平⾯中来划分类,⾃然也可以通过距离来度量相似性。
常见的距离Minkowski 距离D mk (x ,z )=(∑n i =1|x i −z i |p )1p 当 p =2 时,为欧⽒距离 D ed (x ,z )=||x −z ||=∑ni =1|x i −z i |2当 p =1 时,为曼哈顿距离(城市距离) D man (x ,z )=||x −z ||1=∑n i =1|x i −z i |若 p =+∞ 时,为 sup 距离 D sup =||x −z ||∞=max n i =1|x i −z i |Hamming 距离当特征为⼆值特征时,Minkowski 距离⼜被称为 Hamming 距离⽪尔森相关系数S p(x ,z )=∑n i =1(x i −¯x )(z i −¯z )∑n i =1(x i −¯x )2×∑n i =1(z i −¯z )2余弦距离S c (x ,z )=X T z||x ||||z ||K-Means算法流程K-Means 算法很好理解,⾸先需要指定聚类簇的个数 K。
机器学习之k均值算法(K-means)聚类简介聚类:⼀种⽆监督学习,是先不知道类别,⾃动将相似的对象归到同⼀簇中根据欧式距离选择较近的⼏个点判断类别欧式距离计算公式其中K是事先给定的,这个K值的选定是⾮常难以估计的,事先并不知道给定的数据集应该分为多少个类别才算合适(ISODATA算法通过类的⾃动合并和分裂,得到较为合理的类型数⽬K)K-Means算法需要⽤初始随机种⼦点,这个随机种⼦点很重要,不同的随机种⼦点会得到完全不同的效果(K-Means++算法可以⽤来解决这个问题,可以有效的选择初始点)K-Means步骤从数据中选择k个对象作为初始聚类中⼼计算每个聚类对象到中⼼的距离来划分类重新计算每个聚类中⼼点计算标准测度函数,直到达到最⼤迭代次数,则停⽌,否则继续操作确定最优的聚类中⼼常见错误中⼼数量不正确n_cluster数据偏差,造成分类错误样本⽅差不⼀致cluster_std样本数量不⼀致半监督学习,⽤⼩的数据训练,来预测较⼤的数据应⽤实例import sklearn.datasets as datasetfrom sklearn.cluster import KMeansimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltx_train,target = dataset.make_blobs(n_samples=200,centers=3)kmn = KMeans(n_clusters=3)kmn.fit(x_train)y_new = kmn.predict(x_train)centers = kmn.cluster_centers_plt.figure(figsize=(16,9))plt.subplot(221)plt.scatter(x_train[:,0],x_train[:,1],c=y_new) #预测分类plt.scatter(centers[:,0],centers[:,1],c='r',s=100,alpha=0.6)plt.subplot(222)plt.scatter(x_train[:,0],x_train[:,1],c=target)plt.savefig('k.png')。
第9章K-Means 聚类、辨别分析9.1理解聚类分析餐饮企业经常会碰到这样的问题:1)如何通过餐饮客户消费行为的测量,进一步评判餐饮客户的价值和对餐饮客户进行细分,找到有价值的客户群和需关注的客户群?2)如何合理对菜品进行分析,以便区分哪些菜品畅销毛利又高,哪些菜品滞销毛利又低?餐饮企业遇到的这些问题,可以通过聚类分析解决。
9.1.1常用聚类分析算法与分类不同,聚类分析是在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法。
与分类模型需要使用有类标记样本构成的训练数据不同,聚类模型可以建立在无类标记的数据上,是一种非监督的学习算法。
聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度将他们划分为若干组,划分的原则是组样本最小化而组间(外部)距离最大化,如图9-1所示。
图9-1 聚类分析建模原理常用聚类方法见表9-1。
表9-1常用聚类方法类别包括的主要算法常用聚类算法见图9-2。
表9-2常用聚类分析算法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 聚类算法中,一般需要度量样本之间的距离、样本与簇之间的距离以及簇与簇之间的距离。
度量样本之间的相似性最常用的是欧几里得距离、曼哈顿距离和闵可夫斯基距离;样本与簇之间的距离可以用样本到簇中心的距离(,)i d e x ;簇与簇之间的距离可以用簇中心的距离(,)i j d e e 。
用p 个属性来表示n 个样本的数据矩阵如下:1111p n n p x x x x ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦欧几里得距离(,)d i j =曼哈顿距离1122(,)||+||++||i j i j ip jpd i j x x x x x x =--- (9-2)闵可夫斯基距离(,)d i j = (9-3)q 为正整数,=1q 时即为曼哈顿距离;=2q 时即为欧几里得距离。
(2) 文档数据对于文档数据使用余弦相似性度量,先将文档数据整理成文档—词矩阵格式,如表9-3。
表9-3 文档—词矩阵两个文档之间的相似度的计算公式为:(,)cos(,)||||i jd i j i j i j ⋅==(9-4)3. 目标函数使用误差平方和SSE 作为度量聚类质量的目标函数,对于两种不同的聚类结果,选择误差平方和较小的分类结果。
连续属性的SSE 计算公式为:21(,)iKi i x E SSE dist e x =∈=∑∑ (9-5)文档数据的SSE 计算公式为:21cos(,)iKii x E SSE e x =∈=∑∑ (9-6)簇i E 的聚类中心i e 计算公式为:1ii x E ie x n ∈=∑ (9-7)表9-4 符号表下面结合具体案例来实现本节开始提出问题。
部分餐饮客户的消费行为特征数据如表9-5。
根据这些数据将客户分类成不同客户群,并评价这些客户群的价值。
表9-5消费行为特征数据采用K-Means聚类算法,设定聚类个数K为3,距离函数默认为欧氏距离。
执行K-Means聚类算法输出的结果见表9-6。
表9-6聚类算法输出结果以下是绘制的不同客户分群的概率密度函数图,通过这些图能直观地比较不同客户群的价值。
图9-2分群1的概率密度函数图图9-3分群2的概率密度函数图图9-4分群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 方法是极为简单的一种聚类评价方法,只需计算正确聚类数占总数的比例:1(,)max ||k i ik purity X Y x y n =⋂∑ (9-8)其中,()12,,,k x x x x =是聚类的集合。
k x 表示第k 个聚类的集合。
()12,,,k y y y y =表示需要被聚类的集合,i y 表示第i 个聚类对象。
n 表示被聚类集合对象的总数。
(2) RI 评价法实际上这是一种用排列组合原理来对聚类进行评价的手段,RI 评价公式如下:R WRI R M D W+=+++ (9-10)其中R 是指被聚在一类的两个对象被正确分类了,W 是指不应该被聚在一类的两个对象被正确分开了,M 指不应该放在一类的对象被错误的放在了一类,D 指不应该分开的对象被错误的分开了。
(3) F 值评价法这是基于上述RI 方法衍生出的一个方法,F 评价公式如下:22(1)prF p rααα+=+ (9-11)其中R p R M =+,Rr R D=+。
实际上RI 方法就是把准确率p 和召回率r 看得同等重要,事实上有时候我们可能需要某一特性更多一点,这时候就适合使用F 值方法。
9.2实例1—利用K-Means 聚类确定患冠心病的高风险人群9.2.1 背景和概要说明Sonia 在一家主要健康保险公司担任项目总监。
最近她一直在阅读医学刊物和其他文章,并发现好多文章都在强调体重、性别和胆固醇对患冠心病的影响。
她阅读的研究文件一次又一次地确认这三个变量之间存在关联。
尽管人们无法在自己的性别方面下功夫,但无疑可以通过选择合理的生活方式来改变胆固醇水平和体重。
于是她开始提议公司为健康保险客户提供体重和胆固醇管理项目。
在考虑她的工作在哪里开展可能最为有效时,她希望了解是否存在发生高体重和高胆固醇风险最高的自然群体,如果存在,这些群体之间的自然分界线在哪里。
9.2.2业务理解Sonia 的目标是确定由公司提供保险服务且因体重和/或高胆固醇患冠心病的风险非常高的人员,并试图联络这些人员。
她了解患冠心病风险较低的人员,即体重和胆固醇水平较低的人员不太可能会参加她提供的项目。
她还了解可能存在高体重和低胆固醇、高体重和高胆固醇,以及低体重和高胆固醇的保单持有人。
她还认识到可能会有许多人介于它们之间。
为了实现目标,她需要在数以千计的保单持有人中搜索具有类似特征的群体,并制定相关且对这些不同的群体有吸引力的项目和沟通方式。
9.2.3数据理解使用该保险公司的索赔数据库,Sonia 提取了 547 个随机挑选的人员的三个属性,即受保人最近的体检表上记录的体重(单位:磅)、最近一次验血时测得的胆固醇水平,以及性别。
和在许多数据集中的典型做法一样,性别属性使用 0 来表示女性,并使用 1 来表示男性。
我们将使用从 Sonia 公司的数据库中提取的这些样本数据构建聚类模型,以便帮助 Sonia 了解公司的客户(即健康保险保单持有人)根据体重、性别和胆固醇水平进行分组的情况。
我们应切记在构建模型时,均值尤其容易受到极端离群点的不当影响,因此在使用 K 均值聚类数据挖掘方法时查看是否存在不一致的数据至关重要。
9.2.4数据准备将“.K-Means聚类.csv”数据集导入到 RapidMiner 数据存储库中,保存为//Local Repository/data/K-Means聚类。
我们可以看到先前定义的三个属性有 547 个观察项。
我们可以看到三个属性中的每个属性的平均值,以及对应的标准差和围,如图9.5。
其中没有看起来不一致的值(切记前面关于使用标准差查找统计离群点的备注)。
由于没有缺失的值要处理,因此数据看起来非常干净,并可直接进行挖掘。
图9.5 数据基本信息9.2.5操作步骤第一步:对数据进行聚类将数据拖拽到操作视图界面,检索“k-Means”操作符并将其与数据进行连接,然后与输出端口连接,点击运行,我们可以看到如图运行结果,在参数设置如图9.6 中,我们可以设计聚成的k的类数,以及“max runs”最大循环迭代的次数。
图9.6 k-Means聚类参数设置第二步:结果集过滤将“Filter Examples”结果集过滤操作符拖进操作界面,如图9.7,在参数设置中,选择类别等于类别0,如图9.8。
图9.7 操作符流程视图图9.8 结果集过滤参数设置第三步:输出结果点击运行,我们可以看到如图9.9的输出结果图9.9 筛选类别后的输出结果这样我们的主人公,就可以根据显示输出的结果,来重点关注疾病的高发人群,从而有针对性的进行服务。
9.3实例2—利用判别分析技术分类运动员专攻项目9.3.1背景和概要说明Gill 运营着一个体育学院,旨在帮助高中年纪的运动员最大限度地发挥其在体育方面的潜力。
对于学院的男生,他侧重于四个主要体育项目,即橄榄球、篮球、棒球和曲棍球。
他发现虽然许多高中运动员在念高中时都喜欢参加多种体育项目,但随着他们开始考虑在大学时从事的体育项目,他们将倾向于专攻某一项。
通过多年来与运动员之间的合作,Gill 整理了一个容非常广泛的数据集。
现在他想知道他是否可以使用先前部分客户的以往成绩,为即将到来的高中运动员预测主攻的体育项目。
最终,他希望可以就每个运动员可能最应选择专攻哪个体育项目,向他们提供建议。
通过评估每个运动员在一系列测试中的成绩,Gill 希望我们可以帮助他确定每个运动员在哪个体育项目方面资质最高。
9.3.2判别分析的含义判别分析(Discriminant Analysis,简称DA)技术是由费舍(R.A.Fisher)于1936年提出的。