聚类算法是非监督算法,两大子集:
- 数据聚类:多次聚类找到数据的最优分割(使同类样本相似度高,不同类相似度低)
- 特征变量关联:利用各种相关系找到特征之间的关系
KMeans:最常用的聚类算法
核心思想:使每个样本点离所属类质心的距离之和最小
算法步骤:
- 数据预处理,归一化、剔除outlier
- 随机初始K个质心
- 定义代价函数:J(c,u)=1M∑iM∣∣xi−uci∣∣2J(c,u)=\frac1M\sum_i^M||x_i-u_{c_i}||^2J(c,u)=M1∑iM∣∣xi−uci∣∣2
- 计算每个样本点到每个质心的距离,把样本归入最近的质心簇
- 计算每个质心簇的质心
- 迭代4、5步,直到J(c,u)J(c,u)J(c,u)收敛
优点:
- 训练相对快
- 只需要存储K个质心点,存储压力小
- 预测速度快
- 即使是局部最优解,通常也能满足需求
缺点:
- 代价函数为平方和,容易受到outlier、方差加大的特征、量纲大的特征的影响。故需要第一步做数据预处理
- 随机初始K个质心,导致模型不稳定(结果和训练时间)。例如K个质心都很接近,迭代时间就很长。
- 通常只能获得局部最优解
- 当数据簇分布不平衡时,效果差。(样本不平衡)
- 不适用于离散变量较多的情况
- 特征维度不能太大(欧几里得距离的缺陷,受到维度的影响)
调优:
- 归一化、处理outlier
- 选取合适的K值。方法:业务经验、手肘法、Gap Statistic法
- 手肘法:选择不同的K值,获得不同的损失函数,制作折线图。取拐点作为最佳取值点。如下图选择K=3

- Gap Statistic法:手肘法不够自动化。定义Gap(k)=E(log(Dk))−log(Dk)Gap(k)=E(log(D_k))-log(D_k)Gap(k)=E(log(Dk))−log(Dk)Dk是取K值时的损失函数,E(log(Dk))通过多次蒙特卡洛模拟实验获得D_k是取K值时的损失函数,E(log(D_k))通过多次蒙特卡洛模拟实验获得Dk是取K值时的损失函数,E(log(Dk))通过多次蒙特卡洛模拟实验获得。当Gap(k)Gap(k)Gap(k)最大时,K即取最佳值。
- 手肘法:选择不同的K值,获得不同的损失函数,制作折线图。取拐点作为最佳取值点。如下图选择K=3
- 核函数(不只有SVM会用核函数,一切需要投放到高维空间且可以计算向量的模型都可以用)
欧式距离假定了数据簇呈现球形或者超球形。使用核技巧后数据更可能线性可分,这时可以把数据放在一个超球形里
改进的模型
KMeans++(改进初始点选取):
基本思想:已经选取了n个点时,离这n个点最远的点有最高的概率属于下一个簇。
第一个点通过随机选择,以后每选择一个质心点都选择离当前已有质心最远的点作为下一个质心。之后和KMeans一样
ISODATA(迭代自组织分析法):
KMeans需要预先设定K(搜索或者预估),且在迭代过程中无法更改。在高纬度、数据量大、类别多的情形下,无法有效预估K值。ISODATA的核心思想:当某个簇的样本点过少时,删除该簇;当样本点个数过多、分散程度大时,分裂成两个簇。
缺点:需要指定的参数较多,(初始K值,三个阈值)
各个参数:
- 预期聚类质心数目K0K_0K0。最终输出通常在[12K0,K0\frac12K_0,K_021K0,K0]
- 每个类拥有的最小样本数NminN_{min}Nmin
- 最大方差Sigma
- 两个簇质心间最小距离DminD_{min}Dmin
如果希望样本不划分到单一簇,可以使用模糊C均值或者高斯混合模型
常见数据簇特点:
- 以中心定义的数据簇:倾向于球形或者超球形
- 以密度定义的数据簇:和周围数据簇呈现明显的不同密度。适用于数据簇不规则或者互相缠绕,并且有outlier
- 以连通定义的数据簇:簇内数据点和数据点间有连接关系,呈现图结构。适用于数据簇不规则或者互相缠绕
- 以概念定义的数据簇:数据集中所有点具有某种共同性质
聚类评估:轮廓系数、均方根标准偏差(衡量紧凑程度)、R方(差异度)
本文深入探讨K均值聚类算法,一种常见的非监督学习方法,用于数据聚类和特征变量关联。文章详细解释了算法的工作原理,包括数据预处理、质心初始化、代价函数计算等关键步骤。同时,讨论了算法的优点和缺点,如训练速度、存储效率及对outlier和高维数据的敏感性。此外,还介绍了调优策略,如归一化、outlier处理和K值选择的方法,以及KMeans++和ISODATA等改进模型。
4070

被折叠的 条评论
为什么被折叠?



