[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_i\in D_k}{\left\|x_i-\mu_k\right\|}^2\)
    文中使用無偏估計,即\(\sigma^2=\frac{1}{M(R-K)}\sum_{k=1}^{K}\sum_{x_i\in D_k}{\left\|x_i-\mu_k\right\|}^2\)
  • \(p_{\phi}\)自由參數個數
    K-1個高斯函數選擇到的概率,MK 個每個高斯函數每個維度上的mean,1個方差
    所以\(p_{\phi}=(M+1)K\)

KD-tree加速K-means


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM