核K均值聚类Kernel K-Means Clustering(KKMC)

1. 理论基础回顾

(1)核函数定义(统计学习方法定义7.6)

  • 定义内容:假设有输入空间 X \mathcal{X} X( X ∈ R n \mathcal{X} \in R^n X∈Rn)和特征空间 H \mathcal{H} H(希尔伯特空间),若存在一个从 X \mathcal{X} X到 H \mathcal{H} H的映射 ϕ ( x ) : X → H \phi(x): \mathcal{X} \rightarrow \mathcal{H} ϕ(x):X→H,使得对所有样本 x , z ∈ X x, z \in \mathcal{X} x,z∈X,有函数 K ( x , z ) K(x, z) K(x,z)满足条件 K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x, z)=\phi(x) \cdot \phi(z) K(x,z)=ϕ(x)⋅ϕ(z)(内积),则称 K ( x , z ) K(x, z) K(x,z)为核函数, ϕ ( x ) \phi(x) ϕ(x)为映射函数。

  • 核技巧思路:在学习和预测中只定义核函数 K ( x , z ) K(x, z) K(x,z),而不显式地定义映射函数 ϕ ( ⋅ ) \phi(\cdot) ϕ(⋅),因为通常直接计算 K ( x , z ) K(x, z) K(x,z)比较容易,而由 ϕ ( x ) \phi(x) ϕ(x)和 ϕ ( z ) \phi(z) ϕ(z)来计算 K ( x , z ) K(x, z) K(x,z)比较困难( ϕ ( ⋅ ) \phi(\cdot) ϕ(⋅)是输入空间 X \mathcal{X} X到特征空间 H \mathcal{H} H的映射,特征空间一般是高维甚至无穷维的)。此外,对于给定的核函数 K ( x , z ) K(x, z) K(x,z),特征空间 H \mathcal{H} H和映射函数 ϕ ( ⋅ ) \phi(\cdot) ϕ(⋅)的取法不唯一,即便是在同一特征空间内也能取不同的映射。

  • 例:假设输入空间 X ∈ R 2 \mathcal{X} \in R^2 X∈R2,核函数为 K ( x , z ) = ( x ⋅ z ) 2 K(x, z)=(x \cdot z)^2 K(x,z)=(x⋅z)2,试找出其相关的特征空间 H \mathcal{H} H和映射 ϕ ( ⋅ ) : R 2 → H \phi(\cdot): R^2 \rightarrow \mathcal{H} ϕ(⋅):R2→H。

    • 法1:取特征空间 H = R 3 \mathcal{H}=R^3 H=R3,记 x = ( x ( 1 ) , x ( 2 ) ) T x=\left(x^{(1)}, x^{(2)}\right)^{\mathrm{T}} x=(x(1),x(2))T, z = ( z ( 1 ) , z ( 2 ) ) T z=\left(z^{(1)}, z^{(2)}\right)^{\mathrm{T}} z=(z(1),z(2))T,核函数为
      ( x ⋅ z ) 2 = ( x ( 1 ) z ( 1 ) + x ( 2 ) z ( 2 ) ) 2 = ( x ( 1 ) z ( 1 ) ) 2 + 2 x ( 1 ) z ( 1 ) x ( 2 ) z ( 2 ) + ( x ( 2 ) z ( 2 ) ) 2 (x \cdot z)^2=\left(x^{(1)} z^{(1)}+x^{(2)} z^{(2)}\right)^2=\left(x^{(1)} z^{(1)}\right)^2+2 x^{(1)} z^{(1)} x^{(2)} z^{(2)}+\left(x^{(2)} z^{(2)}\right)^2 (x⋅z)2=(x(1)z(1)+x(2)z(2))2=(x(1)z(1))2+2x(1)z(1)x(2)z(2)+(x(2)z(2))2

      所以可以取映射 ϕ ( x ) = ( ( x ( 1 ) ) 2 , 2 x ( 1 ) x ( 2 ) , ( x ( 2 ) ) 2 ) T \phi(x)=\left(\left(x^{(1)}\right)^2, \sqrt{2} x^{(1)} x^{(2)},\left(x^{(2)}\right)^2\right)^{\mathrm{T}} ϕ(x)=((x(1))2,2 ​x(1)x(2),(x(2))2)T,易验证 ϕ ( x ) ⋅ ϕ ( z ) = ( x ⋅ z ) 2 = K ( x , z ) \phi(x) \cdot \phi(z)=(x \cdot z)^2=K(x, z) ϕ(x)⋅ϕ(z)=(x⋅z)2=K(x,z)。

    • 法2:取 H = R 3 \mathcal{H}=R^3 H=R3以及 ϕ ( x ) = 1 2 ( ( x ( 1 ) ) 2 − ( x ( 2 ) ) 2 , 2 x ( 1 ) x ( 2 ) , ( x ( 1 ) ) 2 + ( x ( 2 ) ) 2 ) T \phi(x)=\frac{1}{\sqrt{2}}\left(\left(x^{(1)}\right)^2-\left(x^{(2)}\right)^2, 2 x^{(1)} x^{(2)},\left(x^{(1)}\right)^2+\left(x^{(2)}\right)^2\right)^{\mathrm{T}} ϕ(x)=2 ​1​((x(1))2−(x(2))2,2x(1)x(2),(x(1))2+(x(2))2)T同样满足条件。

    • 法3:取 H = R 4 \mathcal{H}=R^4 H=R4以及 ϕ ( x ) = ( ( x ( 1 ) ) 2 , x ( 1 ) x ( 2 ) , x ( 1 ) x ( 2 ) , ( x ( 2 ) ) 2 ) T \phi(x)=\left(\left(x^{(1)}\right)^2, x^{(1)} x^{(2)}, x^{(1)} x^{(2)},\left(x^{(2)}\right)^2\right)^T ϕ(x)=((x(1))2,x(1)x(2),x(1)x(2),(x(2))2)T满足条件。

  • 通俗理解:核方法将数据映射到更高维的空间,希望在这个更高维的空间中,数据可以变得更容易分离或更好的结构化。

(2)期望最大算法(Expectation Maximization Algorithm)

  • EM 算法是一种迭代算法,用于含有隐变量(Hidden Variable)的概率参数模型的最大似然估计或极大后验概率估计。其核心思想非常简单,分为两步:Expection-Step(期望步长)和 Maximization-Step(最大化步长)。

    • E-Step 主要通过观察数据和现有模型来估计参数,然后用这个估计的参数值来计算似然函数的期望值;
    • M-Step 是寻找似然函数最大化时对应的参数。

    由于算法会保证在每次迭代之后似然函数都会增加,所以函数最终会收敛。

  • 数学推导过程:

    1. 给定数据集,假设样本间相互独立,我们想要拟合模型 p ( x ; θ ) p\left(x ; \theta\right) p(x;θ)的参数,根据分布可以得到如下似然函数:

      1. 第一步是对极大似然函数取对数;
      2. 第二步是对每个样本的每个可能的类别 z z z求联合概率分布之和。(如果这个 z 是已知的数,那么使用极大似然法会很容易。但如果 z 是隐变量,我们就需要用 EM 算法来求。)

    L ( θ ) = ∑ i = 1 n log ⁡ p ( x i ; θ ) = ∑ i = 1 n log ⁡ ∑ z p ( x i , z ; θ ) \begin{aligned} L(\theta) &=\sum_{i=1}^n \log p\left(x_i ; \theta\right) \\ &=\sum_{i=1}^n \log \sum_z p\left(x_i, z ; \theta\right) \end{aligned} L(θ)​=i=1∑n​logp(xi​;θ)=i=1∑n​logz∑​p(xi​,z;θ)​

    1. 对于每一个样本 i i i,我们用 Q i ( z ) Q_i(z) Qi​(z)表示样本 i i i隐含变量 z z z的某种分布,且 Q i ( z ) Q_i(z) Qi​(z)满足( ∑ z Z Q i ( z ) = 1 , Q i ( z ) ≥ 0 \sum_z^Z Q_i(z)=1, \quad Q_i(z) \geq 0 ∑zZ​Qi​(z)=1,Qi​(z)≥0)。则上式可写为:
      ∑ i n log ⁡ p ( x i ; θ ) = ∑ i n log ⁡ ∑ z p ( x i , z ; θ ) = ∑ i n log ⁡ ∑ z Z Q i ( z ) p ( x i , z ; θ ) Q i ( z ) ≥ ∑ i n ∑ z Z Q i ( z ) log ⁡ p ( x i , z ; θ ) Q i ( z ) \begin{aligned} \sum_i^n \log p\left(x_i ; \theta\right) &=\sum_i^n \log \sum_z p\left(x_i, z ; \theta\right) \\ &=\sum_i^n \log \sum_z^Z Q_i(z) \frac{p\left(x_i, z ; \theta\right)}{Q_i(z)} \\ & \geq \sum_i^n \sum_z^Z Q_i(z) \log \frac{p\left(x_i, z ; \theta\right)}{Q_i(z)} \end{aligned} i∑n​logp(xi​;θ)​=i∑n​logz∑​p(xi​,z;θ)=i∑n​logz∑Z​Qi​(z)Qi​(z)p(xi​,z;θ)​≥i∑n​z∑Z​Qi​(z)logQi​(z)p(xi​,z;θ)​​
      上面式子中,第一步是求和每个样本的所有可能的类别 z 的联合概率密度函数,但是这一步直接求导非常困难,所以将其分子分母同乘以函数 Q i ( z ) Q_i(z) Qi​(z) ,转换到第二步。从第二步到第三步是利用 Jensen 不等式。

    2. 通过上述推导,得到关于 L ( θ ) L(\theta) L(θ)的不等式关系,通过不断提高不等式的右侧,就可以使得 L ( θ ) L(\theta) L(θ)不断提高,达到最大化对数似然函数的目的。

(3)K均值聚类算法

  • 输入:包含n个样本的数据集合,聚类形成的簇的个数k。

  • 算法步骤:

    1. 选择初始化的k个样本,作为初始聚类中心 a = a 1 , a 2 , … a k a=a_1, a_2, \ldots a_k a=a1​,a2​,…ak​;
    2. 针对数据集中每个样本 x i x_i xi​,计算它到 k 个聚类中心的距离,并将其分到距离最小的聚类中心所对应的类中;
    3. 重新计算聚类中心 a j = 1 ∣ c j ∣ ∑ x ∈ c j x a_j=\frac{1}{\left|c_j\right|} \sum_{x \in c_j} x aj​=∣cj​∣1​∑x∈cj​​x( c j c_j cj​为第 j j j类样本数),即将每个类别中所有样本的均值作为新的中心;
    4. 重复上述步骤2和3,直到达到某个中止条件(迭代次数、最小误差变化等)。
  • 数学过程:

    1. 首先确定损失函数为: J = ∑ i = 1 C ∑ j = 1 N r i j ⋅ ν ( x j , μ i ) J=\sum_{i=1}^C \sum_{j=1}^N r_{i j} \cdot \nu\left(x_j, \mu_i\right) J=∑i=1C​∑j=1N​rij​⋅ν(xj​,μi​),其中 ν ( x j , μ i ) = ∥ x j − μ i ∥ 2 \nu\left(x_j, \mu_i\right)=\left\|x_j-\mu_i\right\|^2 ν(xj​,μi​)=∥xj​−μi​∥2表示样本到各聚类中心的距离, r n k = { 1 if  x n ∈ k 0 else  r_{n k}= \begin{cases}1 & \text { if } x_n \in k \\ 0 & \text { else }\end{cases} rnk​={10​ if xn​∈k else ​用于筛选样本到最近聚类中心的距离。

    2. 为了使得损失函数达到极小值,对损失函数求偏导数且等于 0,即 ∂ J ∂ μ k = 2 ∑ i = 1 N r i k ( x i − μ k ) = 0 \frac{\partial J}{\partial \mu_k}=2 \sum_{i=1}^N r_{i k}\left(x_i-\mu_k\right)=0 ∂μk​∂J​=2∑i=1N​rik​(xi​−μk​)=0,更新所有聚类中心 μ k = ∑ i = 1 N r i k x i ∑ i = 1 N r i k \mu_k=\frac{\sum_{i=1}^N r_{i k} x_i}{\sum_{i=1}^N r_{i k}} μk​=∑i=1N​rik​∑i=1N​rik​xi​​。

    3. 再对所有样本计算到各聚类中心的距离以更新参数 r n k r_{n k} rnk​。

    4. 重复上述过程即可得到所有类别的中心(K-means 聚类的迭代算法实际上是 EM 算法)。

2. Kernel K-Means Clustering

(1)使用背景

  • 基于欧式距离的 K-means 假设了各个数据簇的数据具有一样的的先验概率并呈现球形分布,但这种分布在实际生活中并不常见。
  • 面对非凸的数据分布形状时,可以引入核函数来优化,这时算法又称为核 K-means 算法,是核聚类方法的一种。
  • 核聚类方法的主要思想是通过一个非线性映射,将输入空间中的数据点映射到高位的特征空间中,并在新的特征空间中进行聚类。非线性映射增加了数据点线性可分的概率,从而在经典的聚类算法失效的情况下,通过引入核函数可以达到更为准确的聚类结果。

(2)模型

  • 现有输入空间 X \mathcal{X} X为 { x 1 , x 2 , x 3 , ⋯ , x M } \left\{x^1, x^2, x^3, \cdots, x^M\right\} {x1,x2,x3,⋯,xM}( x i ∈ R n x^i \in R^n xi∈Rn, i = 1 , 2 , ⋯ , M i=1,2,\cdots,M i=1,2,⋯,M),假设依据Mercer定理存在一个从 X \mathcal{X} X到特征空间 H \mathcal{H} H的映射 ϕ ( x ) : X → H \phi(x): \mathcal{X} \rightarrow \mathcal{H} ϕ(x):X→H,使得核函数 K ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j ) K(x^i, x^j)=\phi(x^i) \cdot \phi(x^j) K(xi,xj)=ϕ(xi)⋅ϕ(xj)。KKMC就是讨论特征空间 H \mathcal{H} H里数据集 { ϕ ( x 1 ) , ϕ ( x 2 ) , ϕ ( x 3 ) , ⋯ , ϕ ( x M ) } \left\{\phi(x^1), \phi(x^2), \phi(x^3), \cdots, \phi(x^M)\right\} {ϕ(x1),ϕ(x2),ϕ(x3),⋯,ϕ(xM)}的聚类情况。

  • 与上述理论类似地有损失:
    J = ∑ i = 1 M ∑ k = 1 K r i k ⋅ ∥ ϕ ( x i ) − μ k ∥ 2 r i k = { 1 if  x i ∈ k c l a s s 0 else  J=\sum_{i=1}^M \sum_{k=1}^K r_{i k} \cdot \left\|\phi(x^i)-\mu_k\right\|^2\\ r_{i k}= \begin{cases}1 & \text { if } x_i \in kclass \\ 0 & \text { else }\end{cases} J=i=1∑M​k=1∑K​rik​⋅∥∥​ϕ(xi)−μk​∥∥​2rik​={10​ if xi​∈kclass else ​

(3)算法

  • 初始化: a i k ≥ 0 , ( i = 1 , 2 , ⋯ , M ) , ( k = 1 , 2 , ⋯ , K ) a_{i k} \geq 0, (i=1,2, \cdots, M),(k=1,2, \cdots, K) aik​≥0,(i=1,2,⋯,M),(k=1,2,⋯,K),其中对于所有类别 k k k都有 ∑ i = 1 M a i k = 1 \sum_{i=1}^M a_{i k}=1 ∑i=1M​aik​=1,计算初始聚类中心:
    μ k = ∑ i = 1 M a i k ϕ ( x i ) , k = 1 , 2 , ⋯ , K \mu_k=\sum_{i=1}^M a_{i k} \phi\left(x^i\right), k=1,2, \cdots, K μk​=i=1∑M​aik​ϕ(xi),k=1,2,⋯,K

  • Expection-Step:

    • 计算 r i k r_{i k} rik​:
      γ ˉ i k = { 1 k = = argmin ⁡ j ∥ ϕ ( x i ) − μ j ∥ 2 0 otherwise  \bar{\gamma}_{i k}=\left\{\begin{array}{lc} 1 & k==\operatorname{argmin}_j\|\phi\left(x^i\right)-\mu_j \|^2 \\ 0 & \text { otherwise } \end{array}\right. γˉ​ik​={10​k==argminj​∥ϕ(xi)−μj​∥2 otherwise ​

    • 其中对映射 ϕ ( ⋅ ) \phi(\cdot) ϕ(⋅)的计算可以转化为对核函数 K ( x i , x j ) K(x^i, x^j) K(xi,xj)的计算,具体过程如下:
      ∥ ϕ ( x i ) − μ j ∥ 2 = ∥ ϕ ( x i ) − ∑ n = 1 M a n j ϕ ( x n ) ∥ 2 = K ( x i , x i ) − 2 ∑ n = 1 M a n j K ( x i , x n ) + ∑ m , n = 1 M a m j a n j K ( x m , x n ) , ( j = 1 , 2 , ⋯ , K ) \begin{aligned} \|\phi\left(x^i\right)-\mu_j \|^2 &=\left\|\phi\left(x^i\right)-\sum_{n=1}^M a_{n j} \phi\left(x^n\right)\right\|^2\\ &=K\left(x^i, x^i\right)-2 \sum_{n=1}^M a_{n j} K\left(x^i, x^n\right)+\sum_{m, n=1}^M a_{m j} a_{n j} K\left(x^m, x^n\right)\\ &, (j=1,2, \cdots, K) \end{aligned} ∥ϕ(xi)−μj​∥2​=∥∥∥∥∥​ϕ(xi)−n=1∑M​anj​ϕ(xn)∥∥∥∥∥​2=K(xi,xi)−2n=1∑M​anj​K(xi,xn)+m,n=1∑M​amj​anj​K(xm,xn),(j=1,2,⋯,K)​

  • Maximization-Step:

    固定 r i k r_{i k} rik​,计算 a i k a_{i k} aik​:
    ∂ J ∂ μ k = − 2 ∑ i = 1 M r i k ( ϕ ( x i ) − μ k ) = 0 , μ k = ∑ i = 1 M r i k ϕ ( x i ) ∑ i = 1 M r i k , a i k = r i k ∑ i = 1 M r i k , ( k = 1 , 2 , ⋯ , K ) \begin{gathered} \frac{\partial J}{\partial \mu_k}=-2 \sum_{i=1}^M r_{i k}\left(\phi(x^i)-\mu_k\right)=0, \\ \mu_k=\frac{\sum_{i=1}^M r_{i k} \phi\left(x^i\right)}{\sum_{i=1}^M r_{i k}}, \\ a_{i k}=\frac{r_{i k}}{\sum_{i=1}^M r_{i k}}, \\ (k=1,2, \cdots, K) \end{gathered} ∂μk​∂J​=−2i=1∑M​rik​(ϕ(xi)−μk​)=0,μk​=∑i=1M​rik​∑i=1M​rik​ϕ(xi)​,aik​=∑i=1M​rik​rik​​,(k=1,2,⋯,K)​

  • 迭代E-Step和M-Step直至收敛。

3. 补充

  • 本人才疏学浅,欢迎批评、指导和交流;
  • 侵权必删

【ML算法学习】核K均值聚类Kernel K-Means Clustering(KKMC)相关推荐

  1. python机器学习案例系列教程——k均值聚类、k中心点聚类

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 上一篇我们学习了层次聚类.层次聚类只是迭代的把最相近的两个聚类匹配起来.并没有给出能给出多少的分组.今天我们来研究一个K均值聚类.就是 ...

  2. 金融业信贷风控算法9-聚类场景之K均值聚类与K邻近聚类

    文章目录 一. K均值聚类:物以类聚.人以群分 1.1 距离的概念 1.2 闵可夫斯基距离 1.3 VDM距离 1.4 聚类模型中的基本概念 1.5 K-均值聚类(K-means) 1.6 K-均值算 ...

  3. Python,OpenCV中的K均值聚类——K-Means Cluster

    Python,OpenCV中的K均值聚类 1. 效果图 2. 原理 2.1 什么是K均值聚类? 2.2 K均值聚类过程 2.3 cv2.kmeans(z, 2, None, criteria, 10, ...

  4. python实现k均值聚类(kMeans)基于numpy

    1.k均值聚类简介 k均值聚类是一种无监督学习方法,当数据量小,数据维度低时,具有简单.快速.方便的优点,但是当数据量较大时,其速度较慢,也容易陷入局部最优. 2. 步骤 和以前一样,kMeans聚类 ...

  5. Kmeans++、Mini-Batch Kmeans、Bisecting Kmeans、K中心点(K-Medoids)算法、K众数聚类、核K均值聚类

    Kmeans++.Mini-Batch Kmeans.Bisecting Kmeans.K中心点(K-Medoids)算法.K众数聚类.核K均值聚类 目录 Kmeans++.Mini-Batch Km ...

  6. k均值聚类算法原理和(TensorFlow)实现

    顾名思义,k均值聚类是一种对数据进行聚类的技术,即将数据分割成指定数量的几个类,揭示数据的内在性质及规律. 我们知道,在机器学习中,有三种不同的学习模式:监督学习.无监督学习和强化学习: 监督学习,也 ...

  7. 算法杂货铺——k均值聚类(K-means)

    算法杂货铺--k均值聚类(K-means) 2010-09-20 20:05 by T2噬菌体, 57998 阅读, 48 评论, 收藏, 编辑 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法 ...

  8. EM算法应用:k均值聚类(k-means)和高斯混合模型(GMM)

    文章目录 k-means聚类 EM角度的理解 算法流程 特点 k值选择 局限性 高斯混合模型 GMM的问题描述 1,明确隐变量 2.EM算法的E步:确定Q函数 3. EM算法的E步 4. 停止条件 上 ...

  9. k均值聚类算法优缺点_Grasshopper实现K均值聚类算法

    本文很长很长,有很多很多图,包含以下部分: 1.算法简介 2.如何分类平面点 3.如何分类空间点 4.如何分类多维数据 5.后记 提醒:以下内容包括:智障操作,无中生友,重复造轮子 等 1.算法简介 ...

最新文章

  1. 跨平台表空间传输(摘自eygle《循序渐进Oracle》)
  2. 深究AngularJS——排序
  3. mysql loop循环实例_MySql CURSOR+LOOP循环-使用小实例
  4. 田渊栋:业余做研究的经验
  5. sql max同一行_SQL 打印矩阵(三)
  6. HashMap工作原理和扩容机制
  7. 职言 | 单纯做业务测试真的行得通吗?
  8. 拓嘉辰丰电商:拼多多推广主要有哪些模式
  9. python金融大数据分析师工资待遇_三年工作经验大佬带你解读 Python金融大数据分析...
  10. 【翻译论文】An Architecture Combining Convolutional Neural Network (CNN) and Support Vector Machine (SVM)
  11. 写论文一定要会-------中英文参考文献的导出方法
  12. IP67 | IP58 防护等级理解
  13. 电路板PCB夹具设计与测试看法
  14. 最适合小白的编程语言是什么?网友直呼:那当然是Python!
  15. 图像检索:OPQ索引与HNSW索引
  16. android studio用mysql_Android Studio使用JDBC远程连接mysql的注意事项(附示例)
  17. Java——判断回文
  18. (转)归纳:数据库设计的六个阶段详解(有这一篇就够了)
  19. java se 14 虚拟机规范
  20. 【SD2.0大会】刘振飞:微软Office研发成功三大法宝

热门文章

  1. 程序员的 “三六九等”
  2. 网御星云防火墙CPU使用率100%的解决方案
  3. CSS3简单实现,数字滚动效果
  4. 响应时代号召 中烜速充走进光伏发电新时代
  5. python关于messagebox题目_Python messagebox.askokcancel方法代码示例
  6. docker 连接宿主机的 MySQL
  7. 【机器学习】李宏毅——生成式对抗网络GAN
  8. 详解TCP连接的建立
  9. redis键值出现 \xac\xed\x00\x05t\x00的解决方法!!
  10. 五、Leetcode算法 最长公共前缀