核K-均值(Kernel K-means)是一种扩展版本的K-means算法,它使用核技巧(kernel trick)将数据映射到高维空间,在这个高维空间中执行聚类。

这种映射允许线性不可分的数据在高维空间中变得线性可分,从而提高聚类的效果。

Kernel K-means的核心在于它不需要显式地知道映射后的数据点,而是利用核函数来计算数据点在高维空间中的相似度。

Kernel K-means算法的基本步骤:
  1. 初始化:随机选择 k 个中心点作为初试聚类中心。
  2. 映射与聚类:使用核函数计算 每个数据点所有中心点 之间的相似度,将每个点分配给最相似的中心所代表的簇。
  3. 更新中心:在高维空间中,重新计算每个簇的中心。这通常涉及到在原始空间中寻找一个新的点,该点能够最大化簇内数据点的平均核函数值。
  4. 重复步骤2和3,直到聚类中心不再显著改变或者达到最大迭代次数。
涉及到的公式:
目标函数

在Kernel K-means中,我们希望最小化簇内数据点的平方距离之和,但在高维空间中。然而,我们直接操作的是核矩阵,而不是高维空间中的数据点本身。目标函数可以表示为:

核K-均值(Kernel K-means)_kmeans

这里:

  • 核K-均值(Kernel K-means)_人工智能_02 是一个指示矩阵,它表示数据点与聚类中心的分配关系
  • 核K-均值(Kernel K-means)_kmeans_03 是第 核K-均值(Kernel K-means)_kmeans_04簇包含的数据点集合。
  • 核K-均值(Kernel K-means)_机器学习_05 是数据点 核K-均值(Kernel K-means)_核函数_06 在高维空间中的映射。
  • 核K-均值(Kernel K-means)_人工智能_07 是第 核K-均值(Kernel K-means)_kmeans_04簇的中心点在高维空间中的映射。

但因为直接计算 核K-均值(Kernel K-means)_机器学习_09 可能非常复杂或不可能,我们用核函数:
核K-均值(Kernel K-means)_kmeans_10 来代替计算 核K-均值(Kernel K-means)_机器学习_09核K-均值(Kernel K-means)_机器学习_12内积

核函数

核函数计算两个数据点在高维空间中的相似度,定义为:

核K-均值(Kernel K-means)_人工智能_13

这里:

  • 核K-均值(Kernel K-means)_kmeans_14 是数据点 核K-均值(Kernel K-means)_核函数_06核K-均值(Kernel K-means)_人工智能_16核函数值。
  • 核K-均值(Kernel K-means)_核函数_17 表示内积运算。

内积计算

更新聚类中心

在Kernel K-means中,聚类中心的更新 涉及到计算每个簇的成员数据点在核空间中的 平均向量。这个平均向量可以使用核矩阵和簇分配来计算,但具体的公式可能依赖于使用的核函数类型和优化策略。

公式中的每个字符:
  • 核K-均值(Kernel K-means)_人工智能_02:指示矩阵,指示数据点分配到哪个簇。
  • 核K-均值(Kernel K-means)_人工智能_19:聚类的数量。
  • 核K-均值(Kernel K-means)_kmeans_04:簇的索引。
  • 核K-均值(Kernel K-means)_核函数_06:数据点 核K-均值(Kernel K-means)_聚类_22
  • 核K-均值(Kernel K-means)_kmeans_03:簇 核K-均值(Kernel K-means)_kmeans_04
  • 核K-均值(Kernel K-means)_机器学习_25:映射函数,将数据点从原始空间映射到高维空间。
  • 核K-均值(Kernel K-means)_人工智能_07:簇 核K-均值(Kernel K-means)_kmeans_04
  • 核K-均值(Kernel K-means)_kmeans_28:核函数,用于计算数据点在高维空间中的相似度。
  • 核K-均值(Kernel K-means)_核函数_17:内积运算符,用于计算两个向量的内积。
  • 核K-均值(Kernel K-means)_人工智能_16:数据点 核K-均值(Kernel K-means)_聚类_31,用于计算与 核K-均值(Kernel K-means)_核函数_06

Kernel K-means通过利用核技巧避免了显式地构造高维空间中的数据点,这极大地简化了计算过程并提高了算法处理复杂数据的能力。

具体例子

为了更好地理解Kernel K-means的工作原理,可以考虑一个具体的例子,其中数据点分布在非线性的结构中,使得在原始空间中使用传统的K-means算法难以有效地进行聚类。
我们将使用径向基函数(Radial Basis Function,RBF)核函数来进行Kernel K-means聚类。

数据集:

假设我们有一个二维数据集,数据点分布在两个非线性的环形区域,一个内部环和一个外部环。
如果我们尝试使用标准的K-means算法去聚类这些点,那么由于数据点分布的非线性特性,可能会得到不理想的聚类结果。

核函数:

我们将使用RBF核函数,它定义为:

核K-均值(Kernel K-means)_机器学习_33

这里:

  • 核K-均值(Kernel K-means)_机器学习_34核K-均值(Kernel K-means)_kmeans_35两个数据点。
  • 核K-均值(Kernel K-means)_人工智能_36 是两个数据点之间的欧氏距离的平方。
  • 核K-均值(Kernel K-means)_kmeans_37 是RBF核函数的参数控制着高斯核的宽度。
Kernel K-means步骤:
  1. 初始化:随机选择 k 个数据点作为初试聚类中心。
  2. 计算核矩阵:使用RBF核函数计算所有数据点对之间的核值,形成一个核矩阵 核K-均值(Kernel K-means)_kmeans_28
  3. 映射与聚类:使用核矩阵计算 每个数据点与所有中心点之间的相似度,将每个点分配给最相似的中心所代表的簇。这可以通过计算每个数据点到所有中心点的核距离来完成,然后选择最小的距离来确定分配。
  4. 更新中心:在高维空间中,重新计算每个簇的中心。这一步骤在Kernel K-means中比较特殊,通常不是通过直接计算高维空间中的中心点,而是通过在原始空间中选择一个能够最大化簇内数据点的平均核函数值的数据点作为新的中心点。
  5. 重复步骤3和4,直到聚类中心不再显著改变或者达到最大迭代次数。
具体实例:

假设我们有两个簇(核K-均值(Kernel K-means)_机器学习_39),并且我们选择了RBF核函数的参数 核K-均值(Kernel K-means)_kmeans_40

我们首先随机选择两个数据点作为初始中心,然后计算所有数据点之间的核值。

接下来,我们使用这些核值来决定每个数据点应该被分配到哪个簇

分配完成后,我们再次计算每个簇的中心点,这一次是在核空间中。

这个过程会反复进行,直到簇的中心稳定下来。

结果:

在经过几轮迭代后,Kernel K-means算法将能够正确地识别出两个环形的簇,即使在原始空间中数据点看起来是非线性分布的。

这是因为通过使用RBF核函数,数据点在高维空间中被有效地拉伸,使得原本非线性的簇在高维空间中变得线性可分。

这个例子展示了Kernel K-means如何利用核技巧来处理复杂数据分布的问题,尤其是在原始空间中数据点无法被简单的超平面分割的情况下。