• [x-means] 1.x-means简介


    本文基于《X-means》和《BIC-notes》(原论文中BIC公式有误,这是对BIC的补充)

    K-means的缺点
    • 每一轮迭代的计算花费大
    • 需要用户指定K
    • 易于收敛到局部最优解
    X-means的改进
    • 使用kd-tree加速原K-means的每一轮迭代
    • 用户指定K所属的范围,根据BIC score选到最优K
    • 每一轮迭代只进行2-means(2-means对局部最优解不敏感

    X-means算法步骤

    • 用户输入 (k\_{min},k\_{max}),数据集 (D)
    1. 运行(K_{min})-means
    2. 在每个聚类上,运行2-means
      根据BIC score(只在该聚类上计算,即只计算本聚类数据只分成1类和两类时的BIC score)决定是否二分聚类
    3. 如果(K<K_{max}),继续进行步骤2,否则返回结果
    • 样例
    1. 首先将(D)分成3个聚类
    2. 再将每个子聚类分成2个聚类
      计算BIC score决定是否二分
      样例

    BIC score(Bayesian Information Criterion)

    • (BIC(phi)=hat{l_{phi}}(D)-frac{p_{phi}}{2}cdot log R)
      其中(phi)表示模型,(hat{l_{phi}}(D))为likelihood,(p_{phi})为模型的复杂度(自由参数个数)
    • X-means的假设:identical spherical assumption
      数据由X个高斯函数残生,每个高斯函数有一样的方差(sigma)(每个维度上的变量不相关,协方差矩阵为(diag(sigma)))、不同的(mu_i)
      数据生成时,根据概率(p_i)选择一个高斯函数(g_i),然后生成一个点
      所以似然函数为:
      (l_{phi}(D) = sum_{i=1}^R [log p(g_{(i)})+log p(x_i)])
      其中(p(g_{(i)}))为生成点(x_i)的高斯函数被选到的概率
    • 计算BIC,需要计算最大化的(hat{l_{phi}}(D)),所以需要对参数进行估计
      (p(g_k)=frac{R_k}{R})
      (sigma^2=frac{1}{MR}sum_{k=1}^{K}sum_{x_iin D_k}{left|x_i-mu_k ight|}^2)
      文中使用无偏估计,即(sigma^2=frac{1}{M(R-K)}sum_{k=1}^{K}sum_{x_iin D_k}{left|x_i-mu_k ight|}^2)
    • (p_{phi})自由参数个数
      K-1个高斯函数选择到的概率,MK 个每个高斯函数每个维度上的mean,1个方差
      所以(p_{phi}=(M+1)K)

    KD-tree加速K-means

  • 相关阅读:
    opensuse的一些软件使用
    love2d新闻
    好用的在线工具收集
    POJ2531 Network Saboteur 枚举||随机化
    Acdream Path 动态规划
    Acdream Xor 简单数学
    POJ2676 Sudoku 搜索
    Acdream 1015 Double Kings 搜索
    Acdream Multiplication 基础题
    Acdream Cut 贪心
  • 原文地址:https://www.cnblogs.com/porco/p/xmeans_intro.html
Copyright © 2020-2023  润新知