聚类是一种无监督的学习(无监督学习不依赖预先定义的类或带类标记的训练实例),它将相似的对象归到同一个簇中,它是观察式学习,而非示例式的学习,有点像全自动分类。
说白了,聚类(clustering)是完全可以按字面意思来理解的——将相同、相似、相近、相关的对象实例聚成一类的过程。机器学习中常见的聚类算法包括 k-Means算法、期望最大化算法(Expectation Maximization,EM,参考“EM算法原理”)、谱聚类算法(参考机器学习算法复习-谱聚类)以及人工神经网络算法,本文阐述的是K-均值聚类算法,本文介绍K-均值(K-means)和二分K-均值聚类算法。
机器学习经典算法详解及Python实现–K近邻(KNN)算法
机器学习经典算法详解及Python实现–线性回归(Linear Regression)算法
机器学习经典算法详解及Python实现–决策树(Decision Tree)
机器学习经典算法详解及Python实现–CART分类决策树、回归树和模型树
(一)何谓聚类
还是那句“物以类聚、人以群分”,如果预先知道人群的标签(如文艺、普通、2B),那么根据监督学习的分类算法可将一个人明确的划分到某一类;如果预先不知道人群的标签,那就只有根据人的特征(如爱好、学历、职业等)划堆了,这就是聚类算法。
聚类是一种无监督的学习(无监督学习不依赖预先定义的类或带类标记的训练实例),它将相似的对象归到同一个簇中,它是观察式学习,而非示例式的学习,有点像全自动分类。
所谓簇就是该集合中的对象有很大的相似性,而不同集合间的对象有很大的相异性。簇识别(cluster identification)给出了聚类结果的含义,告诉我们这些簇到底都是些什么。通常情况下,簇质心可以代表整个簇的数据来做出决策。聚类方法几乎可以应用于所有对象,簇内的对象越相似,聚类的效果越好。
从机器学习的角度讲,簇相当于隐藏模式,聚类与分类的最大不同在于,分类学习的实例或数据对象有类别标记,而聚类则不一样,需要由聚类学习算法自动确定标记。因为其产生的结果与分类相同,而只是类别没有预先定义,所以聚类也被称为无监督分类(unsupervised classification )。
聚类分析是一种探索性的分析,在分类的过程中,人们不必事先给出一个分类的标准,聚类分析能够从样本数据出发,自动进行分类。聚类分析所使用方法的不同,常常会得到不同的结论。不同研究者对于同一组数据进行聚类分析,所得到的聚类数未必一致。
从实际应用的角度看,聚类分析是数据挖掘的主要任务之一。而且聚类能够作为一个独立的工具获得数据的分布状况,观察每一簇数据的特征,集中对特定的聚簇集合作进一步地分析。聚类分析还可以作为其他算法(如分类和定性归纳算法)的预处理步骤。
聚类分析试图将相似对象归入同一簇,将不相似对象归到不同簇,那么是否“相似”就要有所选择的相似度计算方法。现在,存在多种不同的相似度计算方法,到底使用哪种相似度计算方法取决于具体应用,选择合适的相似度计算方法才会提高聚类算法的性能。机器学习中常用的相似性度量方法参考博文“机器学习中的相似性度量”。
聚类算法通常按照中心点或者分层的方式对输入数据进行归并,所以的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类,其目标是使同一类对象的相似度尽可能地大;不同类对象之间的相似度尽可能地小。
目前聚类的方法很多,根据基本思想的不同,大致可以将聚类算法分为五大类:层次聚类算法、分割聚类算法、基于约束的聚类算法、机器学习中的聚类算法和用于高维度的聚类算法,参考“各种聚类算法的比较”。聚类算法的基本过程包含特征选择、相似性度量、聚类准则、聚类算法和结果验证等,具体参考“聚类算法学习笔记(一)——基础”。
说白了,聚类(clustering)是完全可以按字面意思来理解的——将相同、相似、相近、相关的对象实例聚成一类的过程。简单理解,如果一个数据集合包含N个实例,根据某种准则可以将这N个实例划分为m个类别,每个类别中的实例都是相关的,而不同类别之间是区别的也就是不相关的,这就得到了一个聚类模型了。判别新样本点的所属类时,就通过计算该点与这m个类别的相似度,选择最相似的那个类作为该点的归类。