[机器学习入门第九章]聚类

9.1聚类任务

常见的无监督学习中最有名的是聚类(clustering)方法。(其他还有密度估计,异常检测)
聚类试图将数据划分成若干不相交的子集,每个子集称为“簇”(cluster),其对应的标签需要人工标记。
聚类既可以单独分析数据的内部分布结构,也可以作为分类的前驱。比如商家有一大批用户数据,可以通过聚类,将用于划分成不同的类型,再机遇这些类训练分类模型。

9.2性能度量

性能度量也指”有效性指标(validity index)“.用性能度量来评估聚类效果,也可通过性能度量优化聚类过程。
对数据集 D = { x 1 , x 2 , . . . . , x m x_1,x_2,....,x_m x1,x2,....,xm},假定通过聚类给出的簇划分为C={ C 1 , C 2 , . . . C k C_1,C_2,...C_k C1,C2,...Ck},参考模型划分的簇 C ∗ C^* C={ C 1 ∗ , C 2 ∗ , . . . . , C s ∗ C_1^*,C_2^*,....,C_s^* C1,C2,....,Cs},相应的,令 λ \lambda λ λ ∗ \lambda^* λ分别表示C和 C ∗ C^* C的簇标记。
定义:
a = ∣ S S ∣ , S S = ( x i , x j ) , λ i = λ j , λ i ∗ = λ j ∗ , i < j a = |SS|, SS =(x_i,x_j) , \lambda_i = \lambda_j,\lambda^*_i = \lambda^*_j ,ia=SSSS=(xi,xj),λi=λj,λi=λj,i<j
b = ∣ S D ∣ , S D = ( x i , x j ) , λ i = λ j , λ i ∗ ≠ λ j ∗ , i < j b = |SD|,SD =(x_i,x_j) , \lambda_i = \lambda_j,\lambda^*_i \neq \lambda^*_j ,ib=SD,SD=(xi,xj),λi=λj,λi=λj,i<j
c = ∣ D S ∣ , D S = ( x i , x j ) , λ i ≠ λ j , λ i ∗ = λ j ∗ , i < j c= |DS|,DS =(x_i,x_j) , \lambda_i \neq \lambda_j,\lambda^*_i = \lambda^*_j,ic=DS,DS=(xi,xj),λi=λj,λi=λj,i<j
d = ∣ D D ∣ , D D = ( x i , x j ) , λ i ≠ λ j , λ i ∗ ≠ λ j ∗ , i < j d = |DD|,DD =(x_i,x_j) , \lambda_i \neq \lambda_j,\lambda^*_i \neq\lambda^*_j,id=DD,DD=(xi,xj),λi=λj,λi=λj,i<j

对数据x两辆配对,显然a+b+c+d = m*(m-1)/2
常用性能度量外部指标

  • Jaccard 指数(JC)
    J C = a a + b + c JC = \frac{a}{a+b+c} JC=a+b+ca
  • FM指数(FMI)
    F M I = a a + b ∗ a a + c FMI = \sqrt{\frac{a}{a+b}*\frac{a}{a+c}} FMI=a+baa+ca
  • Rand指数(RI)
    R I = 2 ( a + d ) m ∗ ( m − 1 ) RI = \frac{2(a+d)}{m*(m-1)} RI=m(m1)2(a+d)
    对k个簇 C = ( C 1 , C − 2 , . . . C k ) C = (C_1,C-2,...C_k) C=(C1,C2,...Ck)我们来定义
    a v g ( C ) = 2 ∣ C ∣ ( ∣ C ∣ − 1 ) ∑ d i s t ( x i , x j ) , 1 < i < j < ∣ C ∣ avg(C) = \frac{2}{|C|(|C|-1)} \sum dist(x_i,x_j), 1avg(C)=C(C1)2dist(xi,xj),1<i<j<C
    d i a m ( C ) = m a x 1 < = i < j < = ∣ C ∣ d i s ( x i , x j ) diam(C) = max_{1<=idiam(C)=max1<=i<j<=Cdis(xi,xj)
    d m i n ( C i , C j ) = m i n x i ∈ C i , x j ∈ C j d i s t ( x i , x j ) d_{min}(C_i,C_j) =min_{x_i\in C_i,x_j \in C_j}dist(x_i,x_j) dmin(Ci,Cj)=minxiCi,xjCjdist(xi,xj)
    d c e n ( C i , C j ) = d i s t ( μ i , μ j ) d_{cen}(C_i,C_j) = dist(\mu_i,\mu_j) dcen(Ci,Cj)=dist(μi,μj)
    以下为性能度量内部指标
  • DB指数
    D B = 1 k ∑ i = 1 k m a x ( ( a v g ( C i ) + a v g ( C j ) d c e n ( μ i , μ j ) ) DB = \frac{1}{k}\sum_{i=1}^kmax(\frac{(avg(C_i)+avg(C_j)}{d_{cen}(\mu_i,\mu_j)}) DB=k1i=1kmaxdcen(μi,μj)(avg(Ci)+avg(Cj)
  • Dunn指数(DI)
    D I = m i n [ m i n ( d m i n ( C i , C j ) m a x 1 < = l < = k d i a m ( C l ) ) ] DI =min[min(\frac{d_{min}(C_i,C_j)}{max_{1<=l<=k}diam(C_l)})] DI=min[min(max1<=l<=kdiam(Cl)dmin(Ci,Cj))]

9.3距离计算

对函数 d i s t ( , ) dist( ,) dist() 要满足非负,同零,对称,三角不等式。
给定样本 x i = ( x i 1 , x i 2 , . . . . . . , x i n ) x_i=(x_{i1},x_{i2},......,x_{in}) xi=(xi1,xi2,......,xin) x j = ( x j 1 , x j 2 , . . . . . . , x j n ) x_j=(x_{j1},x_{j2},......,x_{jn}) xj=(xj1,xj2,......,xjn)
闵可夫斯基距离:
d i s t m k ( x i , x j ) = ( ∑ u = 1 n ∣ x i u − x j u ∣ p ) 1 p dist_{mk}(x_i,x_j) = (\sum_{u=1}^n |x_{iu}-x_{ju}|^p)^{\frac{1}{p}} distmk(xi,xj)=(u=1nxiuxjup)p1
当p = 2,是欧式距离
当p = 1,是曼哈顿距离

9.4原型聚类

原型聚类:算法对原型进行初始化,然后对原型进行迭代更新。

9.4.1K均值算法

给定样本集
K-means
——————————————————————————————————
输入:样本集合D = { x 1 , x 2 , . . . . . x m x_1,x_2,.....x_m x1,x2,.....xm}
           聚类簇数k
过程:
1.从D中随机选择k个样本作为初始均值向量{ μ 1 , μ 2 , . . . . . . , μ k \mu_1,\mu_2,......,\mu_k μ1,μ2,......,μk}
2.DO WHILE
3. 令 C i = ∅ \quad令C_i = \emptyset Ci=(1<=i<=k)
4. \quad FOR j = 1,2,3,…m
5. \qquad 计算样本 x j x_j xj与各均值向量 μ i \mu_i μi的距离 d i j = ∣ x j − μ i ∣ 2 ; d_{ij} = |x_j-\mu_i|_2; dij=xjμi2;
6. \qquad 根据距离最近的均值向量确定 x j x_j xj的簇标记: λ j = a r g m i n i d j i ; \lambda_j = argmin_id_{ji}; λj=argminidji;
7. \qquad 将样本 x j x_j xj划入对应的簇 C λ j = C λ j ∪ x j C_{\lambda_j}=C_{\lambda_j}\cup x_j Cλj=Cλjxj
8. \quad END
9. \quad FOR i = 1,2,3,…k,
10. \qquad 计算新均值向量: μ i ′ = 1 ∣ C i ∣ ∑ x ∈ C i x \mu_i^{'} = \frac{1}{|C_i|}\sum_{x\in C_i}x μi=Ci1xCix
11. \qquad IF μ i ′ ≠ μ i \mu_i^{'}\neq \mu_i μi=μi then
12. \qquad 将向量值 μ i \mu_i μi更新为 μ i ′ \mu_i^{'} μi
13. \qquad END if
14. \quad END for
15.UNTIL 当前向量均值均未更新

输出:簇划分 C C C={ C 2 , C 2 , . . . C k C_2,C_2,...C_k C2,C2,...Ck}
——————————————————————————————————

9.4.2学习向量量化

与k均值算法类似,学习向量量化(Learning Vector Quantization)LVQ假设样本带有标记
LVQ的目标是学得一组n维原型向量{ p 1 , p 2 , . . . p q p_1,p_2,...p_q p1,p2,...pq}
——————————————————————————————————
输入:样本集D ={ ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . . . . , ( x m , y m ) (x_1,y_1), (x_2,y_2),......,(x_m,y_m) (x1,y1),(x2,y2),......,(xm,ym)} (y是样本x的类别标记)
\qquad 原型个数q,各原型的类别标记是{ t 1 , t 2 . . . . t q t_1,t_2....t_q t1,t2....tq}
\qquad 学习率 η ∈ ( 0 , 1 ) \eta \in (0,1) η(0,1)
过程:
1.初始化一组原型向量{ p 1 , p 2 , . . . p q p_1,p_2,...p_q p1,p2,...pq}
2.DO WHILE
3. \quad 从样本集D中随机选取样本 ( x j , y j ) (x_j,y_j) (xj,yj)
4. \quad 计算样本 x j x_j xj p i p_i pi(1<=i<=q)的距离 d i j = ∣ ∣ x j − p i ∣ ∣ 2 d_{ij} = ||x_j-p_i||_2 dij=xjpi2
5. \quad 找出与 x j x_j xj距离最近的原型向量 p i ∗ , i ∗ = a r g m i n i d i j p_{i*},i^*=argmin_id_{ij} pi,i=argminidij
6. \quad IF y j = t i ∗ y_j = t_{i*} yj=ti then
7. \qquad p ′ = p i ∗ + η ( x j − p i ∗ ) p^{'} = p_{i*}+\eta(x_j-p_{i*}) p=pi+η(xjpi)
8. \quad else
9. \qquad p ′ = p i ∗ − η ( x j − p i ∗ ) p^{'} = p_{i*}-\eta(x_j-p_{i*}) p=piη(xjpi)
10. \quad END IF
11. \quad 将向量 p i ∗ p_{i*} pi更新为 p ′ p^{'} p
12.UNTIL 满足停止条件
——————————————————————————————————

9.4.3高斯混合聚类(mixture of gaussian cluster)(待完成)

需要预备知识EM算法和高斯分布、拉格朗日乘子,暂时跳过,周六周日集中解决

预备知识:多元高斯分布,对n维样本空间 χ \chi χ中的随机变量x,如果x服从高斯分布,其概率密度函数为:
p ( x ) = 1 ( 2 π ) n / 2 ∣ ∑ ∣ p(x) = \frac{1}{(2\pi)^{n/2}|\sum|} p(x)=(2π)n/21

9.5密度聚类

密度聚类也称为“基于密度的聚类(density-based clustering)“,此类算法假设聚类结构能通过样本分布的紧密程度确定,通常情况下,密度聚类算法从样本密度的角度来考察样本的可连接性,并且基于可连接样本不断扩展聚类簇与获得最终的聚类效果。
DBSCAN它基于一组邻域参数来刻画样本分布的紧密程度,给定数据集合D={x1,x2,…,xm},
定义下面几个概念

  • ϵ \epsilon ϵ-邻域 :对 x j ∈ D , 其 x_j\in D,其 xjD, ϵ \epsilon ϵ-邻域包含样本集D中与 x j x_j xj距离不大于 ϵ \epsilon ϵ的样本,形式化 N ϵ ( x j ) = ( x i ∈ D ∣ d i s t ( x i , x j ) < = ϵ ) N_{\epsilon}(x_j) = (x_i\in D|dist(x_i,x_j)<=\epsilon) Nϵ(xj)=(xiDdist(xi,xj)<=ϵ)
  • 核心对象(core-object)
    如果 x j x_j xj ϵ \epsilon ϵ邻域至少包含MinPts个样本,则 x j x_j xj是一个核心对象。形式化|N|>=MinPts
  • 密度直达
    xj位于xi的 ϵ \epsilon ϵ邻域,而且xi是核心对象,则xj和xi密度直达
  • 密度可达
    对xi和xj,如果存在样本序列p1,p2,…pn,其中xi =p1, xj = pn,而且 p i p_{i} pi p i + 1 p_{i+1} pi+1密度直达
  • 密度相连
    对xi和xj,存在xk使得xi和xj均由xk密度可达,则称xi和xj密度相连。
    基于这些概念,DBSCAN将簇定义为:由密度可达关系导出的最大的密度相连样本集合。形式化,给定参数( ϵ \epsilon ϵ,MinPts)可定义簇C
    连接性(connectivity):(不影响以下内容,略过)
    最大性(maximality):(不影响阅读,略过)
    因此从核心对象出发寻找的所有样本组成的集合X满足连接性和最大性。

DBSCAN先选任一个核心对象为种子。
DBSCAN algorithm
—————————————————————————————————
输入:样本集D = { x 1 , x 2 , . . . . . , x m x_1,x_2,.....,x_m x1,x2,.....,xm}
\qquad 邻域参数 ( ϵ , M i n P t s \epsilon,MinPts ϵ,MinPts)
过程:
1.初始化核心对象集合 Ω = ∅ \Omega = \emptyset Ω=
2.FOR j = 1,2,…m
3. \quad 确定样本 x j x_j xj ϵ \epsilon ϵ邻域 N ( x j ) N(x_j) N(xj)
4. \quad IF |N( x j x_j xj| >=MinPts THEN
5. \qquad 将x加入到核心对象集合 Ω = Ω ∪ x j \Omega =\Omega \cup x_j Ω=Ωxj
6. \quad END IF
7.END FOR
8.初始化聚类簇数 k = 0;
9.初始化未访问样本集合 Γ = D \Gamma = D Γ=D
10.WHILE Ω ≠ ∅ \Omega\neq\emptyset Ω=
11. \quad 记录当前未访问样本集合
12. \quad 随机选取一个核心对象core ∈ Ω \in \Omega Ω,初始化队列Q
13. \quad 将core从 Γ \Gamma Γ中去除
14. \quad WHILE Q ≠ ∅ Q\neq\empty Q=
15. \qquad 取出队头q
16. \qquad IF ∣ N ( q ) ∣ > = M i n P t s |N(q)|>=MinPts N(q)>=MinPts THEN
17. \qquad
—————————————————————————————————

Reference

[1]周志华.机器学习第九章聚类

你可能感兴趣的:(机器学习,聚类,人工智能)