聚类

机器学习数据挖掘

聚类」(Clustering)是按照某个特定标准把一个数据集分割成不同的类,使得类内相似性尽可能地大,同时类间的区别性也尽可能地大。聚类是一种应用最广的无监督学习学习算法。聚类算法试图按照数据相似性与相异性将数据集中的样本划分为若干通常是不相交的子集,每个子集称为一个「

用数学的语言描述,假定样本集 包含 个无标记样本,聚类算法将样本集 划分为 个不相交的簇 ,且 ,用 代表样本 的「簇标记」(Cluster Label),即 ,聚类结果可用包含 个元素的簇标记向量 表示

通过这样的划分,每个簇可能对应于一些潜在的类别,这些概念对聚类算法而言是事先未知的,聚类过程仅能自动形成簇结构,簇所对应的概念语义需由使用者来把握命名。

聚类通常作为数据挖掘的第一步,例如“哪一种类促销客户的相应最好?”,对于这一类问题,首先对整个客户做聚类,将客户分组在各自的聚类里,然后对每个不同的聚类,回答问题,效果会更好。

聚类方法主要包括「划分聚类」和「层次聚类

挑战

聚类算法面临的主要挑战包括

  • 可伸缩性要求:指聚类算法不论对小数据集还是对于大数据集,都应是有效的。在很多聚类算法当中,数据对象小于几百个的小数据集合上鲁棒性很好,而对于包含上万个数据对象的大规模数据库进行聚类时,将会导致不同的偏差结果
  • 能够发现任意形状的聚类:许多聚类算法经常用Euclidean 距离来作为相似性度量方法,但基于这样的距离度量的算法趋向于发现具有相似密度和相同大小的球状簇。提出能发现任意形状簇的算法是很重要的。
  • 输入参数对领域知识的弱依赖性:在聚类分析当中,许多聚类算法通常要求用户输入一定的参数,如希望得到的簇的数目。聚类结果对于输入的参数很敏感,通常参数较难确定,尤其是对于含有高维对象的数据集更是如此。人工输入参数不但加重了用户负担,也使得聚类质量难以控制。
  • 对输入记录顺序不敏感:一些聚类算法对于输入数据的顺序是敏感的。例如,对于同一个数据集合,以不同的顺序提交给同一个算法时,可能产生差别很大的聚类结果。研究和开发对数据输入顺序不敏感的算法具有重要意义。
  • 噪声数据:现实应用中多数数据都包含了孤立点、空缺、未知数据或错误的数据。如聚类算法对于这样的数据敏感,将会导致质量较低的聚类结果
  • 基于约束的聚类:在实际应用当中可能需要在各种约束条件下进行聚类。既要找到满足特定的约束,由具有良好聚类特性的数据分组是一项具有挑战性的任务。
  • 高维度:高维度的数据可能比较稀疏,而且高度倾斜
  • 可解释性和可用性:聚类与特定的语义解释和应用相联系

应用

聚类算法在许多领域有着广泛应用,如数据挖掘,统计学习,机器学习 ,模式识别等。聚类既能用于寻找数据内部的分布结构,也可作为分类等其他学习任务的预处理步骤K-近邻分类

  • 数据预处理:利用聚类进行数据预处理,可以获得数据的基本概况,在此基础上进行特征抽取或分类就可以提高精确度和挖掘效率。也可将聚类结果用于进一步关联分析,以获得进一步的有用信息
  • 获取数据分布:聚类分析是获得数据分析情况的有效方法。通过观察聚类得到的每个簇的特点,可以几种对特定的某些簇作进一步分析。在如市场细分、目标顾客定位、业绩估评、生物种群划分的各个方面具有广阔的应用前景。聚类分析也可以完成孤立点挖掘。如在欺诈探测中,孤立点可能预示着欺诈行为的存在

性能度量

聚类的性能度量也称为聚类的有效性指标,用来评估聚类结果的好坏

什么样的聚类结果比较好?「物以类聚」,同一簇的样本尽可能相似,不同簇的样本尽可能不同。即聚类结果的「簇内相似度」高,「簇间相似度」低。

因此有两种性能度量指标

  • 外部指标:将聚类结果与某个参考模型进行比较
  • 内部指标:直接考察聚类结果而不利用任何参考模型

外部指标

由此得到聚类性能的外部指标。

内部指标

考虑聚类结果的簇划分 。令 为两个样本之间的距离度量 为簇 中心点

样本间的平均距离为

样本间的最远距离

与簇 最近样本间的距离

与簇 中心点之间的距离

由此得到聚类性能度量的内部指标

距离计算聚类

原型聚类

密度聚类

层次聚类

孤立点分析

小结

  • 聚类算法的性能衡量指标
  • 聚类算法中常用的距离计算方法
  • 原型聚类的概念,以及原型聚类中的 均值算法、学习向量量化、高斯混合聚类的基本概念
  • 密度聚类的概念,详细介绍了 DBSCAN,CFSFDP 算法
  • 层次聚类的概念