聚类算法整理


无监督学习希望通过对无标记训练样本的学习来揭露数据的内在性质以及规律,而其中应用最广泛的就是聚类算法(clustering):给定数据集,聚类试图将数据集中的样本划分为 K 个不相交的子集,每个子集称为一个簇(cluster),每个簇可能对应于一个潜在的概念,这些概念对于聚类算法而言,事先可能是未知的。

聚类可以作为一个单独的过程,用于寻找数据内在的分布结构,也可以作为其他学习任务的前驱过程。需要注意的是,聚类并没有唯一的评价标准,可能很多不同的聚类都很好地对应了现实世界的某些属性,它们都是合理的。如:在图片识别中包含的图片有:红色卡车、红色汽车、灰色卡车、灰色汽车。可以聚类成:红色一类、灰色一类;也可以聚类成:卡车一类、汽车一类。

有效性指标

对于聚类任务,希望同一簇的样本尽可能彼此相似,不同簇的样本之间尽可能不同,即簇内相似度高,簇间相似度低。聚类的有效性指标分为两类:聚类结果与某个参考模型(reference model)进行比较,称作外部指标(external index);直接考察聚类结果而不利用任何参考模型,称作内部指标(internal index)。
常用的外部指标有:Jaccard系数、FM指数、Rand指数、ARI指数;
常用的内部指标有:DB指数、Dunn指数;

原型聚类

原型聚类算法假设聚类结构可以通过一组原型刻画,通常算法选会对原型进行初始化,然后对原型进行迭代更新求解,不同的原型表示和不同的求解方式会产生不同的算法。

k-means 算法

k-means算法的目标是通过设立 k 个原型,将训练集划分成 k 簇,然后最小化簇中实例和对应原型的欧氏距离,即:
在这里插入图片描述
上式是一个 NP-hard 问题,因此 k-means 算法采用了一种“贪心”策略,通过迭代优化来求近似解(EM算法)。

算法步骤
输入: 训练集 D,聚类簇数量 k
输出: k 个均值向量
(1) 初始化均值向量:从训练集 D 中随机抽取 k 个样本作为初始化均值向量;
(2) 聚类划分:对训练集 D 中每个样本分别计算其离各个均值向量的欧氏距离,将样本划分到距离最小的那一簇;
(3) 重置均值向量:对每个簇,按照极大似然估计的思想,计算其均值向量,作为该簇的新的均值向量;
(4) 迭代求解:迭代 (2)、(3) 直至均值向量未发生变化或者迭代次数到达上限为止,返回均值向量。

k-means的优点: 计算复杂度低,为 O(N x K x q) ,其中 N 为样本数量,q 为迭代次数,通常 K 和 q 要远远小于 N,此时复杂度相当于 O(N);当数据集是密集的、球状或团状的簇群,且簇与簇之间区别明显时,聚类效果很好。
k-means的缺点: 需要首先确定聚类的数量K;分类结果严重依赖于分类中心的初始化;对噪声敏感。因为簇的中心是取平均,因此聚类簇很远地方的噪音会导致簇的中心点偏移;无法解决不规则形状的聚类;

k值的选择

手肘法: 核心指标是SSE(sum of the squared errors,误差平方和),
在这里插入图片描述
其中Ci是第i个簇,p是Ci中的样本点,mi是Ci的质心,SSE是所有样本的聚类误差,代表了聚类效果的好坏。
手肘法的核心思想是:随着聚类数k的增大,样本划分会更加精细,每个簇的聚合程度会逐渐提高,那么误差平方和SSE自然会逐渐变小。并且,当k小于真实聚类数时,由于k的增大会大幅增加每个簇的聚合程度,故SSE的下降幅度会很大,而当k到达真实聚类数时,再增加k所得到的聚合程度回报会迅速变小,所以SSE的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,也就是说SSE和k的关系图是一个手肘的形状,而这个肘部对应的k值就是数据的真实聚类数,如下图所示:
在这里插入图片描述

轮廓系数法: 某个样本点Xi的轮廓系数定义如下,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值