非階層的方法と分析の評価
(Press ?
for help, n
and p
for next and previous slide)
村田 昇
クラスタ分析 (cluster analysis) の目的
個体の間に隠れている 集まり=クラスタ を個体間の“距離”にもとづいて発見する方法
Figure 1: 凝集的手続きの例
観測データ : \(n\) 個の個体の組
\begin{equation} \{\boldsymbol{x}_{i}\}_{i=1}^{n} = \{(x_{i1},x_{i2},\dotsc,x_{id})^{\mathsf{T}}\}_{i=1}^{n} \end{equation}
個体とクラスタの対応 \(C\) を推定
\begin{equation} C(i) =\text{(個体 \(i\) が属するクラスタ番号)} \end{equation}
2つの個体 \(i,i'\) の 近さ=損失 を距離の二乗で評価
\begin{equation} \|\boldsymbol{x}_i-\boldsymbol{x}_{i'}\|^2 = \sum_{j=1}^{d}(x_{ij}-x_{i'j})^2 \end{equation}
損失関数 \(W(C)\) : クラスタ内の平均の近さを評価
\begin{equation} W(C) = \sum_{l=1}^k\frac{1}{n_l}\sum_{i:C(i)=l}\sum_{i':C(i')=l}\|\boldsymbol{x}_i-\boldsymbol{x}_{i'}\|^2 \end{equation}
クラスタ \(l\) に属する個体の平均
\begin{equation} \bar{\boldsymbol{x}}_l = \frac{1}{n_l}\sum_{i:C(i)=l}\boldsymbol{x}_i, \quad\text{(\(n_l\) はクラスタ \(l\) に属する個体数)} \end{equation}
損失関数 \(W(C)\) の等価な表現
\begin{equation} W(C) = 2\sum_{l=1}^k\sum_{i:C(i)=l}\|\boldsymbol{x}_i-\bar{\boldsymbol{x}}_{l}\|^2 \end{equation}
損失関数 \(W(C)\) の等価な表現を示しなさい
\begin{align} W(C) &= \sum_{l=1}^k\frac{1}{n_l}\sum_{i:C(i)=l}\sum_{i':C(i')=l}\|\boldsymbol{x}_i-\boldsymbol{x}_{i'}\|^2\\ &= 2\sum_{l=1}^k\sum_{i:C(i)=l}\|\boldsymbol{x}_i-\bar{\boldsymbol{x}}_{l}\|^2 \end{align}
以下の\(\hat{\boldsymbol{\mu}}\)を求めなさい
\begin{equation} \hat{\boldsymbol{\mu}} =\arg\min_{\mu} \sum_{i:C(i)=l}\|\boldsymbol{x}_i-\boldsymbol{\mu}\|^2 \end{equation}
対称性に注意して標本平均のまわりで展開
\begin{align} &\sum_{l=1}^k\frac{1}{n_l}\sum_{i:C(i)=l}\sum_{i':C(i')=l} \|\boldsymbol{x}_i-\boldsymbol{x}_{i'}\|^2\\ &= \sum_{l=1}^k\frac{1}{n_l}\sum_{i:C(i)=l}\sum_{i':C(i')=l} \|\boldsymbol{x}_i-\bar{\boldsymbol{x}}_{l}+\bar{\boldsymbol{x}}_{l}-\boldsymbol{x}_{i'}\|^2\\ &= \sum_{l=1}^k\frac{2}{n_l}\sum_{i:C(i)=l}\sum_{i':C(i')=l} \|\boldsymbol{x}_i-\bar{\boldsymbol{x}}_{l}\|^2\\ &\quad- \sum_{l=1}^k\frac{2}{n_l}\sum_{i:C(i)=l}\sum_{i':C(i')=l} (\boldsymbol{x}_i-\bar{\boldsymbol{x}}_{l})^{\mathsf{T}} (\boldsymbol{x}_{i'}-\bar{\boldsymbol{x}}_{l}) \end{align}
中心化したデータの標本平均が0であることを利用
\begin{align} &= 2\sum_{l=1}^k\sum_{i:C(i)=l} \|\boldsymbol{x}_i-\bar{\boldsymbol{x}}_{l}\|^2\\ &\quad- \sum_{l=1}^k\frac{2}{n_l} \sum_{i:C(i)=l}(\boldsymbol{x}_i-\bar{\boldsymbol{x}}_{l})^{\mathsf{T}} \sum_{i':C(i')=l}(\boldsymbol{x}_{i'}-\bar{\boldsymbol{x}}_{l})\\ &= 2\sum_{l=1}^k\sum_{i:C(i)=l} \|\boldsymbol{x}_i-\bar{\boldsymbol{x}}_{l}\|^2 \end{align}
以下の不等式が成立
\begin{align} \sum_{i:C(i)=l}\|\boldsymbol{x}_{i}-\boldsymbol{\mu}\|^{2} &= \sum_{i:C(i)=l} \|\boldsymbol{x}_{i}-\bar{\boldsymbol{x}}_{l} + \bar{\boldsymbol{x}}_{l}-\boldsymbol{\mu}\|^{2}\\ &= \sum_{i:C(i)=l} \|\boldsymbol{x}_{i}-\bar{\boldsymbol{x}}_{l}\|^{2} + \sum_{i:C(i)=l} \|\bar{\boldsymbol{x}}_{l}-\boldsymbol{\mu}\|^{2}\\ &\quad+ 2\sum_{i:C(i)=l} (\boldsymbol{x}_{i}-\bar{\boldsymbol{x}}_{l})^{\mathsf{T}} (\bar{\boldsymbol{x}}_{l}-\boldsymbol{\mu})\\ &= \sum_{i:C(i)=l} \|\boldsymbol{x}_{i}-\bar{\boldsymbol{x}}_{l}\|^{2} + n_{l}\|\bar{\boldsymbol{x}}_{l}-\boldsymbol{\mu}\|^{2}\\ &\ge \sum_{i:C(i)=l} \|\boldsymbol{x}_{i}-\bar{\boldsymbol{x}}_{l}\|^{2} \end{align}
等号の成立の条件より
\begin{equation} \hat{\boldsymbol{\mu}} =\arg\min_{\mu} \sum_{i:C(i)=l}\|\boldsymbol{x}_i-\boldsymbol{\mu}\|^2 =\bar{\boldsymbol{x}}_{l} \end{equation}クラスタの標本平均を中心とすればよい
基本的な考え方 : Lloyd-Forgyのアルゴリズム
標本平均と変動の平方和の性質を利用
\begin{equation} \bar{\boldsymbol{x}}_l =\arg\min_{\mu} \sum_{i:C(i)=l}\|\boldsymbol{x}_i-\boldsymbol{\mu}\|^2 \quad \text{(クラスタ\(l\)の標本平均)} \end{equation}
各データの所属クラスタ番号 \(C(i)\) を求める
\begin{equation} C(i) = \arg\min_l\|\boldsymbol{x}_i-\boldsymbol{\mu}_l\| \end{equation}
各クラスタ中心 \(\boldsymbol{\mu}_l\;(l=1,2,\dotsc,k)\) を更新する
\begin{equation} \boldsymbol{\mu}_l = \frac{1}{n_l}\sum_{i:C(i)=l}\boldsymbol{x}_i, \quad n_l=|\{\boldsymbol{x}_i|C(i)=l\}| \end{equation}
平均の代わりにメドイド (medoid; 中心にある観測値) を用いる方法もある
\begin{equation} \boldsymbol{x}^{\mathrm{medoid}}_{l} =\arg\min_{\boldsymbol{x}_{i}} \sum_{i':C(i')=l} \|\boldsymbol{x}_{i}-\boldsymbol{x}_{i'}\|^2 \end{equation}
Figure 2: 非階層的クラスタリング
Figure 3: Lloyd-Forgyのアルゴリズム (その1)
Figure 4: Lloyd-Forgyのアルゴリズム (その2)
Figure 5: Lloyd-Forgyのアルゴリズム (その3)
Figure 6: Lloyd-Forgyのアルゴリズム (その4)
Figure 7: Lloyd-Forgyのアルゴリズム (その5)
Figure 8: Lloyd-Forgyのアルゴリズム (その6)
Figure 9: クラスタリングの結果
データの属性
Forest : 森林面積割合 (%) 2014年 Agri : 就業者1人当たり農業産出額(販売農家)(万円) 2014年 Ratio : 全国総人口に占める人口割合 (%) 2015年 Land : 土地生産性(耕地面積1ヘクタール当たり)(万円) 2014年 Goods : 商業年間商品販売額[卸売業+小売業](事業所当たり)(百万円) 2013年
ユークリッド距離 + k-平均法
=== cluster 1 === [1] "岩手県" "宮城県" "秋田県" "山形県" "福島県" "新潟県" [7] "富山県" "石川県" "福井県" "三重県" "滋賀県" "兵庫県" [13] "島根県" "岡山県" "広島県" "山口県" === cluster 2 === [1] "東京都" === cluster 3 === [1] "宮崎県" "鹿児島県" === cluster 4 === [1] "北海道" === cluster 5 === [1] "青森県" "茨城県" "栃木県" "群馬県" "静岡県" "香川県" [7] "佐賀県" "長崎県" "熊本県" "沖縄県" === cluster 6 === [1] "山梨県" "長野県" "岐阜県" "京都府" "奈良県" [6] "和歌山県" "鳥取県" "徳島県" "愛媛県" "高知県" [11] "大分県" === cluster 7 === [1] "埼玉県" "千葉県" "神奈川県" "愛知県" "大阪府" [6] "福岡県"
Figure 10: ユークリッド距離 + k-平均法
ユークリッド距離 + k-メドイド法
=== cluster 1 === [1] "北海道" === cluster 2 === [1] "青森県" "栃木県" "群馬県" "静岡県" "佐賀県" [6] "長崎県" "熊本県" "宮崎県" "鹿児島県" "沖縄県" === cluster 3 === [1] "岩手県" "宮城県" "山形県" "新潟県" "長野県" "岐阜県" [7] "三重県" "京都府" "兵庫県" "鳥取県" "岡山県" "広島県" [13] "香川県" "愛媛県" "大分県" === cluster 4 === [1] "秋田県" "福島県" "富山県" "石川県" "福井県" "滋賀県" [7] "奈良県" "島根県" "山口県" === cluster 5 === [1] "茨城県" "埼玉県" "千葉県" "神奈川県" "愛知県" [6] "大阪府" "福岡県" === cluster 6 === [1] "東京都" === cluster 7 === [1] "山梨県" "和歌山県" "徳島県" "高知県"
Figure 11: ユークリッド距離 + k-メドイド法
データの属性
Q2. おむすびの具では何が一番好きですか? A.梅 B.鮭 C.昆布 D.かつお E.明太子 F.たらこ G.ツナ H.その他 【回答者数】 男性 9,702人 32.0% 女性 20,616人 68.0% 総数 30,318人 100.0%
Hellinger距離を利用
\(\boldsymbol{p},\boldsymbol{q}\) を確率ベクトルとして 定義される確率分布の距離
\begin{equation} d_{\mathrm{hel}}(\boldsymbol{p},\boldsymbol{q}) = \frac{1}{\sqrt{2}}d_{\mathrm{euc}}(\sqrt{\boldsymbol{p}},\sqrt{\boldsymbol{q}}) \end{equation}
Hellinger距離 + k-メドイド法
=== cluster 1 === [1] "北海道" "青森県" "秋田県" === cluster 2 === [1] "岩手県" "山形県" "新潟県" "沖縄県" === cluster 3 === [1] "宮城県" "茨城県" "栃木県" "群馬県" "埼玉県" [6] "千葉県" "東京都" "神奈川県" "山梨県" "長野県" [11] "宮崎県" === cluster 4 === [1] "福島県" "岐阜県" "愛知県" "鳥取県" "岡山県" "香川県" [7] "佐賀県" === cluster 5 === [1] "富山県" "静岡県" "三重県" "滋賀県" "京都府" [6] "大阪府" "兵庫県" "奈良県" "和歌山県" "島根県" [11] "愛媛県" "高知県" "福岡県" "長崎県" "熊本県" [16] "大分県" "鹿児島県" === cluster 6 === [1] "石川県" "福井県" "広島県" "山口県" "徳島県"
Figure 12: Hellinger距離 + k-メドイド法
データ \(\boldsymbol{x}_i\) と最初に統合されたクラスタ \(C\) の距離
\begin{equation} d_i = D({\boldsymbol{x}_i},C) \end{equation}
最後に統合された2つのクラスタ \(C',C''\) の距離
\begin{equation} D = D(C',C'') \end{equation}
凝集係数 (agglomerative coefficient)
\begin{equation} AC = \frac{1}{n}\sum_{i=1}^{n}\left(1-\frac{d_i}{D}\right) \end{equation}
定義より
\begin{equation} 0\le AC\le 1 \end{equation}
\(\boldsymbol{x}_i\) を含むクラスタ \(C^1\) と \(\boldsymbol{x}_i\) の距離
\begin{equation} d^1_i=D({\boldsymbol{x}_i},C^1\setminus{\boldsymbol{x}_i}) \end{equation}
一番近いクラスタ \(C^2\) と \(\boldsymbol{x}_i\) の距離
\begin{equation} d^2_i=D({\boldsymbol{x}_i},C^2) \end{equation}
シルエット係数 (silhouette coefficient)
\begin{equation} S_i = \frac{d^2_i-d^1_i}{\max(d^1_i,d^2_i)} \end{equation}
定義より
\begin{equation} -1\le S_i\le 1 \end{equation}
群平均法において凝集係数が以下を満たすことを示しなさい
\begin{equation} 0\le AC\le 1 \end{equation}
シルエット係数が以下を満たすことを示しなさい
\begin{equation} -1\le S_i\le 1 \end{equation}
2つのクラスタ\(C_{a},C_{b}\)が最も近いとする
\begin{equation} D(C_{c},C_{d})\ge D(C_{a},C_{b}), \quad\forall c,d \end{equation}
統合して計算される距離では下が成立
\begin{align} D(C_{a}+C_{b}, C_{c}) &= \frac{|C_{a}|D(C_{a},C_{c})+|C_{b}|D(C_{b},C_{c})}{|C_{a}|+|C_{b}|}\\ &\ge \frac{|C_{a}|D(C_{a},C_{b})+|C_{b}|D(C_{a},C_{b})}{|C_{a}|+|C_{b}|}\\ &=D(C_{a},C_{b}) \end{align}統合した結果,それより短い距離が現れることはない
以上より
\begin{equation} 0\le d_{i}\le D \end{equation}\begin{equation} 0\le 1-\frac{d_i}{D}\le 1 \end{equation}よって
\begin{equation} 0\le AC\le 1 \end{equation}
非負値の大小関係に注意する
\begin{equation} -\max(d^{1}_{i},d^{2}_{i})\le d^{2}_{i}-d^{1}_{i}\le\max(d^{1}_{i},d^{2}_{i}) \end{equation}より
\begin{equation} -1\le S_i\le 1 \end{equation}
Figure 13: 凝集係数 (ユークリッド距離)
Figure 14: デンドログラム (ユークリッド距離)
Figure 15: 凝集係数 (マンハッタン距離)
Figure 16: デンドログラム (マンハッタン距離)
北海道,東京,宮崎,鹿児島を除いて再計算する
凝集係数 (ユークリッド距離) [1] 0.807 凝集係数 (マンハッタン距離) [1] 0.782
クラスタ数を4-10として比較
シルエット係数 0.172 (k = 4) 0.152 (k = 5) 0.176 (k = 6) 0.2 (k = 7) 0.204 (k = 8) 0.206 (k = 9) 0.195 (k = 10)
Figure 17: シルエット係数の分布 (k=7)
Figure 18: シルエット係数の分布 (k=8)
Figure 19: シルエット係数の分布 (k=9)
Figure 20: 非階層的クラスタリング (k=8)