无监督算法简介
就是依靠数据之间的相似度,形成数据的类别。(下图有些是网上扒的,如有侵权望告知,立删)
层次聚类
比如有7个数据点,A,B,C,D,E,F,G。我们采用数据的欧式距离作为相似度(距离越小越相似):
将数据分别两两计算相似度:
得到BC的距离最小,这样我们就得到一个新的集合或者说是类:(B,C)。这样我们下一次计算相似度时,只有6个元素了:A,(B,C),D,E,F,G。然后两两计算相似度,得到:
当然,要提到的一点是,对于任意元素(如A)和集合(B,C)之间的距离度量,则取A分别和B,C的距离的均值(下面是几何均值):
当然若是两个类(A,F)和(B,C)的距离,则取两两间距离的均值:
最后便可以形成如下聚类图(我随便画的):
如果你的目标是分成3类,只需要拿一条横线截一下上面的图,让横线只穿过3条竖线即可。
K-Means
将数据分为k个簇
{
C
1
,
C
2
,
⋯
,
C
k
}
\{C_1,C_2,⋯,C_k\}
{C1,C2,⋯,Ck},每个簇有一个中心
μ
i
\mu_i
μi。
常用的相似度度量有欧几里得距离和余弦相似度。以下以距离为例:
均值漂移(Mean Shift)
漂移向量是给定中心点
X
c
X_c
Xc距离小于
h
h
h的数据点集均值:
M
h
=
E
x
i
∈
(
D
<
h
)
[
x
i
−
x
c
]
M_h =E_{x_i∈ (D<h)}[x_i-x_c]
Mh=Exi∈(D<h)[xi−xc]
该向量表明了该范围内的数据实际中心与给定中心的偏差。然后进行中心位置更新(即漂移操作)
x
c
←
x
c
+
M
h
x_c ← x_c + M_h
xc←xc+Mh 。
重复进行迭代,直到收敛。
更多可参考:机器学习聚类算法之Mean Shift
DBSCAN密度聚类
基本概念
假定同一类别的样本,他们之间的紧密相连的。
使用参数
(
ϵ
,
M
i
n
P
t
s
)
(ϵ, MinPts)
(ϵ,MinPts)用来描述邻域的样本分布紧密程度。其中,ϵ描述了某一样本的邻域距离阈值,MinPts描述了邻域中样本个数的阈值。
假设样本集是 D = ( x 1 , x 2 , . . . , x m ) D=(x_1,x_2,...,x_m) D=(x1,x2,...,xm),则对于 x j ∈ D x_j∈D xj∈D有:
下图中MinPts=5,则红色的点都是核心对象,黑色的样本是非核心对象。所有核心对象密度直达的样本在以红色核心对象为中心的超球体内,不在超球体内则不能密度直达。图中用绿色箭头连起来的核心对象组成了密度可达的样本序列。在这些密度可达的样本序列的ϵ-邻域内所有的样本相互都是密度相连的。
算法思想
1、任意选择一个没有类别的核心对象作为种子,然后找到所有这个核心对象能够密度可达的样本集合,即为一个聚类簇。
2、继续选择另一个没有类别的核心对象去寻找密度可达的样本集合,这样就得到另一个聚类簇。一直运行到所有核心对象都有类别为止,剩下的非核心对象则为噪声点。
更多参考:
具有噪声的基于密度的聚类方法
机器学习–聚类系列–DBSCAN算法(有图)