聚类就是将一个对象的集合(样本集合)分割成几个不想交的子集(每个子集所代表的语义需要使用者自己进行解释),每个类内的对象之间是相似的,但与其他类的对象是不相似的.
分割的类的数目可以是指定的(例如k-means),也可以是有算法生成的(DBSCAN).聚类是无监督学习的一个有用工具。
1原型聚类:
原型聚类是指聚类结构能够通过一组原型刻画,即样本空间中具有代表性的点。也就是说聚类是通过具有代表性的掉刻画的。著名的原型聚类方法包括K-means聚类和高斯混合聚类
k-means 聚类(动态聚类算法)
算法步骤:1、选择k个初始聚类中心
2、按照距离最小原则对数据进行归类
3、重新计算聚类中心
4、如果第 i+1 代的聚类中心和第 i 代的中心一致,算法收敛
高斯混合聚类(软聚类)
高斯混合模型(Gaussian Mixture Model, GMM)。这种聚类方法得到的是每个样本点属于各个类的概率,而不是判定它完全属于一个类,所以有时也会被称为软聚类。
其中K 为模型的个数;πk为第k个高斯的权重;p(x
/ k) 则为第k个高斯概率密度,其均值为μk,方差为σk。对此概率密度的估计就是要求出πk、μk 和σk 各个变量。当求出p(x )的表达式后,求和式的各项的结果就分别代表样本x 属于各个类的概率。
求各个参数使用EM算法。
2密度聚类
假设聚类的结构通过样本的密度来确定。DBSCAN算法是常用的密度聚类算法。DBSCAN算法通过一组邻域参数(r ,MinPts)描述样本的紧密程度。
在DBSCAN算法中将数据点分为一下三类:
-
- 核心点。在半径Eps内含有超过MinPts数目的点
- 边界点。在半径Eps内点的数量小于MinPts,但是落在核心点的邻域内
- 噪音点。既不是核心点也不是边界点的点
DBSCAN的几个概念: -
(1)r-邻域。对任意Xi属于数据集D,其r邻域包含样本集D中与Xi的距离不大于r的样本,即N(Xi)={Xj属于D,dist(Xi,Xj)<=r}。
-
(2)核心对象。核心对象就是r-邻域内至少包含MinPts个样本,即|N(Xi)|>=MinPts,那么Xi为一个核心对象。
-
(3)密度直达。如果Xj位于Xi的r-邻域内,并且Xi为核心对象,则称Xj由Xi密度直达。
-
(4)密度可达。对Xi与Xj,如果存在样本序列P1,P2…Pn,其中P1=Xi,Pn=Xj且P(i+1)由Pi密度直达,则称Xj由Xi密度可达。
-
-
(5)密度相连。对Xi与Xj,如果存在Xk使得Xi与Xj均由Xk密度可达,则称Xi与Xj密度相连。(以Xk)
(1) 先找出所有的核心对象来。
(2) 然后对所有的核心对象进行随机遍历,找出所有的密度可达点。(可达的概念还是挺重要的,其实就是核心点在中间当做桥梁,即一个核心对象的邻域内也包含其他的核心对象,这样就可以串下去了)
(3) 当所有的核心对象点遍历完之后,剩下的点就是噪声点或者是低密度区域。
3 层次聚类(Hierarchical Clustering)
假设有N个待聚类的样本,对于层次聚类来说,基本步骤就是:
1、(初始化)把每个样本归为一类,计算每两个类之间的距离,也就是样本与样本之间的相似度;
2、寻找各个类之间最近的两个类,把他们归为一类(这样类的总数就少了一个);
3、重新计算新生成的这个类与各个旧类之间的相似度;
4、重复2和3直到所有样本点都归为一类,结束。