【ML算法学习】核K均值聚类Kernel K-Means Clustering(KKMC)
核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 是寻找似然函数最大化时对应的参数。
由于算法会保证在每次迭代之后似然函数都会增加,所以函数最终会收敛。
数学推导过程:
- 给定数据集,假设样本间相互独立,我们想要拟合模型 p ( x ; θ ) p\left(x ; \theta\right) p(x;θ)的参数,根据分布可以得到如下似然函数:
- 第一步是对极大似然函数取对数;
- 第二步是对每个样本的每个可能的类别 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∑nlogp(xi;θ)=i=1∑nlogz∑p(xi,z;θ)
对于每一个样本 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 ∑zZQi(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∑nlogp(xi;θ)=i∑nlogz∑p(xi,z;θ)=i∑nlogz∑ZQi(z)Qi(z)p(xi,z;θ)≥i∑nz∑ZQi(z)logQi(z)p(xi,z;θ)
上面式子中,第一步是求和每个样本的所有可能的类别 z 的联合概率密度函数,但是这一步直接求导非常困难,所以将其分子分母同乘以函数 Q i ( z ) Q_i(z) Qi(z) ,转换到第二步。从第二步到第三步是利用 Jensen 不等式。通过上述推导,得到关于 L ( θ ) L(\theta) L(θ)的不等式关系,通过不断提高不等式的右侧,就可以使得 L ( θ ) L(\theta) L(θ)不断提高,达到最大化对数似然函数的目的。
- 给定数据集,假设样本间相互独立,我们想要拟合模型 p ( x ; θ ) p\left(x ; \theta\right) p(x;θ)的参数,根据分布可以得到如下似然函数:
(3)K均值聚类算法
输入:包含n个样本的数据集合,聚类形成的簇的个数k。
算法步骤:
- 选择初始化的k个样本,作为初始聚类中心 a = a 1 , a 2 , … a k a=a_1, a_2, \ldots a_k a=a1,a2,…ak;
- 针对数据集中每个样本 x i x_i xi,计算它到 k 个聚类中心的距离,并将其分到距离最小的聚类中心所对应的类中;
- 重新计算聚类中心 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∈cjx( c j c_j cj为第 j j j类样本数),即将每个类别中所有样本的均值作为新的中心;
- 重复上述步骤2和3,直到达到某个中止条件(迭代次数、最小误差变化等)。
数学过程:
首先确定损失函数为: 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=1Nrij⋅ν(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 用于筛选样本到最近聚类中心的距离。
为了使得损失函数达到极小值,对损失函数求偏导数且等于 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=1Nrik(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=1Nrik∑i=1Nrikxi。
再对所有样本计算到各聚类中心的距离以更新参数 r n k r_{n k} rnk。
重复上述过程即可得到所有类别的中心(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∑Mk=1∑Krik⋅∥∥ϕ(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=1Maik=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∑Maikϕ(xi),k=1,2,⋯,KExpection-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={10k==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∑Manjϕ(xn)∥∥∥∥∥2=K(xi,xi)−2n=1∑ManjK(xi,xn)+m,n=1∑MamjanjK(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∑Mrik(ϕ(xi)−μk)=0,μk=∑i=1Mrik∑i=1Mrikϕ(xi),aik=∑i=1Mrikrik,(k=1,2,⋯,K)迭代E-Step和M-Step直至收敛。
3. 补充
- 本人才疏学浅,欢迎批评、指导和交流;
- 侵权必删
【ML算法学习】核K均值聚类Kernel K-Means Clustering(KKMC)相关推荐
- python机器学习案例系列教程——k均值聚类、k中心点聚类
全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 上一篇我们学习了层次聚类.层次聚类只是迭代的把最相近的两个聚类匹配起来.并没有给出能给出多少的分组.今天我们来研究一个K均值聚类.就是 ...
- 金融业信贷风控算法9-聚类场景之K均值聚类与K邻近聚类
文章目录 一. K均值聚类:物以类聚.人以群分 1.1 距离的概念 1.2 闵可夫斯基距离 1.3 VDM距离 1.4 聚类模型中的基本概念 1.5 K-均值聚类(K-means) 1.6 K-均值算 ...
- 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, ...
- python实现k均值聚类(kMeans)基于numpy
1.k均值聚类简介 k均值聚类是一种无监督学习方法,当数据量小,数据维度低时,具有简单.快速.方便的优点,但是当数据量较大时,其速度较慢,也容易陷入局部最优. 2. 步骤 和以前一样,kMeans聚类 ...
- 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 ...
- k均值聚类算法原理和(TensorFlow)实现
顾名思义,k均值聚类是一种对数据进行聚类的技术,即将数据分割成指定数量的几个类,揭示数据的内在性质及规律. 我们知道,在机器学习中,有三种不同的学习模式:监督学习.无监督学习和强化学习: 监督学习,也 ...
- 算法杂货铺——k均值聚类(K-means)
算法杂货铺--k均值聚类(K-means) 2010-09-20 20:05 by T2噬菌体, 57998 阅读, 48 评论, 收藏, 编辑 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法 ...
- EM算法应用:k均值聚类(k-means)和高斯混合模型(GMM)
文章目录 k-means聚类 EM角度的理解 算法流程 特点 k值选择 局限性 高斯混合模型 GMM的问题描述 1,明确隐变量 2.EM算法的E步:确定Q函数 3. EM算法的E步 4. 停止条件 上 ...
- k均值聚类算法优缺点_Grasshopper实现K均值聚类算法
本文很长很长,有很多很多图,包含以下部分: 1.算法简介 2.如何分类平面点 3.如何分类空间点 4.如何分类多维数据 5.后记 提醒:以下内容包括:智障操作,无中生友,重复造轮子 等 1.算法简介 ...
最新文章
- 跨平台表空间传输(摘自eygle《循序渐进Oracle》)
- 深究AngularJS——排序
- mysql loop循环实例_MySql CURSOR+LOOP循环-使用小实例
- 田渊栋:业余做研究的经验
- sql max同一行_SQL 打印矩阵(三)
- HashMap工作原理和扩容机制
- 职言 | 单纯做业务测试真的行得通吗?
- 拓嘉辰丰电商:拼多多推广主要有哪些模式
- python金融大数据分析师工资待遇_三年工作经验大佬带你解读 Python金融大数据分析...
- 【翻译论文】An Architecture Combining Convolutional Neural Network (CNN) and Support Vector Machine (SVM)
- 写论文一定要会-------中英文参考文献的导出方法
- IP67 | IP58 防护等级理解
- 电路板PCB夹具设计与测试看法
- 最适合小白的编程语言是什么?网友直呼:那当然是Python!
- 图像检索:OPQ索引与HNSW索引
- android studio用mysql_Android Studio使用JDBC远程连接mysql的注意事项(附示例)
- Java——判断回文
- (转)归纳:数据库设计的六个阶段详解(有这一篇就够了)
- java se 14 虚拟机规范
- 【SD2.0大会】刘振飞:微软Office研发成功三大法宝
热门文章
- 程序员的 “三六九等”
- 网御星云防火墙CPU使用率100%的解决方案
- CSS3简单实现,数字滚动效果
- 响应时代号召 中烜速充走进光伏发电新时代
- python关于messagebox题目_Python messagebox.askokcancel方法代码示例
- docker 连接宿主机的 MySQL
- 【机器学习】李宏毅——生成式对抗网络GAN
- 详解TCP连接的建立
- redis键值出现 \xac\xed\x00\x05t\x00的解决方法!!
- 五、Leetcode算法 最长公共前缀