x-means简介

转载自https://www.cnblogs.com/porco/p/xmeans_intro.html,后续有时间看完原论文后再更新,先占坑。

本文基于《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算法步骤

算法


用户输入 kmin k m i n , kmax k m a x ,数据集 D D
1、运行Kminmeans
2、在每个聚类上,运行2-means。
3、根据BIC score(只在该聚类上计算,即只计算本聚类数据只分成1类和两类时的BIC score)决定是否二分聚类。
4、如果 K<Kmax K < K m a x ,继续进行步骤2,否则返回结果。


样例
1、首先将DD分成3个聚类
2、再将每个子聚类分成2个聚类
3、计算BIC score决定是否二分
这里写图片描述

BIC score(Bayesian Information Criterion)
  • BIC(ϕ)=lϕ^(D)pϕ2logR B I C ( ϕ ) = l ϕ ^ ( D ) − p ϕ 2 ⋅ l o g R
    其中 ϕ ϕ 表示模型,lϕ^(D)为likelihood, pϕ p ϕ 为模型的复杂度(自由参数个数)
  • X-means的假设:identical spherical assumption
    数据由 X X 个高斯函数产生,每个高斯函数有一样的方差σ(每个维度上的变量不相关,协方差矩阵为diag(σ))、不同的 μi μ i
    数据生成时,根据概率 pi p i 选择一个高斯函数 gi g i ,然后生成一个点。
    所以似然函数为:
    lϕ(D)=Ri=1[logp(g(i))+logp(xi)] l ϕ ( D ) = ∑ i = 1 R [ l o g p ( g ( i ) ) + l o g p ( x i ) ]
    其中 p(g(i)) p ( g ( i ) ) 为生成点 xi x i 的高斯函数被选到的概率。
  • 计算BIC,需要计算最大化的 lϕ^(D) l ϕ ^ ( D ) ,所以需要对参数进行估计
    p(gk)=RkR p ( g k ) = R k R
    σ2=1MRKk=1xiDkxiμk2 σ 2 = 1 M R ∑ k = 1 K ∑ x i ∈ D k ∥ x i − μ k ∥ 2
    文中使用无偏估计,即 σ2=1M(RK)Kk=1xiDkxiμk2 σ 2 = 1 M ( R − K ) ∑ k = 1 K ∑ x i ∈ D k ∥ x i − μ k ∥ 2
  • pϕ p ϕ 自由参数个数
    K-1个高斯函数选择到的概率,MK 个每个高斯函数每个维度上的mean,1个方差
    所以 pϕ=(M+1)K p ϕ = ( M + 1 ) K
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值