聚类

本文介绍了聚类的基本概念,聚类与分类的区别,以及聚类的一般过程。重点讲解了划分式聚类方法,包括k-means算法的度量标准、更新方式、迭代结束条件及其缺点。k-means++是对k-means的改进,旨在优化初始质心的选择。此外,文章还提到了基于密度的聚类方法DBSCAN,该方法适用于处理非凸形状的数据集。
摘要由CSDN通过智能技术生成

聚类

1.聚类

定义

聚类(Clustering)是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。也即聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。

聚类和分类的区别
  • 聚类(Clustering):是指把相似的数据划分到一起,具体划分的时候并不关心这一类的标签,目标就是把相似的数据聚合到一起,聚类是一种无监督学习(Unsupervised Learning)方法。
  • 分类(Classification):是把不同的数据划分开,其过程是通过训练数据集获得一个分类器,再通过分类器去预测未知数据,分类是一种监督学习(Supervised Learning)方法。
聚类的一般过程
  1. 数据准备:特征标准化和降维
  2. 特征选择:从最初的特征中选择最有效的特征,并将其存储在向量中
  3. 特征提取:通过对选择的特征进行转换形成新的突出特征
  4. 聚类:基于某种距离函数进行相似度度量,获取簇
  5. 聚类结果评估:分析聚类结果,如距离误差和(SSE)
数据对象间的相似度度量

相似性度量的准则可以参考欧式距离与曼哈顿距离。

cluster之间的相似度度量

除了需要衡量对象之间的距离之外,有些聚类算法(如层次聚类)还需要衡量cluster之间的距离 。

v2-efc243a0fd595089412bd617eaa0d78b_r

Single-link:定义两个cluster之间的距离为两个cluster之间距离最近的两个点之间的距离,这种方法会在聚类的过程中产生链式效应,即有可能会出现非常大的cluster。

Complete-link定义的是两个cluster之间的距离为两个cluster之间距离最远的两个点之间的距离,这种方法可以避免链式效应,对异常样本点(不符合数据集的整体分布的噪声点)却非常敏感,容易产生不合理的聚类

UPGMA正好是Single-link和Complete-link方法的折中,他定义两个cluster之间的距离为两个cluster之间所有点距离的平均值

WPGMA方法计算的是两个 cluster 之间两个对象之间的距离的加权平均值,加权的目的是为了使两个 cluster 对距离的计算的影响在同一层次上,而不受 cluster 大小的影响,具体公式和采用的权重方案有关。

2.数据聚类方法

数据聚类方法主要可以分为划分式聚类方法(Partition-based Methods)、基于密度的聚类方法(Density-based methods)、层次化聚类方法(Hierarchical Methods)等。

v2-05343ed3ff48cec83244ab64760acdeb_r
划分式聚类方法

划分式聚类方法需要事先指定簇类的数目或者聚类中心,通过反复迭代,直至最后达到簇内的点足够近,簇间的点足够远的目标。经典的划分式聚类方法有k-means及其变体k-means++bi-kmeanskernel k-means等。

k-means算法

经典的k-means算法的流程如下:

1.创建K个点作为初始质心(通常是随机选择)
2.当任意一个点的簇分配结果发生改变时
	1.对数据集中的每个数据点
    	1.对每个质心
        	1.计算质心与数据点之间的距离
        2.将数据点分配到距其最近的簇
    2.对每个簇,计算簇中所有点的均值并将均值作为质心

下左图是原始数据集,通过观察发现大致可以分为4类,所以取 K = 4 K=4 K=4,测试数据效果如下右图所示。v2-ed9693a3d8d82d6ebb459949ec475877_r

度量标准

k-means算法以距离作为数据对象间相似性度量的标准,通常采用欧氏距离来计算数据对象间的距离。

d i s t ( x i , x j ) = ∑ d = 1 D ( x i , d − x j , d ) 2 (1) dist(x_i,x_j)=\sqrt{\sum\limits^{D}\limits_{d=1}(x_{i,d}-x_{j,d})^2}\tag1 dist(xi,xj)=d=1D(xi,dxj,d)2 (1)

其中D表示数据对象的属性个数。

更新方式

k-means算法聚类过程中,每次迭代,对应的类簇中心需要重新计算(更新):对应类簇中所有数据对象的均值,即为更新后该类簇的类簇中心。定义第 k k k个类簇的类簇中心为 C e n t e r k Center_k Centerk,则类簇中心更新方式如下:

C e n t e r k = 1 ∣ C k ∣ ∑ x i ∈ C k x i (2) Center_k=\frac{1}{|C_k|}\sum\limits_{x_i\in C_k}x_i \tag2 C

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值