层次聚类引入
层次聚类跟kmeans聚类一样不适合非球样本,
密度聚类DBSCAN就可以很好的聚类非球样本并且密度聚类可以非常方便地发现数据中的异常点。
层
次聚
类
的
实质
是
计
算各簇内
样
本点之
间
的相似度,并通
过
相似度的
结
果构建凝聚或分
裂的
层
次
树
。凝聚
树
是一种自底向上的造
树过
程,起初将每一个
样
本当作一个
类
,然后通
过计
算
样
本
间
或簇
间
的距离
进
行
样
本合并,最
终
形成一个包含所有
样
本的大簇;分裂
树
与凝聚
树
恰
好相反,它是自
顶
向下的造
树过
程,起初将所有
样
本点聚
为
一个
类
,然后利用相似度的方法将
大簇
进
行分割,直到所有
样
本
为
一个
类为
止。
簇间的距离度量
1
.最小距离法
最小距离法是指以所有簇
间样
本点距离的最小
值
作
为
簇
间
距离的度量,但是
该
方法非常
容易受到极端
值
的影响。
2
.最大距离法
最大距离法是指以所有簇
间样
本点距离的最大
值
作
为
簇
间
距离的度量,同
样
,
该
方法也
容易受到极端
值
的影响。
3
.平均距离法
最小距离法和最大距离法都容易受到极端
值
的影响,可以使用平均距离法
对
如上两种方
法做折中
处
理,即以所有簇
间样
本点距离的平均
值
作
为
簇
间
距离的度量。
层次聚类的步骤
在理解有关点与点、点与簇和簇与簇之
间
的距离度量
标
准之后,就需要
进
一步掌握
层
次
聚
类
算法是如何
实现样
本点聚
类
的。本小
节
将
详细
介
绍
有关
层
次聚
类
算法的操作步
骤
,并通
过举
例
说
明的方式加
强
对
聚
类
步
骤
的理解。
层
次聚
类
的步
骤
如下:
(
1
)将数据集中的每个
样
本点当作一个
类别
。
(
2
)
计
算所有
样
本点之
间
的两两距离,并从中挑
选
出最小距离的两个点构成一个簇。
(
3
)
继续计
算剩余
样
本点之
间
的两两距离和点与簇之
间
的距离,然后将最小距离的点或簇
合并到一起。
(
4
)重复步
骤
(
2
)和(
3
),直到
满
足聚
类
的个数或其他
设
定的条件,便
结
束算法的运行。
如上的
4
个步
骤
光用文字
说
明可能理解起来比
较
困
难
,接下来通
过
一个
简单
的例子形象地
说
明
层
次聚
类
法的整个聚
类过
程。
参数
cluster.AgglomerativeClustering(n_clusters=2, affinity='euclidean', memory=None,
connectivity=None, compute_full_tree='auto', linkage='ward')
n_clusters
:用于指定
样
本点聚
类
的个数,默
认为
2
。
affinity
:用于指定
样
本
间
距离的衡量指
标
,可以是欧氏距离、曼哈
顿
距离、余弦相似度
等,默
认为
'euclidean'
;如果参数
linkage
为
'ward'
,
该
参数只能
设
置
为
欧氏距离。
memory
:是否指定
缓
存
结
果的
输
出,默
认为
否;如果
该
参数
设
置
为
一个路径,最
终
将把
计
算
过
程的
缓
存
输
出到指定的路径中。
connectivity
:用于指定一个
连
接矩
阵
。
compute_full_tree
:通常情况下,当聚
类过
程达到
n_clusters
时
,算法就会停止,如果
该
参
数
设
置
为
True
,
则
表示算法将生成一棵完整的凝聚
树
。
linkage
:用于指定簇
间
距离的衡量指
标
,默
认为
'ward'
,表示最小距离法;如果
为
'complete'
,
则
表示使用最大距离法;如果
为
'average'
,
则
表示使用平均距离法。