1. 基本概念

1.1 定义

  • 聚类:发现数据中分组聚集的结构,根据数据中样本与样本之间的距离或相似度,依据类内样本距离小(相似度大)、类间样本距离大(相似度小)将样本划分为若干组/类/簇。

    • 基于划分的聚类:无嵌套,将所有样本划分到互不重叠的子集(簇),且使得每个样本仅属于一个子集。
    • 层次聚类:有嵌套,树形聚类结构,在不同层次对数据集进行划分,簇之间存在嵌套。
  • 簇集合的其他区别

    • 独占vs非独占:在非独占的簇中,样本点可以属于多个簇。
    • 模糊vs非模糊:在模糊聚类中,一个样本点以一定的权重属于各个聚类簇。
    • 部分vs完备:部分聚类只聚类部分数据。
    • 异质vs同质:簇的大小、行政和密度是否有很大的差别。
  • 簇的类型

    • 明显分离的簇
    • 基于中心的簇:簇内点和其“中心”较为相近,和其他簇的“中心”较远,球状簇。
    • 基于邻近(连续)的簇:相比其他任何簇的点,每个点都至少和所属簇的某一个点更近。
    • 基于密度的簇:簇是由高密度的区域形成的,簇之间是一些低密度区域。
    • 基于概念的簇:同一个簇共享某种性质,整个性质是从整个集合推导出来的。

1.2 距离度量函数

距离度量函数应满足条件:

  • 非负性:dist(xi,yj)≥0dist(x_i,y_j)\ge0dist(xi​,yj​)≥0

  • 不可分的同一性:dist(xi,yj)=0ifxi=xjdist(x_i,y_j)=0\quad if\quad x_i=x_jdist(xi​,yj​)=0ifxi​=xj​

  • 对称性:dist(xi,yj)=dist(xj,xi)dist(x_i,y_j)=dist(x_j,x_i)dist(xi​,yj​)=dist(xj​,xi​)

  • 三角不等式:dist(xi,xj)≤dist(xi,xk)+dist(xk,xj)dist(x_i,x_j)\le dist(x_i,x_k)+dist(x_k,x_j)dist(xi​,xj​)≤dist(xi​,xk​)+dist(xk​,xj​)

数据预处理:

  • StandardScaler:对特征矩阵的列,将特征值取值范围标准化(0均值,1方差)
  • MinMaxScaler:对特征矩阵的列,将特征值缩放到[0,1]区间
  • Normalizer:对特征矩阵的行,将每个样本缩放到单位向量

距离函数:

  • 闵可夫斯基距离:dist(xi,xj)=(∑d=1D∣xid−xjd∣p)1pdist(x_i,x_j)=\big(\sum_{d=1}^D|x_{id}-x_{jd}|^p\big)^\frac{1}{p}dist(xi​,xj​)=(∑d=1D​∣xid​−xjd​∣p)p1​

    • p=1时,为曼哈顿距离
    • p=2时,为欧式距离

    对样本特征的旋转和平移变换不敏感,对数值尺度敏感(故需要标准化处理)

  • 余弦相似度:两变量看作高维空间的两个向量,两个向量的夹角余弦即为余弦相似度

    s(xi,xj)=∑d=1Dxidxjd∑d=1Dxid2∑d=1Dxjd2=xiTxj∥xi∥∥xj∥s(x_i,x_j)=\frac{\sum_{d=1}^Dx_{id}x_{jd}}{\sqrt{\sum_{d=1}^Dx_{id}^2}\sqrt{\sum_{d=1}^Dx_{jd}^2}}=\frac{x_i^Tx_j}{\Vert x_i \Vert\Vert x_j \Vert} s(xi​,xj​)=∑d=1D​xid2​​∑d=1D​xjd2​​∑d=1D​xid​xjd​​=∥xi​∥∥xj​∥xiT​xj​​

  • 相关系数:当对数据做中心化后,相关系数等于余弦相似度

    r(xi,xj)=cov(xi,xj)σxiσxj=E[(xi−μi)(xj−μj)]σxiσxj=∑d=1D(xid−μid)(xjd−μjd)∑d=1D(xid−μid)2∑d=1D(xjd−μjd)2r(x_i,x_j)=\frac{cov(x_i,x_j)}{\sigma_{x_i}\sigma_{x_j}}=\frac{E[(x_i-\mu_i)(x_j-\mu_j)]}{\sigma_{x_i}\sigma_{x_j}}= \frac{\sum_{d=1}^D(x_{id}-\mu_{id})(x_{jd}-\mu_{jd})}{\sqrt{\sum_{d=1}^D(x_{id}-\mu_{id})^2}\sqrt{\sum_{d=1}^D(x_{jd}-\mu_{jd})^2}}r(xi​,xj​)=σxi​​σxj​​cov(xi​,xj​)​=σxi​​σxj​​E[(xi​−μi​)(xj​−μj​)]​=∑d=1D​(xid​−μid​)2​∑d=1D​(xjd​−μjd​)2​∑d=1D​(xid​−μid​)(xjd​−μjd​)​

  • 杰卡德相似系数

    J(xi,xj)=∑k=1D(xik⋂xjk)∑k=1D(xik⋃xjk)J(x_i,x_j)=\frac{\sum_{k=1}^D(x_{ik}\bigcap x_{jk})}{\sum_{k=1}^D(x_{ik}\bigcup x_{jk})}J(xi​,xj​)=∑k=1D​(xik​⋃xjk​)∑k=1D​(xik​⋂xjk​)​

1.3 聚类性能评价指标

  • 外部评价法:聚类结果与参考结果有多接近

    a=#{(xi,xj)∣xi,xj∈Ck;xi,xj∈Cl∗}d=#{(xi,xj)∣xi∈Ck1,xj∈Ck2;xi∈Cl1∗,xj∈Cl2∗}b=#{(xi,xj)∣xi,xj∈Ck;xi∈Cl1∗,xj∈Cl2∗}c=#{(xi,xj)∣xi∈Ck1,xj∈Ck2;xi,xj∈Cl∗}a = \#\{(x_i,x_j)|x_i,x_j\in C_k;x_i,x_j\in C^*_l\} \\ d = \#\{(x_i,x_j)|x_i\in C_{k_1},x_j\in C_{k_2};x_i\in C^*_{l_1},x_j\in C^*_{l_2}\} \\ b = \#\{(x_i,x_j)|x_i,x_j\in C_k;x_i\in C^*_{l_1},x_j\in C^*_{l_2}\} \\ c = \#\{(x_i,x_j)|x_i\in C_{k_1},x_j\in C_{k_2};x_i,x_j\in C^*_l\}a=#{(xi​,xj​)∣xi​,xj​∈Ck​;xi​,xj​∈Cl∗​}d=#{(xi​,xj​)∣xi​∈Ck1​​,xj​∈Ck2​​;xi​∈Cl1​∗​,xj​∈Cl2​∗​}b=#{(xi​,xj​)∣xi​,xj​∈Ck​;xi​∈Cl1​∗​,xj​∈Cl2​∗​}c=#{(xi​,xj​)∣xi​∈Ck1​​,xj​∈Ck2​​;xi​,xj​∈Cl∗​}

    • Jaccard系数:JC=aa+b+cJC =\frac{a}{a+b+c}JC=a+b+ca​
    • FMI指数:aa+baa+c\sqrt{\frac{a}{a+b}\frac{a}{a+c}}a+ba​a+ca​​
    • Rand指数:RI=2(a+d)N(N−1)RI=\frac{2(a+d)}{N(N-1)}RI=N(N−1)2(a+d)​
  • 内部评价法:聚类的本质特点(无参考结果)

    簇内相似度越高,聚类质量越好;簇间相似度越低,聚类质量越好。

    • 簇内相似度

      • 平均距离:avg(Cm)=1∣Cm∣(∣Cm∣−1)∑xi,xj∈Cmdist(xi,xj)avg(C_m)=\frac{1}{|C_m|(|C_m|-1)}\sum_{x_i,x_j \in C_m}dist(x_i,x_j)avg(Cm​)=∣Cm​∣(∣Cm​∣−1)1​∑xi​,xj​∈Cm​​dist(xi​,xj​)
      • 最大距离:diam(Cm)=maxxi,xj∈Cmdist(xi,xj)diam(C_m)=max_{x_i,x_j\in C_m}dist(x_i,x_j)diam(Cm​)=maxxi​,xj​∈Cm​​dist(xi​,xj​)
      • 簇的半径:diam(Cm)=1∣Cm∣∑xi∈Cm(dist(xi,μm))2,μm=1∣Cm∣∑xi∈Cmxidiam(C_m)=\sqrt{\frac{1}{|C_m|}\sum_{x_i\in C_m}(dist(x_i,\mu_m))^2},\quad \mu_m=\frac{1}{|C_m|}\sum_{x_i\in C_m}x_idiam(Cm​)=∣Cm​∣1​∑xi​∈Cm​​(dist(xi​,μm​))2​,μm​=∣Cm​∣1​∑xi​∈Cm​​xi​
    • 簇间相似度

      • 最小距离:dmin(Cm,Cn)=minxi∈Cm,xj∈Cndist(xi,xj)d_{min}(C_m,C_n)=min_{x_i\in C_m,x_j\in C_n}dist(x_i,x_j)dmin​(Cm​,Cn​)=minxi​∈Cm​,xj​∈Cn​​dist(xi​,xj​)
      • 类中心之间的距离:dcen(Cm,Cn)=dist(μm,μn),μm=1∣Cm∣∑xi∈Cmxid_{cen}(C_m,C_n)=dist(\mu_m,\mu_n),\quad \mu_m=\frac{1}{|C_m|}\sum_{x_i\in C_m}x_idcen​(Cm​,Cn​)=dist(μm​,μn​),μm​=∣Cm​∣1​∑xi​∈Cm​​xi​
    • DB指数:DBI越小,聚类质量越好

      DBI=1M∑m=1Mmax⁡m≠navg(Cm)+avg(Cn)dcen(Cm,Cn)DBI=\frac{1}{M}\sum_{m=1}^M\max_{m\neq n}\frac{avg(C_m)+avg(C_n)}{d_{cen}(C_m,C_n)}DBI=M1​∑m=1M​maxm​=n​dcen​(Cm​,Cn​)avg(Cm​)+avg(Cn​)​

    • Dunn指数:DI越大,聚类质量越好

      DI=min⁡1≤<n≤Mdmin(Cm,Cn)max⁡1≤m≤Mdiam(Cm)DI=\min_{1\le <n\le M}\frac{d_{min}(C_m,C_n)}{\max_{1\le m \le M }diam(C_m)}DI=min1≤<n≤M​max1≤m≤M​diam(Cm​)dmin​(Cm​,Cn​)​

2. 常见聚类算法

2.1 K均值聚类算法

伪代码:

输入:n个样本点的集合{x1,x2,...,xn}\{ x_1,x_2,...,x_n\}{x1​,x2​,...,xn​},聚类中心数目K;

输出:样本集合的聚类{C1,C2,...,Ck}\{{C_1,C_2,...,C_k}\}{C1​,C2​,...,Ck​}

(1)初始化。t=0t=0t=0,随机选择K个样本点作为聚类中心m(0)=(m1(0),m2(0),...,mk(0))m^{(0)}=(m^{(0)}_1,m^{(0)}_2,...,m^{(0)}_k)m(0)=(m1(0)​,m2(0)​,...,mk(0)​)

(2)对样本进行聚类。对聚类中心m(t)=(m1(t),m2(t),...,mk(t))m^{(t)}=(m^{(t)}_1,m^{(t)}_2,...,m^{(t)}_k)m(t)=(m1(t)​,m2(t)​,...,mk(t)​),计算每个样本到各个聚类中心的距离,并将其指派到距离最近的中心当中,构成聚类结果C(t)C^{(t)}C(t)

(3)计算新的聚类中心。对于聚类结果C(t)C^{(t)}C(t),计算新的聚类中心m(t+1)=(m1(t+1),m2(t+1),...,mk(t+1))m^{(t+1)}=(m^{(t+1)}_1,m^{(t+1)}_2,...,m^{(t+1)}_k)m(t+1)=(m1(t+1)​,m2(t+1)​,...,mk(t+1)​)

(4)如果迭代收敛或符合停止条件,输出C∗=C(t)C^*=C^(t)C∗=C(t),否则,令t=t+1t=t+1t=t+1,返回步(2)

从优化角度看待K均值聚类算法的求解:

  • 损失函数:J=∑i=1N∑l=1Krik∥xi−μk∥2J=\sum_{i=1}^N\sum_{l=1}^Kr_{ik}\Vert x_i-\mu_k\Vert^2J=∑i=1N​∑l=1K​rik​∥xi​−μk​∥2,其中rikr_{ik}rik​为从属度

  • 采用坐标轴下降法迭代求解μk\mu_kμk​和rikr_{ik}rik​

    由于JJJ是非凸的,所以坐标下降方法并不一定能保证找到全局最小值

初始化K-means的方法

  • 随机初始化
  • 随机确定第一个类的中心,其他类的位置尽量远离已有中心

K的选择

  • 间隔统计
  • 交叉验证
  • 簇的稳定性
  • 非参数方法
  • 用监督学习任务校验集上的评价指标选择K

K-means的局限性

  • 没有考虑簇的尺度
  • 没有考虑簇的密度
  • 没有考虑非球形簇
  • 容易受离群点干扰–>K-medoids

2.2 高斯混合模型和EM算法

高斯混合分布有:
p(x∣θ)=∑k=1KπkN(x∣μk,Σk)p(x|\theta)=\sum_{k=1}^K\pi_k \mathcal N(x|\mu_k,\Sigma_k) p(x∣θ)=k=1∑K​πk​N(x∣μk​,Σk​)
定义离散隐变量zzz,zzz为1−of−K1{-} of{-}K1−of−K形式的向量,只有某个元素的zkz_kzk​为1,其他元素均为0,zzz与xxx有如下概率图关系:

#mermaid-svg-jCPYK0RD58yPh73U {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jCPYK0RD58yPh73U .error-icon{fill:#552222;}#mermaid-svg-jCPYK0RD58yPh73U .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-jCPYK0RD58yPh73U .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-jCPYK0RD58yPh73U .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-jCPYK0RD58yPh73U .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-jCPYK0RD58yPh73U .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-jCPYK0RD58yPh73U .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-jCPYK0RD58yPh73U .marker{fill:#333333;stroke:#333333;}#mermaid-svg-jCPYK0RD58yPh73U .marker.cross{stroke:#333333;}#mermaid-svg-jCPYK0RD58yPh73U svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-jCPYK0RD58yPh73U .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-jCPYK0RD58yPh73U .cluster-label text{fill:#333;}#mermaid-svg-jCPYK0RD58yPh73U .cluster-label span{color:#333;}#mermaid-svg-jCPYK0RD58yPh73U .label text,#mermaid-svg-jCPYK0RD58yPh73U span{fill:#333;color:#333;}#mermaid-svg-jCPYK0RD58yPh73U .node rect,#mermaid-svg-jCPYK0RD58yPh73U .node circle,#mermaid-svg-jCPYK0RD58yPh73U .node ellipse,#mermaid-svg-jCPYK0RD58yPh73U .node polygon,#mermaid-svg-jCPYK0RD58yPh73U .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-jCPYK0RD58yPh73U .node .label{text-align:center;}#mermaid-svg-jCPYK0RD58yPh73U .node.clickable{cursor:pointer;}#mermaid-svg-jCPYK0RD58yPh73U .arrowheadPath{fill:#333333;}#mermaid-svg-jCPYK0RD58yPh73U .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-jCPYK0RD58yPh73U .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-jCPYK0RD58yPh73U .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-jCPYK0RD58yPh73U .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-jCPYK0RD58yPh73U .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-jCPYK0RD58yPh73U .cluster text{fill:#333;}#mermaid-svg-jCPYK0RD58yPh73U .cluster span{color:#333;}#mermaid-svg-jCPYK0RD58yPh73U div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-jCPYK0RD58yPh73U :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

x
z

定义xxx和zzz的联合分布p(x,z)p(x,z)p(x,z),zzz的边缘分布p(z)p(z)p(z),条件分布p(x∣z)p(x|z)p(x∣z)

依据隐变量zzz的每一个维度对应xxx的每一个维度上是一个高斯分布有:
p(zk=1)=πkp(x∣zk=1)=N(x∣μk,Σk)p(z_k=1)=\pi_k\\ p(x|z_k=1)=\mathcal N(x|\mu_k,\Sigma_k ) p(zk​=1)=πk​p(x∣zk​=1)=N(x∣μk​,Σk​)
则可定义p(z)p(z)p(z)和p(x∣z)p(x|z)p(x∣z)有:
p(z)=∏k=1Kπzkp(x∣z)=∏k=1KN(x∣μk,Σk)zkp(z)=\prod_{k=1}^K\pi^{z_k}\\ p(x|z)=\prod_{k=1}^K \mathcal N(x|\mu_k,\Sigma_k)^{z_k} p(z)=k=1∏K​πzk​p(x∣z)=k=1∏K​N(x∣μk​,Σk​)zk​
则xxx的边缘分布有:
p(x)=∑zp(z)p(x∣z)=∑k=1KπkN(x∣μk,Σk)\begin{aligned} p(x)&=\sum_z p(z)p(x|z)\\ &=\sum_{k=1}^K\pi_k\mathcal N(x|\mu_k,\Sigma_k) \end{aligned} p(x)​=z∑​p(z)p(x∣z)=k=1∑K​πk​N(x∣μk​,Σk​)​
联合分布有:
p(X,Z∣μ,Σ,π)=∏n=1N∏k=1KπznkN(xn∣μk,Σk)nkzp(X,Z|\mu,\Sigma,\pi)=\prod_{n=1}^N\prod_{k=1}^K\pi^{z_{nk}}\mathcal N(x_n|\mu_k,\Sigma_k)^z_{nk} p(X,Z∣μ,Σ,π)=n=1∏N​k=1∏K​πznk​N(xn​∣μk​,Σk​)nkz​

到此得到了一个包含隐变量的联合分布。同时有后验概率:
γ(zk=1)=p(zk=1∣x)=p(zk=1)p(x∣zk=1)∑j=1Kp(zj=1)p(x∣zj=1)=πkN(x∣μk,Σk)∑j=1KπjN(x∣μj,Σj)\begin{aligned} \gamma(z_k=1)&=p(z_k=1|x)\\ &=\frac{p(z_k=1)p(x|z_k=1)}{\sum_{j=1}^Kp(z_j=1)p(x|z_j=1)}\\ &=\frac{\pi_k \mathcal N(x|\mu_k,\Sigma_k)}{\sum_{j=1}^K\pi_j \mathcal N(x|\mu_j,\Sigma_j)} \end{aligned} γ(zk​=1)​=p(zk​=1∣x)=∑j=1K​p(zj​=1)p(x∣zj​=1)p(zk​=1)p(x∣zk​=1)​=∑j=1K​πj​N(x∣μj​,Σj​)πk​N(x∣μk​,Σk​)​​

2.2.1 最大似然

假设有观测样本集{x1,...,xN}\{x_1,...,x_N\}{x1​,...,xN​},样本集中每个样本都是独立的从分布xxx中生成的,则可得似然函数:
P(X∣π,μ,Σ)=∏i=1Np(xi∣π,μ,Σ)logP(X∣π,μ,Σ)=∑i=1Nln{∑k=1KπkN(xi∣μk,Σk)}P(X|\pi,\mu,\Sigma)=\prod_{i=1}^Np(x_i|\pi,\mu,\Sigma)\\ logP(X|\pi,\mu,\Sigma)=\sum_{i=1}^Nln\big\{ \sum_{k=1}^K\pi_k\mathcal N(x_i|\mu_k,\Sigma_k)\big\} P(X∣π,μ,Σ)=i=1∏N​p(xi​∣π,μ,Σ)logP(X∣π,μ,Σ)=i=1∑N​ln{k=1∑K​πk​N(xi​∣μk​,Σk​)}

最大似然法存在的问题:

  • 某个高斯成分可能会坍缩到某个具体的样本点上,此时该成分贡献了无限大的似然值,导致其他高斯成分将几乎没有贡献

  • 一个KKK个成分的混合模型,将有K!K!K!个完全相同的最优解,这些解的值是相同的,但对模型的可解释性造成了困难

  • log函数内为多个高斯函数的求和,导致log不能直接作用域单个高斯函数,对求闭式解造成了困难

2.2.2 EM算法求解高斯混合模型的最大似然

似然函数对μk\mu_kμk​求偏导等于0得:
0=−∑i=1NπkN(xi∣μk,Σk)∑jKπkN(xi∣μj,Σj)Σk(xi−μk)=−∑i=1Nγ(zik)Σk(xi−μk)\begin{aligned} 0&=-\sum_{i=1}^N\frac{\pi_k\mathcal N(x_i|\mu_k,\Sigma_k)}{\sum_j^K\pi_k\mathcal N(x_i|\mu_j,\Sigma_j)}\Sigma_k(x_i-\mu_k)\\ &=-\sum_{i=1}^N\gamma(z_{ik})\Sigma_k(x_i-\mu_k) \end{aligned} 0​=−i=1∑N​∑jK​πk​N(xi​∣μj​,Σj​)πk​N(xi​∣μk​,Σk​)​Σk​(xi​−μk​)=−i=1∑N​γ(zik​)Σk​(xi​−μk​)​
解得:
μk=1Nk∑i=1Nγ(zik)xiNk=∑i=1Nγ(zik)\mu_k=\frac{1}{N_k}\sum_{i=1}^N\gamma(z_{ik})x_i\\ N_k=\sum_{i=1}^N\gamma(z_{ik}) μk​=Nk​1​i=1∑N​γ(zik​)xi​Nk​=i=1∑N​γ(zik​)
可以解释NkN_kNk​为被分到簇kkk得点得数目。

似然函数对Σk\Sigma_kΣk​求偏导等于0得:
Σk=1Nk∑i=1Nγ(zik)(xi−μk)(xi−μk)T\Sigma_k = \frac{1}{N_k}\sum_{i=1}^N\gamma(z_{ik})(x_i-\mu_k)(x_i-\mu_k)^T Σk​=Nk​1​i=1∑N​γ(zik​)(xi​−μk​)(xi​−μk​)T
求解πk\pi_kπk​需要满足约束∑k=1Nπk=1\sum_ {k=1}^N\pi_k=1∑k=1N​πk​=1,采用拉格朗日乘子法有:
lnp(X∣π,μ,Σ)+λ(∑k=1Kπk−1)lnp(X|\pi,\mu,\Sigma)+\lambda\bigg(\sum_{k=1}^K\pi_k-1\bigg) lnp(X∣π,μ,Σ)+λ(k=1∑K​πk​−1)
对πk\pi _kπk​求导等于0得:
0=∑i=1NN(xi∣μk,Σk)∑jKπkN(xi∣μj,Σj)+λ0 =\sum_{i=1}^N\frac{\mathcal N(x_i|\mu_k,\Sigma_k)}{\sum_j^K\pi_k\mathcal N(x_i|\mu_j,\Sigma_j)}+\lambda 0=i=1∑N​∑jK​πk​N(xi​∣μj​,Σj​)N(xi​∣μk​,Σk​)​+λ
解的:
πk=NkN\pi_k=\frac{N_k}{N} πk​=NNk​​
因为γ(zik)\gamma(z_{ik})γ(zik​)以一种复杂的方式依赖μk,Σk,πk\mu _k,\Sigma_k,\pi_kμk​,Σk​,πk​,故这样得出来的μk,Σk,πk\mu _k,\Sigma_k,\pi_kμk​,Σk​,πk​并不构成一个闭式解,但给出了一种迭代机制来找出最大似然的解,即EM算法。

用于高斯混合模型的EM算法

  1. 初始化μk,Σk,πk\mu_k,\Sigma_k,\pi_kμk​,Σk​,πk​,估计似然函数的初始值

  2. E step. 计算从属度(责任值)
    γ(zk=1)=πkN(x∣μk,Σk)∑j=1KπjN(x∣μj,Σj)\gamma(z_k=1)=\frac{\pi_k \mathcal N(x|\mu_k,\Sigma_k)}{\sum_{j=1}^K\pi_j \mathcal N(x|\mu_j,\Sigma_j)} γ(zk​=1)=∑j=1K​πj​N(x∣μj​,Σj​)πk​N(x∣μk​,Σk​)​

  3. M step. 使用当前责任值重新估计参数
    μk=1Nk∑i=1Nγ(zik)xiΣk=1Nk∑i=1Nγ(zik)(xi−μk)(xi−μk)Tπk=NkNwhereNk=∑i=1Nγ(zik)\mu_k=\frac{1}{N_k}\sum_{i=1}^N\gamma(z_{ik})x_i\\ \Sigma_k = \frac{1}{N_k}\sum_{i=1}^N\gamma(z_{ik})(x_i-\mu_k)(x_i-\mu_k)^T\\ \pi_k=\frac{N_k}{N}\\ where\quad N_k=\sum_{i=1}^N\gamma(z_{ik}) μk​=Nk​1​i=1∑N​γ(zik​)xi​Σk​=Nk​1​i=1∑N​γ(zik​)(xi​−μk​)(xi​−μk​)Tπk​=NNk​​whereNk​=i=1∑N​γ(zik​)

  4. 计算似然函数值
    logP(X∣π,μ,Σ)=∑i=1Nln{∑k=1KπkN(xi∣μk,Σk)}logP(X|\pi,\mu,\Sigma)=\sum_{i=1}^Nln\big\{ \sum_{k=1}^K\pi_k\mathcal N(x_i|\mu_k,\Sigma_k)\big\} logP(X∣π,μ,Σ)=i=1∑N​ln{k=1∑K​πk​N(xi​∣μk​,Σk​)}
    检查参数或似然函数值的收敛性没,如果不满足收敛检验则回到step 2

2.2.3 一般形式的EM算法

EM算法是一种迭代式算法,用于含有隐变量的概率参数模型的最大似然估计或极大后验概率估计,核心思想是用观测数据XXX和现有模型θ\thetaθ估计隐变量的后验概率,再用隐变量的后验概率计算似然函数的期望来替换似然函数(对这个式子2.2.4有更漂亮的理论解释):
max⁡lnP(X,Z∣θ)=max⁡∑zP(z∣X,θold)lnP(X,z∣θ)\begin{aligned} \max lnP(X,Z|\theta)=\max\sum_zP(z|X,\theta^{old})lnP(X,z|\theta) \end{aligned} maxlnP(X,Z∣θ)=maxz∑​P(z∣X,θold)lnP(X,z∣θ)​
一般形式的EM算法

给出观测变量XXX和隐变量ZZZ在参数θ\thetaθ统治下的联合分布p(X,Z∣θ)p(X,Z|\theta)p(X,Z∣θ),目标是寻找θ\thetaθ使得似然函数p(X∣θ)p(X|\theta)p(X∣θ)最大

  1. 初始化参数θold\theta^{old}θold

  2. E step 计算p(Z∣X,θold)p(Z|X,\theta^{old})p(Z∣X,θold)

  3. M step 计算
    θnew=arg max⁡θ{Q(θ,θold)最大似然估计Q(θ,θold)+lnp(θ)最大后验估计Q(θ,θold)=∑ZP(Z∣X,θold)lnP(X,Z∣θ)\theta^{new}=\underset{\theta}{\operatorname{arg\,max}}\, \begin{cases} \mathcal Q(\theta,\theta^{old}) \quad 最大似然估计&\\ \mathcal Q(\theta,\theta^{old}) +lnp(\theta) \quad 最大后验估计 \end{cases}\\ \mathcal Q(\theta,\theta^{old})=\sum_ZP(Z|X,\theta^{old})lnP(X,Z|\theta) θnew=θargmax​{Q(θ,θold)最大似然估计Q(θ,θold)+lnp(θ)最大后验估计​Q(θ,θold)=Z∑​P(Z∣X,θold)lnP(X,Z∣θ)

  4. 检查似然函数或者参数是否满足收敛条件,如果不满足$\theta^{old} \leftarrow \theta $ 回到step 2

2.2.4 更理论化的EM算法

有观测变量XXX、离散隐变量ZZZ和由参数$\theta 控制的联合分布控制的联合分布控制的联合分布p(X,Z|\theta )$,目标是求边际分布的最大似然:
p(X∣θ)=∑Zp(X,Z∣θ)p(X|\theta)=\sum_Zp(X,Z|\theta) p(X∣θ)=Z∑​p(X,Z∣θ)
假定直接优化p(X∣θ)p(X|\theta )p(X∣θ)是困难的,但是优化p(X,Z∣θ)p(X,Z|\theta )p(X,Z∣θ)较容易,则log似然可以分解得到:
ln⁡p(X∣θ)=L(q,θ)+KL(q∣∣p)L(q,θ)=∑Zq(Z)ln⁡{p(X,Z∣θ)q(Z)}KL(q∣∣p)=−∑Zq(Z)ln⁡{p(Z∣X,θ)q(Z)}\ln p(X|\theta) = \mathcal L(q,\theta)+KL(q||p)\\ \mathcal L(q,\theta) = \sum_Zq(Z)\ln \bigg\{\frac{p(X,Z|\theta)}{q(Z)}\bigg\}\\ KL(q||p)=-\sum_Zq(Z)\ln\bigg\{\frac{p(Z|X,\theta)}{q(Z)}\bigg\} lnp(X∣θ)=L(q,θ)+KL(q∣∣p)L(q,θ)=Z∑​q(Z)ln{q(Z)p(X,Z∣θ)​}KL(q∣∣p)=−Z∑​q(Z)ln{q(Z)p(Z∣X,θ)​}
又KL(p∣∣q)≥0KL(p||q)\ge0KL(p∣∣q)≥0,则ln⁡p(X∣θ)≥L(q,θ)\ln p(X|\theta)\ge \mathcal L(q,\theta)lnp(X∣θ)≥L(q,θ),即$ \mathcal L(q,\theta)为为为\ln p(X|\theta)$的下界

  • E步:θold\theta^{old}θold固定,优化q(Z)q(Z)q(Z)来使$ \mathcal L(q,\theta)$最大

    ln⁡p(X∣θ)\ln p(X|\theta)lnp(X∣θ)不依赖于q(Z)q(Z)q(Z),所以当KL(p∣∣q)=0KL(p||q)=0KL(p∣∣q)=0时, L(q,θ)\mathcal L(q,\theta)L(q,θ)有最大,此时q(Z)=p(Z∣X,θold)q(Z)=p(Z|X,\theta^{old})q(Z)=p(Z∣X,θold)

  • M步:q(Z)q(Z)q(Z)固定,优化θ\thetaθ来增大$ \mathcal L(q,\theta),由于,由于,由于KL(p||q)\ge0,所以,所以,所以 \mathcal L(q,\theta)$的增大也导致似然的下界增大
    L(q,θ)=∑Zp(Z∣X,θold)ln⁡p(X,Z∣θ)−∑Zp(Z∣X,θold)ln⁡p(Z∣X,θold)=Q(θ,θold)+const\begin{aligned} \mathcal L(q,\theta)&=\sum_Zp(Z|X,\theta^{old})\ln p(X,Z|\theta)-\sum_Zp(Z|X,\theta^{old})\ln p(Z|X,\theta^{old})\\ &= \mathcal Q(\theta,\theta^{old})+const \end{aligned} L(q,θ)​=Z∑​p(Z∣X,θold)lnp(X,Z∣θ)−Z∑​p(Z∣X,θold)lnp(Z∣X,θold)=Q(θ,θold)+const​

同理,当问题为求解最大后验概率时有:
ln⁡p(θ∣X)=L(q∣θ)+KL(p∣∣q)+ln⁡p(θ)−ln⁡p(X)≥L(q,θ)+ln⁡p(θ)−ln⁡p(X)\begin{aligned} \ln p(\theta|X)&=\mathcal L(q|\theta)+KL(p||q)+\ln p(\theta)-\ln p(X)\\ &\ge \mathcal L(q,\theta)+\ln p(\theta)-\ln p(X) \end{aligned} lnp(θ∣X)​=L(q∣θ)+KL(p∣∣q)+lnp(θ)−lnp(X)≥L(q,θ)+lnp(θ)−lnp(X)​
求解时,只需稍微修改M步就行

广义EM算法:在M步用仅仅优化部分参数增大L(q,θ)\mathcal L(q,\theta)L(q,θ)就行,来替代优化所有参数来求最大的L(q,θ)\mathcal L(q,\theta)L(q,θ)

增量式EM算法:在一次EM循环中仅处理一个数据点,收敛更快

2.3 层次聚类

在不同层次对数据集进行划分,从而形成树形的聚类结构

  • 自底向上(凝聚式):递归的合并相似度最高/距离最近的两个簇

  • 自顶向下(分裂式):递归地分裂最不一致地簇

簇间相似度计算方式:

  • 最小距离:可以形成非球形、非凸地簇;但会有链式效应
  • 最大距离:对噪声更加鲁棒(不成链);但趋向于拆开大的簇,偏好球形簇
  • 平均距离:MIN和MAX的折中方案
  • 中心点距离:存在反向效应问题(后边合并的簇间距离可能比之前合并的簇间距离更近)
  • 其他由某种函数推导出来地方法:Ward’s方法等

层次聚类特点

  • 不需要提前假定聚类的簇数,用户可以在层次化的聚类中选择一个分割,得到一个最自然的聚类结果
  • 聚类结果可能对应着有意义的分类体系
  • 一旦簇被合并或拆分,过程不可逆
  • 没有优化一个全局的目标函数
  • 不同具体实现方法可能存在如下问题:对噪声和离群点敏感、比较难处理不同尺寸的簇和凸的簇、成链误把大簇分裂

2.4 基于密度聚类

此类算法通过假设聚类结构能通过样本分布的紧密程度确定,通常情况下从样本密度的角度考虑样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的结果。

基本概念:

  • 核心点:半径ϵ\epsilonϵ内多于指定数量MinPtsMinPtsMinPts个点
  • 边界点:半径ϵ\epsilonϵ内少于指定数量MinPtsMinPtsMinPts个点,但在某个核心点的邻域内
  • 噪声点:核心点和边界点之外的点
  • 密度直达:若xjx_jxj​位于核心点xix_ixi​的邻域内,则称xjx_jxj​由xix_ixi​密度直达
  • 密度可达:连接ppp和qqq的路径上的点都是核心点,则称qqq由ppp密度可达
  • 密度相连:存在点ooo其密度可达ppp和qqq,则称ppp和qqq密度相连

聚类簇满足的性质:

  • 连接性:簇内任意两点是密度相连的
  • 最大性:如果一个点从一个簇中的任意一点密度可达,则该点属于该簇

基于密度聚类算法的特点:

  • 优势

    • 不需要明确簇的数量
    • 可以适应任意形状的簇
    • 对离群点较为鲁棒
  • 劣势
    • 参数选择较为困难(MinPts,ϵMinPts,\epsilonMinPts,ϵ)
    • 不适合密度差异较大的数据集

参考资料

《Pattern Recognition and Machine Learning》

《机器学习》,周志华

聚类基本概念及常见聚类算法和EM算法相关推荐

  1. 使用Apriori算法和FP-growth算法进行关联分析

    目录 1. 关联分析 2. Apriori原理 3. 使用Apriori算法来发现频繁集 4. 使用FP-growth算法来高效发现频繁项集 5. 示例:从新闻网站点击流中挖掘新闻报道 扩展阅读 系列 ...

  2. dijkstra算法和A*算法

    转自: https://www.cnblogs.com/21207-iHome/p/6048969.html#undefined Dijkstra算法 迪杰斯特拉(Dijkstra)算法是典型的最短路 ...

  3. 数据结构与算法之美笔记——基础篇(下):图、字符串匹配算法(BF 算法和 RK 算法、BM 算法和 KMP 算法 、Trie 树和 AC 自动机)

    图 如何存储微博.微信等社交网络中的好友关系?图.实际上,涉及图的算法有很多,也非常复杂,比如图的搜索.最短路径.最小生成树.二分图等等.我们今天聚焦在图存储这一方面,后面会分好几节来依次讲解图相关的 ...

  4. DP之Warshall算法和Floyd算法

    DP之Warshall算法和Floyd算法 上2篇详细分析了动态规划的一些理解,传统的教材上就大概说了下空间换时间,记忆以避免重复计算等. 然后我们在文章中深入的分析和解释了交叠子问题是怎么表现的,最 ...

  5. 链接挖掘算法之PageRank算法和HITS算法

    参考资料:http://blog.csdn.net/hguisu/article/details/7996185 更多数据挖掘算法:https://github.com/linyiqun/DataMi ...

  6. 求的带权图最小生成树的Prim算法和Kruskal算法

    求的带权图最小生成树的Prim算法和Kruskal算法 最小生成树的概念 最小生成树其实是最小权重生成树的简称. 一个连通图可能有多个生成树.当图中的边具有权值时,总会有一个生成树的边的权值之和小于或 ...

  7. 关联规则挖掘算法: Aprior算法和Fpgrowth算法

      关联规则挖掘的目的是挖掘不同物品(item)之前的相关性,啤酒和尿布的故事就是一个典型的成功例子.关联规则挖掘思想简单高效,在广告推荐领域也有较多的应用,主要用于推荐模型落地前的流量探索以及构建规 ...

  8. lru调度算法例题_FIFO调度算法和LRU算法

    微信公众号关注我,更多计算机知识告诉你! 一.理论 FIFO:先进先出调度算法 LRU:最近最久未使用调度算法 两者都是缓存调度算法,经常用作内存的页面置换算法. 打一个比方,帮助你理解.你有很多的书 ...

  9. 数据结构与算法—最小生成树(Prim算法和Kruskal算法算法详解)

    前言 在数据结构与算法的图论中,(生成)最小生成树算法是一种常用并且和生活贴切比较近的一种算法.但是可能很多人对概念不是很清楚.我们看下百度百科对于最小生成树定义: 一个有 n 个结点的连通图的生成树 ...

最新文章

  1. Flask-RESTful之视图
  2. Oracle学习:事务的隔离级别
  3. 拟态防御_纯素食汉堡的拟态
  4. poj 2191 Mersenne Composite Numbers
  5. TabControl与UserControl合伙吃内存
  6. 【Linux】基础每日一命之cutmvscp命令
  7. 使用IHTMLDocument3 的getElementById获取控件总是返回空的解决方法
  8. android转usb工具,绿联Type-C转Micro usb数据线,Type-C转安卓接口转换线
  9. 中兴服务器 raid,中兴LIS等直通阵列卡卡硬盘检测工具
  10. oracle 如何实现excel的正态分布函数normdist
  11. 在word中强制换行方法如下
  12. 考拉消息中心消息盒子处理重构(策略模式)
  13. “次世代”游戏建模技术真的那么火吗?那容易学会吗?如何去学?
  14. 记云服务器中挖矿病毒与防范
  15. python怎么攻击服务器_资深黑客教python小白攻破一个网站!
  16. 网站关键词优化如何优化大量关键词?
  17. 试题 基础练习 Sine之舞
  18. python gevent queue_gevent.queue
  19. win10文件夹加密_分享win10系统不使用第三方工具加密文件夹的操作方法(图文)
  20. 阿米巴经营的五大目的!

热门文章

  1. 【基本算法】 位运算:二进制状态压缩
  2. 运输费用在ERP 系统中是如何处理
  3. 【iOS】—— KVC的简单介绍
  4. Nginx、图片上传、FastDFS
  5. 如果我们失联了,怎么办?
  6. 希玛 AR907C绝缘电阻测试仪基本实验
  7. OpenCV人脸识别的原理 .
  8. easyExcell
  9. Confluence 6 使用 LDAP 授权连接一个内部目录 - 用户 Schema 设置
  10. 「面经分享」小米java岗二面面经,已拿offer