聚类及相关算法二(原型聚类、密度聚类、层次聚类)

原型聚类

描述:对原型进行初始化,然后对原型进行迭代更新求解。

1.k均值算法

给定样本集 D={x1,x2,...,xm} D = { x 1 , x 2 , . . . , x m } , “k-均值”(k-means)算法针对聚类所得簇划分 C={C1,C2,C3,...,Ck} C = { C 1 , C 2 , C 3 , . . . , C k } 最小化平方误差 E=ki=1xci||xμi||22μi=1|Ci|xCix Ci E = ∑ i = 1 k ∑ x ∈ c i | | x − μ i | | 2 2 , μ i = 1 | C i | ∑ x ∈ C i x   是 簇 C i 的 均 值 向 量

采用贪心算法,通过迭代优化近似求解上式。


算法步骤
输入:样本集 D={x1,x2,...,xm}; D = { x 1 , x 2 , . . . , x m } ;
聚类簇数k.
1:从D中随机选择k个样本作为初始均值向量 μ1,μ2,...,μk μ 1 , μ 2 , . . . , μ k
2:repeat
3: Ci=(1ik) 令 C i = ∅ ( 1 ≤ i ≤ k )
4: for j=1,2,...,m do f o r   j = 1 , 2 , . . . , m   d o
5: xjμi(1ik)dji=||xjμi||2 计 算 样 本 x j 与 各 均 值 向 量 μ i ( 1 ≤ i ≤ k ) 的 距 离 : d j i = | | x j − μ i | | 2
6: xjλj=arg mini{1,2,...,k} dji; 根 据 距 离 最 近 的 均 值 向 量 确 定 x j 的 粗 标 记 : λ j = a r g   m i n i ∈ { 1 , 2 , . . . , k }   d j i ;
7: xjCλj{xj}; 将 样 本 x j 划 入 相 应 的 簇 : C λ j ∪ { x j } ;
8: end for e n d   f o r
9: for i=1,2,...,k do f o r   i = 1 , 2 , . . . , k   d o
10: μi=1|Ci|xCix 计 算 新 均 值 向 量 : μ i ‘ = 1 | C i | ∑ x ∈ C i x
11: if μiμi then i f   μ i ‘ ≠ μ i   t h e n
12     μiμi         将 当 前 均 值 向 量 μ i 更 新 为 μ i ‘
13: else e l s e
14:              保 持 当 前 均 值 向 量 不 变
15: end if e n d   i f
16: end for e n d   f o r
17: until  u n t i l   当前均值向量未更新


2学习向量量化(LVQ算法)

特点:假设数据样本带有类别标记,学习过程利用样本的这些监督信息来辅助聚类。

给定样本集 D=(x1,y1,(x2,y2),...,(xm,ym) D = ( x 1 , y 1 , ( x 2 , y 2 ) , . . . , ( x m , y m ) , 每个样本是由n个属性描述的特征向量 (xj1;xj2;xj3;...;xjn),yjΓ ( x j 1 ; x j 2 ; x j 3 ; . . . ; x j n ) , y j ∈ Γ 是样本 xj x j 得类别标记。LVQ目标是学得一组n维原型向量{p_1,p_2,…,p_q},每个原型向量代表一个聚类簇

算法描述
输入:样本集D ={(x_1,y_1),(x_2,y_2),…,(x_m,y_m)};
原型向量个数q,各原型向量预设的类别标记{t_1,t_2,…,t_q};
学习率 η(0,1) η ∈ ( 0 , 1 )
过程:
1、初始化一组原型向量 p1,p2,...,pq p 1 , p 2 , . . . , p q
2、 repeat r e p e a t
3、 D(xj,yj); 从 样 本 集 D 随 机 选 取 样 本 ( x j , y j ) ;
4、 xjpi(1iq)dij=xjpi2; 计 算 样 本 x j 与 p i ( 1 ≤ i ≤ q ) 的 距 离 : d i j = x j − p i 2 ;
5、 找出与 xj x j 距离最近的原型向量 pi,i=arg mini{1,2,...,q} dji; p i ∗ , i ∗ = a r g   m i n i ∈ { 1 , 2 , . . . , q }   d j i ;
6、 if yj=ti then i f   y j = t i ∗   t h e n
7、 p=pi+η(xjpi) p ′ = p i ∗ + η · ( x j − p i ∗ )
8、 else e l s e
9、 p=piη(xjpi) p ′ = p i ∗ − η · ( x j − p i ∗ )
10、 end if e n d   i f
11、 pip 将 原 型 向 量 p i ∗ 更 新 为 p ′
12、 until  u n t i l   满 足 停 止 条 件

核心步骤:6~10行,若类别相同,则 pixj p i ∗ 向 x j 靠拢;反之远离。

3高斯混合聚类

特点:采用概率模型表达聚类原型

多元高斯分布定义:对n维样本空间\chi中的随机向量x,若x服从高斯分布,其概率密度函数为:

p(x)=1(2π)n2  |Σ|12e12(xμ)TΣ1(xμ) p ( x ) = 1 ( 2 π ) n 2     | Σ | 1 2 e − 1 2 ( x − μ ) T Σ − 1 ( x − μ )

该分布由均值向量 μ μ 和协方差矩阵 Σ Σ 确定,我们将概率密度函数定义为 p(x|μ,Σ) p ( x | μ , Σ ) ,于是我们定义高斯混合分布
pm(x)=i=1kαip(x|μi,Σi) p m ( x ) = ∑ i = 1 k α i · p ( x | μ i , Σ i )
其中,每一个混合成分对应一个高斯分布, μiΣi μ i 和 Σ i 是第i个高斯混合分布的参数, αi α i 为混合系数, ki=1αi=1 ∑ i = 1 k α i = 1
从原型聚类的角度看,高斯混合聚类模型采用概率模型对原型进行刻画,簇的划分由原型对应的后验概率确定,具体的后验概率公式由贝叶斯定理得出,采用极大似然估计求解模型参数。具体推导步骤下一次再写。

密度聚类

亦称“基于密度的聚类”,此类算法假设聚类结构能通过样本分布的紧密程度确定。
DBSCAN是一种著名的密度聚类算法,它基于一组“邻域”参数 (ϵ,MinPts) ( ϵ , M i n P t s ) 来刻画样本分布的紧密程度。给定数据集,有如下概念:
+邻域:即 Nϵ(xj)={xiD|dist(xi,xj)ϵ}; N ϵ ( x j ) = { x i ∈ D | d i s t ( x i , x j ) ≤ ϵ } ;
+核心对象: xjϵ x j 的 ϵ − 邻 域 至少包含MinPts个样本,即 Nϵ(xj)MinPts N ϵ ( x j ) ≥ M i n P t s
+密度直达: xjxi x j 位 于 x i ϵ ϵ − 邻域中,且 xi x i 是核心对象。
+密度可达:对样本序列 p1,p2,...,pn,p1=xi,pn=xj p 1 , p 2 , . . . , p n , p 1 = x i , p n = x j pi+1Pi p i + 1 由 P i 密度直达,则称 xjxi x j 和 x i 密度可达
+密度相连:对 xixj x i 和 x j ,若存在 xk x k 使得 xixj x i 和 x j 均由 xk x k 密度可达,则称 xixj x i 与 x j 密度相连。
基于以上概念,DBSCAN将“簇”定义为:由密度可达关系导出最大密度相连样本的集合即:给定邻域参数 (ϵ,MinPts) ( ϵ , M i n P t s ) ,簇C满足一下性质非空样本子集:

xiC,xjC:xixjxiC,xjxixjC 连 接 性 : x i ∈ C , x j ∈ C : x i 与 x j 密 度 相 连 最 大 性 : x i ∈ C , x j 由 x i 密 度 可 达 : x j ∈ C
,则若x为核心对象,由x密度可达的所有样本组成的集合记为 X={xD|xx} X = { x ′ ∈ D | x ′ 由 x 密 度 可 达 } ,X即为满足连接性与最大性的簇


DBSCAN算法步骤:
输入:样本集 D={x1,x2,...,xm}; D = { x 1 , x 2 , . . . , x m } ;
邻域参数 (ϵ,MinPts). ( ϵ , M i n P t s ) .
过程:
1、初始化核心对象集合: Ω= Ω = ∅
2、 for j=1,2,...,m do f o r   j = 1 , 2 , . . . , m   d o
3、 xjϵNϵ(xj); 确 定 样 本 x j 的 ϵ − 邻 域 N ϵ ( x j ) ;
4、 if|Nϵ(xj)|MinPts then i f | N ϵ ( x j ) | ≥ M i n P t s   t h e n
5、 xjΩ=Ω{xj} 将 样 本 x j 加 入 核 心 对 象 集 合 : Ω = Ω ∪ { x j }
6、 end for e n d   f o r
7、 end for e n d   f o r
8、 k=0 初 始 化 聚 类 簇 数 : k = 0
9、 访Γ=D 初 始 化 未 访 问 样 本 集 合 : Γ = D
10 while Ω do 、 w h i l e   Ω ≠ ∅   d o
11、 访Γold=Γ; 记 录 当 前 未 访 问 样 本 集 合 : Γ o l d = Γ ;
12、 oΩQ=<o> 随 机 选 取 一 个 核 心 对 象 o ∈ Ω , 初 始 化 队 列 Q =< o > ;
13、 Γ=Γ{o}; Γ = Γ − { o } ;
14、 while Q do w h i l e   Q ≠ ∅   d o
15、 Qq 取 出 队 列 Q 中 的 首 个 样 本 q ;
16、 if |Nϵ(q)|MinPts then i f   | N ϵ ( q ) | ≥ M i n P t s   t h e n
17、    Δ=Nϵ(q)Γ;       令 Δ = N ϵ ( q ) ∩ Γ ;
18、    ΔQ       将 Δ 中 的 样 本 加 入 队 列 Q ;
19、    Γ=ΓΘ;       Γ = Γ − Θ ;
20、 end if e n d   i f
21、 end while e n d   w h i l e
22、 k=k+1Ck=Γold Γ; k = k + 1 , 生 成 聚 类 簇 C k = Γ o l d   Γ ;
23、 Ω=Ω Ck Ω = Ω   C k
24、 end while e n d   w h i l e
输出:簇划分 C=C1,C2,...,Ck C = C 1 , C 2 , . . . , C k


层次聚类

试图在不同层次上对数据及进行划分自底向上对数据集划分,也可采用自顶向下的分拆策略;

AGNES层次聚类算法描述:先将数据集集中的没一个样本看作一个初始的聚类簇,然后在算法运行的每一步找出距离最近的两个聚类簇进行合并,不断重复直至达到预设的聚类簇个数。

聚类簇间的距离公式:

dmin (Ci,Cj)=minxCi,zCjdist(x,z),dmax(Ci,Cj)=maxxCi,zCj dist(x,z),davg(Ci,Cj)=1|Ci||Cj|xCizCj dist(x,z). 最 小 距 离 : d m i n   ( C i , C j ) = m i n x ∈ C i , z ∈ C j d i s t ( x , z ) , 最 大 距 离 : d m a x ( C i , C j ) = m a x x ∈ C i , z ∈ C j   d i s t ( x , z ) , 平 均 距 离 : d a v g ( C i , C j ) = 1 | C i | | C j | ∑ x ∈ C i ∑ z ∈ C j   d i s t ( x , z ) .


算法步骤:
输入:样本集 D=x1,x2,...,xm; D = x 1 , x 2 , . . . , x m ;
聚类簇距离度量函数d;
聚类簇数k.
过程:
1、 for j=1,2,...,m do f o r   j = 1 , 2 , . . . , m   d o
2、 Cj={xj} C j = { x j }
3、 end for e n d   f o r
4、 fori=1,2,...,m do f o r i = 1 , 2 , . . . , m   d o
5 、 for j=i+1,...,m do f o r   j = i + 1 , . . . , m   d o
6、 M(i,j)=d(Ci,Cj) M ( i , j ) = d ( C i , C j )
7、 M(j,i)=M(i,j) M ( j , i ) = M ( i , j )
8、 end for e n d   f o r
9、 end for e n d   f o r
10、 q=m 设 置 当 前 聚 类 簇 的 个 数 : q = m
11、 while q>k do w h i l e   q > k   d o
12、 CiCj 找 出 距 离 最 近 的 两 个 聚 类 簇 C i ∗ 和 C j ∗ ;
13、 CiCjCiCj; 合 并 C i ∗ 和 C j ∗ : C i ∗ ∪ C j ∗ ;
14、 forj=j+1,j+2,...,q do f o r j = j ∗ + 1 , j ∗ + 2 , . . . , q   d o
15、 CjCj1 将 聚 类 簇 C j 重 编 号 为 C j − 1
16、 end for e n d   f o r
17、 Mjj 删 除 距 离 矩 阵 M 的 第 j ∗ 行 与 第 j ∗ 列 ;
18、 for j=1,2,...,q1 do f o r   j = 1 , 2 , . . . , q − 1   d o
19、 M(i,j)=d(Ci,Cj); M ( i ∗ , j ) = d ( C i ∗ , C j ) ;
20、 M(j,i)=M(i,j) M ( j , i ∗ ) = M ( i ∗ , j )
21、 end for e n d   f o r
22、 q=q1 q = q − 1
23、 end while e n d   w h i l e
输出:簇划分 C=C1,C2,...,Ck C = C 1 , C 2 , . . . , C k


你可能感兴趣的:(机器学习西瓜书+统计学习方法)