聚类:
- 通过一定的算法将原始数据划分成多个数据簇
- 没有预先定义好的类别
- 同一簇内部数据样本之间有很大的相似性,不同簇内部的数据相似性很小
相似度与距离度量:
定义距离来度量表示相似度:欧式距离,曼哈顿距离( D i j = ∣ x i − x j ∣ + ∣ y i − y j ∣ D_{ij}=|x_i-x_j|+|y_i-y_j| Dij=∣xi−xj∣+∣yi−yj∣),闵可夫斯基距离(n次欧式距离),切比雪夫距离( D i j = m a x ∣ x i − x j ∣ D_{ij}=max|x_i-x_j| Dij=max∣xi−xj∣)
1 聚类算法分类
1.基于划分
给定一个有N个元组或者纪录的数据集,分裂法将构造K个分组,每一个分组就代表一个聚类,K<N。
特点:计算量大。很适合发现中小规模的数据库中小规模的数据库中的球状簇。
算法:K-means算法、K-medians算法、CLARANS算法
2.基于层次
对给定的数据集进行层次似的分解,直到某种条件满足为止。具体又可分为“自底向上”和“自顶向下”两种方案。
特点:较小的计算开销。然而这种技术不能更正错误的决定。
算法:BIRCH算法、CURE算法、CHAMELEON算法
3.基于密度
只要一个区域中的点的密度大过某个阈值,就把它加到与之相近的聚类中去。
特点:能克服基于距离的算法只能发现“类圆形”的聚类的缺点。
算法:DBSCAN算法、OPTICS算法、DENCLUE算法
4.基于网格
将数据空间划分成为有限个单元(cell)的网格结构,所有的处理都是以单个的单元为对象的。
特点:处理速度很快,通常这是与目标数据库中记录的个数无关的,只与把数据空间分为多少个单元有关。
算法:STING算法、CLIQUE算法、WAVE-CLUSTER算法
硬聚类和软聚类
硬聚类(hard clustering)是指数据集中的样本只能划分到一个簇中,如k-means算法。软聚类(soft clustering)或模糊聚类(fuzzy clustering)可以将一个样本划分到多个不同的簇中,如C-means(FCM)算法,FCM的计算步骤与k-means相似,只是FCM是使用样本属于不同簇的概率来代替k-means中的类标。样本属于不同簇的概率之和为1。
2 k-means
K-Means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。
2.1 算法描述
迭代收敛定义:
(1)聚类中心不再有变化
(2)每个样本到对应聚类中心的距离之和不再有很大变化
损失函数:
假定 u 1 , u 2 , . . . , u k u_1,u_2,...,u_k u1,u2,...,uk 为K个聚类中心,用 r n k ∈ 0 , 1 r_{nk}\in{0,1} r