elsur.jpn.org >

« 読了: Camerer, et al. (2018) 社会科学の有名な実験研究21本を追試してみたら、ああなんてこったい、結果は... | メイン | 読了:Hong & Page (2004) 平凡な人々のグループが賢い人々のグループよりも賢くなるメカニズム »

2018年10月17日 (水)

 たまたまみかけて、タイトルが気になってざっと目を通した論文。メモを読み返すと、途中で急速に興味を失っている様子がわかり、なんだかおかしい。

Markos, A., Iodice D'Enza, A., van de Velden, M. (2018) Beyond Tandem Analysis: Joint Dimension Reduction and Clustering in R. Journal of Statistical Software.

 ResearchGate(研究者向けSNS)に2018年のJSS誌の論文として公開されているんだけど、JSSのサイトには見当たらない。これから載るってことかしらん。
 知らなかったんだけど、Rにclustrdパッケージというのがあるそうな。その開発者による解説である。

 いわく、
 クラスタ分析するとき変数の数が多いと類似性の算出が難しくなる[次元の呪いのことであろう]。そこでいったん次元縮約してからクラスタ分析することが多い。一般的な方法は別々にやることである(タンデム・アプローチ)。
 次元縮約には主成分分析(PCA)とか対応分析(CA)とか多重対応分析(MCA)とかが使われる。Rのパッケージで言うとstatsのprcomp()やprincomp()とか、ade4, ca, CAvariants, FactoMineR, homalsとかである。
 FactoClassパッケージというのもある。まずPCAかCA/MCAで次元縮約し、次にユークリッド距離のWard法で階層クラスタリングしてクラスタ中心をつくり、それを初期値にしてk-meansする、というのを一気にやってくれる[←まじか...そんな風に手続き化しちゃっていいのかしらん...]。こういうのをLevart et al.(2000, 仏語の書籍)はconsolidationアプローチと呼んでいる。
 FactoMineRパッケージにも関数HCPC()があり、PCAないしCA/MCAの結果を階層クラスタリングしてくれる。
 なお、クラスタの評価にはfactoextraパッケージが便利だよ。

 さて。こういうタンデムアプローチは、前半戦と後半戦で違う基準の最適化をしているという問題点がある。そこで次元縮約とクラスタリングを同時にやる手法が提案されている。本論文ではいくつかの手法を紹介する。
 いずれの手法もあまり知られていない。たぶんソフトがなかったからだろう。clusterdパッケージというのを作ったので使うがいい。
 なお、手法の良し悪しについてはここでは扱わない[←えええええ]。量的データについてはTimmerman et al.(2010 Comp.Stat.&DataAnal.), カテゴリデータについてはvan de Velden et al.(2017 Psychometrika)をみればいいんじゃないすか。

 量的データの手法。
 以下、データ行列(中心化・標準化済み)を$\mathbf{X}$(サイズ$n \times Q$)とする。縮約空間の次元数を$d$とする。列が直交している負荷行列を$\mathbf{B}$(サイズ$Q \times d$)とする(つまり$\mathbf{B}^T \mathbf{B} = \mathbf{I}_d$)。クラス所属を表す二値行列を$\mathbf{Z}_K$(サイズ$n \times K$)とする。クラスタ重心行列を$\mathbf{G}$(サイズ$K \times d$)とする。

 タンデムアプローチの代替案を2つご紹介しよう。

 その1、reduced K-means (RKM) (De Soete & Carroll, 1994 Chap.)。
 これは射影追跡と等価である。クラスタへの分類と次元縮約を同時に行い、縮約空間におけるクラスタ間分散を最大化する。目的関数は
 $min \phi_{RKM}(\mathbf{B}, \mathbf{Z}_K, \mathbf{G}) = || \mathbf{X} - \mathbf{Z}_K \mathbf{GB}^T ||^2$
 ただし$||\cdot||$はフロベニウスノルム。[←ああ、難しい言葉を使いおって...行列の全要素を縦に並べたベクトルのユークリッドノルム、ってことでいいのだろうか]
 [...中略...]

 その2、Factorial K-means (FKM) (Vichi &l Kiers, 2001 unpub.)
 これはK-meansとPCAを同時にやって、縮約空間におけるクラスタ内分散を最小化する。目的関数は
 $min \phi_{FKM}(\mathbf{B}, \mathbf{Z}_K, \mathbf{G}) = || \mathbf{XB} - \mathbf{Z}_K \mathbf{G}||^2$
 [...中略...]

 この二つはどちらも次の手続きで解ける。

  1. $\mathbf{Z}_K$の初期値を決める(対象をランダムに分類する)。
  2. $B = \mathbf{X}^T((1-\alpha)\mathbf{P}-(1-2\alpha)\mathbf{I}) \mathbf{X}$を得る。$\alpha=0.5$だとRKM, $0$だとFKM, $1$だとタンデムになる。
  3. $\mathbf{XB}$をk-means法で分類して$\mathbf{Z}_K$を更新する。
  4. 2に戻り、$\mathbf{Z}_k$が変わらなくなるまで繰り返す。

 というわけで、$\alpha=0.25$とか$0.75$なんていう設定でもいいわけだ。
 実験によると、RKMはデータがデータの下位空間と直交な方向に分散を持っているときがだめで、多くの変数がクラスタ構造を反映しているときにうまくいく。[←よくわからん。上述のTimmmerman et al.(2010)というのを読まんとあかんらしい]

 カテゴリカルデータの手法。
 変数の数を$q$, $j$番目の変数のカテゴリ数を$p_j$とする。データ行列を$\mathbf{X}$のかわりに二値行列$\mathbf{Z} = [\mathbf{Z}_1, \ldots, \mathbf{Z}_q]$(サイズ$n \times Q$)とする。ただし$Q=\sum_j^q p_j$。[ダミー行列にするわけね。メンバーシップ行列$\mathbf{Z}_K$と記号が似ているけど意味が違うので注意]
 $j$番目の変数について、カテゴリをなんらか数量化した行列を$\mathbf{B}_j$(サイズ$p_j \times d$)とする(どのように標準化するかは手法によって異なる)。縦に並べて$\mathbf{B} = [\mathbf{B}_1^T, \ldots, \mathbf{B}_q^T]^T$(サイズ$Q \times d$)とする。
 データ行列$\mathbf{Z}$の列が縮約空間でとる座標を$\mathbf{Y}$(サイズ$n \times d$)とする。
 $\mathbf{Z}_K, \mathbf{G}$はさっきと同じ。
 
 3つの手法をご紹介しよう。

 その1、クラスタ対応分析
 発想としては、クラスタxカテゴリのクロス表$\mathbf{F} = \mathbf{Z}_K^T \mathbf{Z}$の対応分析である。クラスタ間分散を最大化するように、行(クラスタ)と列(カテゴリ)に数量を振る。しかしクラスタのメンバシップがわからないので、次の手順を採る。

  1. $\mathbf{Z}_K$の初期値を決める(対象をランダムに分類する)。
  2. $\mathbf{Z}_K^T \mathbf{Z}$を対応分析して$\mathbf{B}$を得る。
  3. 個人の座標をむりくり求める。$\mathbf{Y}=(1/q)(\mathbf{I} - \mathbf{11}^T/n)\mathbf{ZB}$。
  4. $\mathbf{Y}$をk-means法で分類して$\mathbf{Z}_K$を更新する。
  5. 2に戻り、$\mathbf{Z}_k$が変わらなくなるまで繰り返す。

なお視覚化の際には...[略]

 その2、MCA K-means。(Hwang et al, 2006 Psychometrika)
 最適化関数は...[省略]。手順で言うと、

  1. まず$\mathbf{Z}_K$の初期値を決める(対象をランダムに分類する)で、MCAをやって$\mathbf{Y}$を得てしまう。
  2. カテゴリ数量$\mathbf{B}$とクラスタ重心$\mathbf{G}$を得る。[式は省略]
  3. $\mathbf{Y}$を更新する。[式省略]
  4. $\mathbf{Y}$をk-meansして$\mathbf{Z}$を更新。
  5. 2に戻り、$\mathbf{Z}_k$が変わらなくなるまで繰り返す。

ステップ3で$n \times n$行列の固有値分解をするというのが弱点で、改善提案もある。[...中略]

 その3、i-FCB
 これは非対称CAとK-meansを繰り返すという手法で...[興味が薄れてきたのでスキップ]

 以上を搭載したclustrdパッケージの使い方と使用例をご紹介しよう。[スキップ]
 今後はファジークラスタリングに拡張したいと思ってます。云々。

 ... いやー、正直なところ、知らん手法の連続攻撃でびっくり、であった。いろんな手法があるものねえ。
 タンデム・クラスタリングの代替案といえば、真っ先に挙がるのは潜在クラスモデルでしょ? なぜ一言も言及がないの?と不思議に思うわけだが、そういう主旨の文章ではないのでありましょう。

論文:データ解析(2018-) - 読了:Markos, et al.(2018) 次元縮約とクラスタリングを同時にやりたいあなたのためのclustrdパッケージ

rebuilt: 2020年11月16日 22:53
validate this page