当前位置: 首页 > ds >正文

AAAI-2016《Approximate K-Means++ in Sublinear Time》

推荐深蓝学院的《深度神经网络加速:cuDNN 与 TensorRT》,课程面向就业,细致讲解CUDA运算的理论支撑与实践,学完可以系统化掌握CUDA基础编程知识以及TensorRT实战,并且能够利用GPU开发高性能、高并发的软件系统,感兴趣可以直接看看链接:深蓝学院《深度神经网络加速:cuDNN 与 TensorRT》
在这里插入图片描述


核心思想

论文的核心思想是针对传统 k k k-means++算法在大规模数据集上的初始化效率瓶颈,提出了一种基于马尔可夫链蒙特卡洛(MCMC)采样的快速初始化算法,称为K-MC²。传统 k k k-means++通过 D 2 D^2 D2采样选择初始中心以提高聚类质量,但需要 k k k次全数据集扫描,时间复杂度为 Θ ( n k d ) \Theta(nkd) Θ(nkd),对大规模数据(如百万或亿级点)计算成本过高。K-MC²通过用MCMC方法近似 D 2 D^2 D2采样,显著降低计算复杂度至亚线性( O ( k 3 d log ⁡ 2 n log ⁡ k ) \mathcal{O}(k^3 d \log^2 n \log k) O(k3dlog2nlogk)),且在非病态数据集(满足温和分布假设)下保留 k k k-means++的 O ( log ⁡ k ) \mathcal{O}(\log k) O(logk)近似保证。该算法特别适用于需要快速初始化的场景(如在线聚类、mini-batch k k k-means或coreset构造),并通过理论分析和实验验证其高效性和实用性。


目标函数

k k k-means聚类的目标是通过最小化量化误差(即平方误差和,Sum of Squared Error, SSE)将数据集 X = { x 1 , x 2 , … , x n } \mathcal{X} = \{x_1, x_2, \ldots, x_n\} X={x1,x2,,xn} x i ∈ R d x_i \in \mathbb{R}^d xiRd)划分为 k k k个簇。给定中心集合 C = { c 1 , c 2 , … , c k } C = \{c_1, c_2, \ldots, c_k\} C={c1,c2,,ck},量化误差定义为:

ϕ C ( X ) = ∑ x ∈ X d ( x , C ) 2 = ∑ x ∈ X min ⁡ c ∈ C ∥ x − c ∥ 2 2 \phi_C(\mathcal{X}) = \sum_{x \in \mathcal{X}} \mathrm{d}(x, C)^2 = \sum_{x \in \mathcal{X}} \min_{c \in C} \|x - c\|_2^2 ϕC(X)=xXd(x,C)2=xXcCminxc22

其中, d ( x , C ) = min ⁡ c ∈ C ∥ x − c ∥ 2 \mathrm{d}(x, C) = \min_{c \in C} \|x - c\|_2 d(x,C)=mincCxc2表示点 x x x到最近中心的欧几里得距离。令 ϕ O P T k ( X ) \phi_{OPT}^k(\mathcal{X}) ϕOPTk(X)表示最优 k k k中心解的量化误差,一个解 C C C被称为 α \alpha α近似解,若满足:

ϕ C ( X ) ≤ α ⋅ ϕ O P T k ( X ) \phi_C(\mathcal{X}) \leq \alpha \cdot \phi_{OPT}^k(\mathcal{X}) ϕC(X)αϕOPTk(X)

k k k-means++通过 D 2 D^2 D2采样初始化,期望上达到 O ( log ⁡ k ) \mathcal{O}(\log k) O(logk)近似,即:

E [ ϕ C k ( X ) ] ≤ 8 ( log ⁡ 2 k + 2 ) ϕ O P T k ( X ) \mathbb{E}[\phi_{C_k}(\mathcal{X})] \leq 8(\log_2 k + 2) \phi_{OPT}^k(\mathcal{X}) E[ϕCk(X)]8(log2k+2)ϕOPTk(X)

K-MC²的目标是近似 k k k-means++的初始化过程,保留相同的目标函数和 O ( log ⁡ k ) \mathcal{O}(\log k) O(logk)近似保证,同时降低初始化时间复杂度。


目标函数的优化过程

K-MC²算法通过MCMC近似 D 2 D^2 D2采样来优化初始中心选择,随后结合标准的 k k k-means迭代(Lloyd算法)最小化 ϕ C ( X ) \phi_C(\mathcal{X}) ϕC(X)。优化过程分为以下步骤:

  1. 初始中心选择(均匀采样)

    • 从数据集 X \mathcal{X} X中均匀随机选择第一个中心 c 1 c_1 c1,加入中心集合 C 1 = { c 1 } C_1 = \{c_1\} C1={c1}
    • 时间复杂度: O ( 1 ) \mathcal{O}(1) O(1)
  2. MCMC近似 D 2 D^2 D2采样(K-MC²初始化)

    • 对于剩余的 k − 1 k-1 k1个中心( i = 2 , … , k i=2, \ldots, k i=2,,k):
      • 初始化一个马尔可夫链,均匀随机选择起点 x x x,计算其到当前中心集 C i − 1 C_{i-1} Ci1的平方距离 d x = d ( x , C i − 1 ) 2 d_x = \mathrm{d}(x, C_{i-1})^2 dx=d(x,Ci1)2
      • 运行 m m m步Metropolis-Hastings算法:
        • 均匀随机选择候选点 y y y,计算 d y = d ( y , C i − 1 ) 2 d_y = \mathrm{d}(y, C_{i-1})^2 dy=d(y,Ci1)2
        • 计算接受概率:
          π = min ⁡ ( 1 , p ( y ) p ( x ) ) = min ⁡ ( 1 , d y d x ) \pi = \min\left(1, \frac{p(y)}{p(x)}\right) = \min\left(1, \frac{d_y}{d_x}\right) π=min(1,p(x)p(y))=min(1,dxdy)
        • 以概率 π \pi π接受 y y y(设置 x ← y x \leftarrow y xy d x ← d y d_x \leftarrow d_y dxdy),否则保留 x x x
      • 取马尔可夫链第 m m m步的状态 x m x_m xm作为新中心 c i c_i ci,更新 C i = C i − 1 ∪ { c i } C_i = C_{i-1} \cup \{c_i\} Ci=Ci1{ci}
    • 时间复杂度:每步计算距离需要 O ( k d ) \mathcal{O}(kd) O(kd) m m m步共 O ( m k d ) \mathcal{O}(mkd) O(mkd) k − 1 k-1 k1次迭代共 O ( m k 2 d ) \mathcal{O}(mk^2 d) O(mk2d)
    • 理论保证:马尔可夫链的平稳分布为 D 2 D^2 D2采样分布 p ( x ) = d ( x , C i − 1 ) 2 ∑ x ′ ∈ X d ( x ′ , C i − 1 ) 2 p(x) = \frac{\mathrm{d}(x, C_{i-1})^2}{\sum_{x' \in \mathcal{X}} \mathrm{d}(x', C_{i-1})^2} p(x)=xXd(x,Ci1)2d(x,Ci1)2,总变差距离随 m m m几何收敛:
      ∥ p ~ m − p ∥ T V = O ( ( 1 − 1 γ ) m ) , γ = max ⁡ x ∈ X p ( x ) \|\tilde{p}_m - p\|_{TV} = \mathcal{O}\left(\left(1 - \frac{1}{\gamma}\right)^m\right), \quad \gamma = \max_{x \in \mathcal{X}} p(x) p~mpTV=O((1γ1)m),γ=xXmaxp(x)
      选择 m = O ( γ ′ log ⁡ k ϵ ) m = \mathcal{O}(\gamma' \log \frac{k}{\epsilon}) m=O(γlogϵk),可使总变差距离 ∥ p ~ m − p ∥ T V ≤ ϵ k − 1 \|\tilde{p}_m - p\|_{TV} \leq \frac{\epsilon}{k-1} p~mpTVk1ϵ,其中 γ ′ = max ⁡ C ⊂ X , ∣ C ∣ ≤ k max ⁡ x ∈ X n d ( x , C ) 2 ∑ x ′ ∈ X d ( x ′ , C ) 2 \gamma' = \max_{C \subset \mathcal{X}, |C| \leq k} \max_{x \in \mathcal{X}} n \frac{\mathrm{d}(x, C)^2}{\sum_{x' \in \mathcal{X}} \mathrm{d}(x', C)^2} γ=maxCX,CkmaxxXnxXd(x,C)2d(x,C)2
  3. 数据集假设与亚线性复杂度

    • 假设数据集 X \mathcal{X} X从分布 F F F独立同分布采样,满足:
      • (A1) F F F具有有限方差和指数尾(如高斯、指数、拉普拉斯分布),则:
        α = max ⁡ x ∈ X d ( x , μ ( X ) ) 2 1 n ∑ x ′ ∈ X d ( x ′ , μ ( X ) ) 2 = O ( log ⁡ 2 n ) \alpha = \frac{\max_{x \in \mathcal{X}} \mathrm{d}(x, \mu(\mathcal{X}))^2}{\frac{1}{n} \sum_{x' \in \mathcal{X}} \mathrm{d}(x', \mu(\mathcal{X}))^2} = \mathcal{O}(\log^2 n) α=n1xXd(x,μ(X))2maxxXd(x,μ(X))2=O(log2n)
      • (A2) F F F为非退化分布(如超球面上的近似均匀分布),则:
        β = ϕ O P T 1 ( X ) ϕ O P T k ( X ) = O ( k ) \beta = \frac{\phi_{OPT}^1(\mathcal{X})}{\phi_{OPT}^k(\mathcal{X})} = \mathcal{O}(k) β=ϕOPTk(X)ϕOPT1(X)=O(k)
    • 因此, γ ′ ≤ 4 α β = O ( k log ⁡ 2 n ) \gamma' \leq 4\alpha\beta = \mathcal{O}(k \log^2 n) γ4αβ=O(klog2n),链长 m = O ( k log ⁡ 2 n log ⁡ k ) m = \mathcal{O}(k \log^2 n \log k) m=O(klog2nlogk),总复杂度为:
      O ( k 3 d log ⁡ 2 n log ⁡ k ) \mathcal{O}(k^3 d \log^2 n \log k) O(k3dlog2nlogk)
      这与 n n n亚线性相关。
  4. k k k-means迭代

    • 使用K-MC²选择的初始中心 C k C_k Ck,运行Lloyd算法:
      • 将每个点分配到最近中心,更新簇。
      • 计算每个簇的质心作为新中心。
      • 重复直到收敛或达到最大迭代次数。
    • 时间复杂度:每迭代 O ( n k d ) \mathcal{O}(nkd) O(nkd),通常迭代次数较少。
  5. 理论保证

    • K-MC²的量化误差满足:
      E [ ϕ K-MC 2 ] ≤ E [ ϕ k-means++ ] + 2 ϵ β ϕ O P T k ( X ) \mathbb{E}[\phi_{\text{K-MC}^2}] \leq \mathbb{E}[\phi_{\text{k-means++}}] + 2\epsilon \beta \phi_{OPT}^k(\mathcal{X}) E[ϕK-MC2]E[ϕk-means++]+2ϵβϕOPTk(X)
      设置 ϵ = O ( 1 / β ) \epsilon = \mathcal{O}(1/\beta) ϵ=O(1/β),则:
      E [ ϕ K-MC 2 ] ≤ O ( log ⁡ k ) ϕ O P T k ( X ) \mathbb{E}[\phi_{\text{K-MC}^2}] \leq \mathcal{O}(\log k) \phi_{OPT}^k(\mathcal{X}) E[ϕK-MC2]O(logk)ϕOPTk(X)
      保留 k k k-means++的 O ( log ⁡ k ) \mathcal{O}(\log k) O(logk)近似保证。

主要的贡献点

  1. 亚线性复杂度的初始化算法
    • 提出K-MC²算法,通过MCMC近似 D 2 D^2 D2采样,将初始化复杂度从 Θ ( n k d ) \Theta(nkd) Θ(nkd)降至 O ( k 3 d log ⁡ 2 n log ⁡ k ) \mathcal{O}(k^3 d \log^2 n \log k) O(k3dlog2nlogk),实现亚线性时间初始化。
  2. 理论保证
    • 证明K-MC²在总变差距离下收敛到 k k k-means++,并在非病态数据集(满足A1和A2假设)下保留 O ( log ⁡ k ) \mathcal{O}(\log k) O(logk)近似保证。
  3. 数据集分布假设
    • 分析 γ ′ \gamma' γ的上界,证明在常见分布(如高斯、指数、拉普拉斯)下, α = O ( log ⁡ 2 n ) \alpha = \mathcal{O}(\log^2 n) α=O(log2n) β = O ( k ) \beta = \mathcal{O}(k) β=O(k),确保算法高效性。
  4. 广泛的实验验证
    • 在六个真实大规模数据集(USGS、CSN、KDD、BIGX、WEB、SONG)上验证K-MC²的性能,显示其在量化误差和运行时间上的竞争力。
  5. 适用性扩展
    • K-MC²适用于在线聚类、mini-batch k k k-means和coreset构造等场景,提升了 k k k-means++在大规模数据处理中的实用性。

实验结果

实验在六个数据集上进行,数据集信息如表1所示:

数据集点数 ( n n n)维度 ( d d d) α \alpha α β \beta β ( k = 200 k=200 k=200)
CSN80,00017546.273.04
KDD145,751741267.651.81
USGS59,20932.6851.67
WEB45,811,88352.3357.09
BIGX1,162,000575.221.17
SONG515,34590525.671.23

实验设置

  • 对于USGS、CSN、KDD,设置 k = 200 k=200 k=200,在全数据集上训练,评估量化误差和距离计算次数。
  • 对于BIGX、WEB、SONG,设置 k = 2000 k=2000 k=2000,保留250,000点作为测试集,评估训练误差和泛化误差。
  • 比较方法:K-MC²(链长 m ∈ { 1 , 2 , 5 , 10 , 20 , 50 , 100 , 150 , 200 } m \in \{1, 2, 5, 10, 20, 50, 100, 150, 200\} m{1,2,5,10,20,50,100,150,200})、 k k k-means++、RANDOM、HEURISTIC(在子集上运行 k k k-means++,子集大小 s ∈ { 100 , 200 , … , 20 , 000 } s \in \{100, 200, \ldots, 20,000\} s{100,200,,20,000})、 k k k-means||( r = 5 r=5 r=5轮,过采样因子 l ∈ { 0.02 k , 0.05 k , … , 2 k } l \in \{0.02k, 0.05k, \ldots, 2k\} l{0.02k,0.05k,,2k})。
  • 所有方法重复运行多次,取平均量化误差,计算95%置信区间。

主要结果(表2):

  1. K-MC² vs k k k-means++
    • K-MC²随链长 m m m增加快速接近 k k k-means++的量化误差:
      • m = 20 m=20 m=20时,相对误差(相对于 k k k-means++)在USGS为2.63%,KDD为32.62%,SONG为0.75%。
      • m = 200 m=200 m=200时,相对误差降至USGS 0.33%,KDD 1.00%,SONG 0.02%,接近 k k k-means++。
    • 运行时间显著降低:
      • 在USGS上,K-MC² ( m = 200 m=200 m=200)比 k k k-means++快5倍。
      • 在WEB上( n = 45.8 M n=45.8M n=45.8M),K-MC²快275.1倍。
  2. K-MC² vs RANDOM
    • RANDOM的量化误差远高于 k k k-means++,如CSN上高334.50%,WEB上高105.54%。
    • K-MC²在所有数据集上显著优于RANDOM,即使 m m m较小。
  3. K-MC² vs HEURISTIC
    • HEURISTIC的性能随子集大小 s s s增加而改善,但总体不如K-MC²:
      • 在CSN上,HEURISTIC ( s = 20 , 000 s=20,000 s=20,000)相对误差为54.72%,而K-MC² ( m = 200 m=200 m=200)为6.53%。
      • 图1显示K-MC²的量化误差收敛更快,优于HEURISTIC。
  4. K-MC² vs k k k-means||
    • k k k-means||的性能随过采样因子 l l l增加而接近 k k k-means++,但仍逊于K-MC²:
      • 在BIGX上,K-MC² ( m = 200 m=200 m=200)相对误差0.03%,而 k k k-means|| ( l = 2 k l=2k l=2k)为0.33%。
      • 图2显示K-MC²在更少的距离计算下达到竞争性解。
  5. 泛化误差
    • 在BIGX、WEB、SONG上,K-MC²的测试集误差与训练集误差一致,表明其初始化具有良好的泛化能力。

总结

  • K-MC²在所有数据集上以较少的计算成本(亚线性复杂度)获得接近 k k k-means++的量化误差,尤其在超大规模数据集(如WEB)上效率优势显著。
  • 其性能优于RANDOM、HEURISTIC和 k k k-means||,验证了理论保证的实用性。

算法的实现过程

K-MC²算法的核心是通过MCMC近似 k k k-means++的 D 2 D^2 D2采样,以下是详细实现过程,结合伪代码和说明:

Algorithm K-MC²
输入: 数据集 𝒳 = {x_1, x_2, ..., x_n},中心数 k,链长 m
输出: 初始中心集合 C_k = {c_1, c_2, ..., c_k}1. 初始化:均匀随机选择 c_1 ∈ 𝒳C_1 ← {c_1}2. 循环选择 k-1 个中心:for i = 2 to k do// 初始化马尔可夫链均匀随机选择 x ∈ 𝒳计算 d_x ← d(x, C_{i-1})^2// 运行 m 步 Metropolis-Hastingsfor j = 2 to m do均匀随机选择候选点 y ∈ 𝒳计算 d_y ← d(y, C_{i-1})^2计算接受概率 π ← min(1, d_y / d_x)生成 u ← Unif(0, 1)if u < π thenx ← y, d_x ← d_yC_i ← C_{i-1} ∪ {x}end3. 返回 C_k

实现细节

  1. 均匀采样
    • 使用随机数生成器从 X \mathcal{X} X中均匀选择点,确保初始中心 c 1 c_1 c1和马尔可夫链起点 x x x的随机性。
  2. 距离计算
    • 计算点 x x x到中心集 C i − 1 C_{i-1} Ci1的距离 d ( x , C i − 1 ) = min ⁡ c ∈ C i − 1 ∥ x − c ∥ 2 \mathrm{d}(x, C_{i-1}) = \min_{c \in C_{i-1}} \|x - c\|_2 d(x,Ci1)=mincCi1xc2,平方后得 d x d_x dx
    • 每步仅需计算一个点到 C i − 1 C_{i-1} Ci1的距离,复杂度为 O ( k d ) \mathcal{O}(kd) O(kd),避免 k k k-means++中对所有点的全扫描。
  3. Metropolis-Hastings采样
    • 使用独立均匀提议分布,目标分布为 D 2 D^2 D2采样分布 p ( x ) p(x) p(x)
    • 接受概率 π = min ⁡ ( 1 , d y d x ) \pi = \min(1, \frac{d_y}{d_x}) π=min(1,dxdy)无需计算归一化常数 ∑ x ′ ∈ X d ( x ′ , C i − 1 ) 2 \sum_{x' \in \mathcal{X}} \mathrm{d}(x', C_{i-1})^2 xXd(x,Ci1)2,简化计算。
    • 每次迭代生成均匀随机数 u ∈ [ 0 , 1 ] u \in [0, 1] u[0,1],若 u < π u < \pi u<π,接受新点 y y y
  4. 链长选择
    • 链长 m m m根据 γ ′ \gamma' γ和期望总变差距离 ϵ \epsilon ϵ确定。在实践中,实验测试了 m ∈ { 1 , 2 , … , 200 } m \in \{1, 2, \ldots, 200\} m{1,2,,200},发现 m = 100 m=100 m=100 200 200 200已接近 k k k-means++性能。
    • 理论上, m = O ( k log ⁡ 2 n log ⁡ k ) m = \mathcal{O}(k \log^2 n \log k) m=O(klog2nlogk)保证亚线性复杂度。
  5. 复杂度分析
    • 每步MCMC计算 O ( k d ) \mathcal{O}(kd) O(kd) m m m步共 O ( m k d ) \mathcal{O}(mkd) O(mkd) k − 1 k-1 k1次迭代共 O ( m k 2 d ) \mathcal{O}(mk^2 d) O(mk2d)
    • 总复杂度为 O ( k 3 d log ⁡ 2 n log ⁡ k ) \mathcal{O}(k^3 d \log^2 n \log k) O(k3dlog2nlogk),不依赖 n n n,适合大规模数据集。
  6. 后续 k k k-means
    • K-MC²输出初始中心 C k C_k Ck后,可直接输入Lloyd算法,执行标准 k k k-means迭代。
    • 实验未直接评估Lloyd迭代,但理论保证K-MC²初始化的质量接近 k k k-means++,后续迭代收敛性相似。

技术考虑

  • 随机种子:实验中多次运行不同随机种子以平均量化误差,确保结果稳健。
  • 并行化:K-MC²的MCMC采样本质上是顺序的,但每轮的 k − 1 k-1 k1次采样可部分并行(如在多核CPU上并行运行不同链)。
  • 数据存储:对于大规模数据集(如WEB, n = 45.8 M n=45.8M n=45.8M),需高效存储和访问数据点,可能使用分布式文件系统或内存映射。
  • 数值稳定性:距离计算使用浮点运算,确保 d y / d x d_y / d_x dy/dx不会因数值溢出导致错误。

k k k-means++的对比

  • k k k-means++的 D 2 D^2 D2采样需要计算所有点的概率 p ( x ) p(x) p(x),每次迭代扫描全数据集,复杂度 Θ ( n k d ) \Theta(nkd) Θ(nkd)
  • K-MC²通过MCMC采样,仅需计算 m m m个点的距离,采样分布随 m m m增加接近 p ( x ) p(x) p(x),大幅降低计算量。

总结

K-MC²算法通过MCMC近似 D 2 D^2 D2采样,解决了 k k k-means++在大规模数据集上的初始化效率问题,在亚线性时间复杂度下保留了 O ( log ⁡ k ) \mathcal{O}(\log k) O(logk)近似保证。其理论分析基于温和的分布假设,实验结果在多个真实数据集上验证了其高效性和竞争力。算法实现简单,适合多种聚类场景,为大规模数据聚类提供了实用工具。

http://www.xdnf.cn/news/8531.html

相关文章:

  • python实战:Python脚本后台运行的方法
  • docker部署并测试翻译模型-CSANMT连续语义增强机器翻译
  • 《Android 应用开发基础教程》——第十五章:Android 动画机制详解(属性动画、帧动画、过渡动画)
  • 深入理解SummaryWriter类与TensorBoard的基本使用
  • SurfaceFlinger及Android应用RenderThread角度观察Jank丢帧卡顿
  • 【漫话机器学习系列】274.基尼指数(Gini Index)
  • 在Vue3 + Vite 项目安装使用 Tailwind CSS 4.0报错
  • 小白刷题之链表中的 “龟兔赛跑“:快慢指针算法详解
  • python打卡day34@浙大疏锦行
  • C++线程池的使用
  • 力扣 128.最长连续序列
  • 缓存和数据库一致性问题
  • 对于geoserver发布数据后的开发应用
  • MYSQL之复合查询
  • 基于51单片机和8X8点阵屏、独立按键的飞行躲闪类小游戏
  • wordpress上传图片时出现服务器无法处理图片
  • Vue3 + Element Plus表格筛选样式设置
  • ES6 哈希数据结构
  • 【maxcompute】阿里maxcompute Python开发个人经验汇总
  • 为何在VMware中清理CentOS虚拟机后,本地磁盘空间未减少的问题解决
  • 工业RTOS生态重构:从PLC到“端 - 边 - 云”协同调度
  • PCIe Gen3 phy(编解码,token相关)
  • 谢飞机的Java面试奇遇:AIO、BIO、NIO与Netty深度解析
  • openEuler 22.03安装zabbix7 LTS(容器化部署)
  • ajax中get和post的区别,datatype返回的数据类型有哪些?
  • STM32 SPI通信(硬件)
  • 2025 最新教程:注册并切换到美区 Apple ID
  • 3dczml时间动态图型场景
  • 怎么判断一个Android APP使用了taro 这个跨端框架
  • 自制操作系统day9内存管理(cache、位图、列表管理、内存的释放)(ai辅助整理)