文章目录
1.基于划分的聚类(Partitional Clustering)
K-Means算法介绍
K均值算法是属于划分的聚类方法,K均值算法将样本分为K类,是通过最小化簇内距离(平方误差)来实现的。
E
=
∑
i
=
1
n
∑
x
∈
C
i
∣
∣
x
−
u
i
∣
∣
2
2
E=\sum_{i=1}^n \sum_{x\in{C_i}} ||x-u_i||_{2}^2
E=i=1∑nx∈Ci∑∣∣x−ui∣∣22
迭代过程:
- 从样本集中随机选取K个样本作为初始的均值向量 { u 1 , u 2 , ⋯   , u k } \{u_1,u_2,\cdots,u_k\} {u1,u2,⋯,uk}
- 历遍整个数据集,计算每个样本 x j x_j xj与各均值向量的距离,将 x j x_j xj分到距离最近的一均值向量确定 的簇内。
- 重新计算各个簇的均值向量的平均值 { u 1 ′ , u 2 ′ , ⋯   , u k ′ } \{u_1^{'},u_2^{'},\cdots,u_k^{'}\} {u1′,u2′,⋯,uk′},更新均值向量
- 重复以上步骤,直到聚类结果保持不变为止(均值向量均为更新),停止迭代。
K-Means的优点
- 计算复杂度低,为O(Nkp),N是数据总量,k是类别,p是迭代次数
- 思想简单,容易实现。而且很稳定。
K-Means的缺点
-
分类簇的数量K必须提前确定
-
算法对初始聚类中心敏感,可能会导致较差的聚类结果。
(1)可以每次迭代尝试不同的初始均值向量,通过比较均值距离,选择一个较好的初始值。
(2)使用k-means++算法
-
算法只适用于处理数字类型的数据
-
算法可能陷入局部最优解,无法达到全局最优
-
对异常值和噪声很敏感,算法的鲁棒性不太好。
-
无法对(a)非球状簇,(b)大小不同得簇,©密度不同得簇 进行聚类。
如何选择K值
当前,K值得选取依然是靠人为来实现,通过可视化聚类结果等方法来实现。
Elbow Method
- 尝试不同的K值,画出不同K值对应的到聚类中心的平均距离。
- 一开始,随着k增大,平均距离下降很快,直到一个拐点,下降变慢。该拐点对应的K值就是最好值。
2.层次聚类(hiecarchical clustering)
思想
**从各聚类簇只有一个样本点开始,逐级合并,每级只合并两簇,直到最后所有样本都归到一个聚类簇。**在树状图的特定层次进行分割(选择聚类数)就可以得到所需的聚类结果。
AGNES算法
算法全称:AGglomerative NESting
- 初始化,每个样本形成一类
- 把相似度最大的两个簇合并
- 重复步骤二,直到所有样本合并为一类
衡量相似度的方法 - 最小距离:通过两个簇内距离最近的两个样本的距离来衡量相似度
- 最大距离:通过两个簇内距离最远的两个样本的距离来衡量相似度
- 均值距离:通过两个簇内的平均距离来衡量相似度,需要用到所有的样本。(计算两个簇,所有样本两个之间的距离总和,求平均值)
优点:
- 衡量相似度的距离定义定义简单,算法实现也简单;
- 不需要预先确定聚类数
- 得到的是一个结构化的层次结构,包含的信息更多,通过层次关系可以更容易确定最终的聚类数。
缺点:
- 时间复杂度高, O ( n 2 l o g n ) O(n^{2}logn) O(n2logn),不适合大规模数据。
- 最终的划分标准是模糊的。
3.密度聚类(density-based clustering)
密度聚类算法是从样本密度的角度来考虑样本之间的连接性,并基于可连接样本不断扩展聚类簇,最终获得聚类结果。
DBSCAN算法
DBSCAN算法(Density-Based Spatial Clustering of Applications with Noise),基于一组邻域参数 ( ϵ , M i n P t s ) (\epsilon , MinPts) (ϵ,MinPts)来刻画样本分布的紧密程度。一下是几个重要概念:
- ϵ \epsilon ϵ邻域
- 核心对象(core object)
- 密度直达(directly density-reachable)
- 密度可达(density-reachable)
- 密度相连(density-conneted)
算法描述:
- 根据给定的邻域参数,找出所有的核心对象
- 从核心对象集合 Ω \Omega Ω中随机选取一个作为“种子”,找出由它密度可达的左右样本,有这些样本构成第一个聚类簇。其他的一些核心对象可能也被包含在了这个聚类簇内,从核心对象集合 Ω \Omega Ω中去掉这些被包含的核心对象,形成新的核心对象集 Ω ′ \Omega^{'} Ω′。
- 重复步骤二,直到核心对象集合为空。
注: 最终不属于任何簇的样本被视为噪声或者异常值
DBSCAN算法的目的在于过滤低密度区域,发现稠密度样本点。跟传统的基于层次的聚类和划分聚类的凸形聚类簇不同,该算法可以划分任意形状的聚类簇,与传统的算法相比它有如下优点:
(1)与K-MEANS比较起来,不需要输入要划分的聚类个数;
(2)聚类簇的形状没有偏倚,可以划分任意形状的聚类簇;
(3)可以在需要时输入过滤噪声的参数;
4.参考:
https://pdfs.semanticscholar.org/f0a4/d6bfb37b6c1102f7ef6b0d0f2ef861da6aca.pdf
https://pdfs.semanticscholar.org/017c/8baf587de35f310ca4466ce723deea358745.pdf