自己組織化マップ(SOM)今井こんにちは、今井です。データが与えられた時、分析を行う前にまずデータ同士の関係を視覚的に見たいことがあります。特徴量が4つ以上のデータに対してそのまま可視化することはできないため、なるべく元のデータの関係を保ったまま2,3次元で表現できると嬉しいです。特徴量数の多い高次元データの分析は次元の呪いと呼ばれる現象が起こり得るので、これを回避するために高次元データをより少ない次元(一般的に2,3次元とは限りません)にする次元削除や次元圧縮と呼ばれる方法があります。この方法を用いて2,3次元に次元削除を行えば、高次元データを可視化することができます。rollと呼ばれる3次元データから2次元に色々な方法で写してみましょう。rollは日本語では「ロールケーキ」という意味で、下図のとおりロールケーキのような形をしているものです。rollの次元削除をして、2次元平面上でキレイなグラデーションの点の集まりができるかを見て行きましょう。このデータの生成及び可視化のRのコードは以下のとおりです。Rでプロットしたオブジェクトはマウスを用いて図を回転させることができます。col=color)古典的な高次元データの可視化の手法として次の3つがよく知られています:主成分分析(PCA)多次元尺度構成法(MDS)自己組織化マップ(SOM)■主成分分析(PCA)主成分分析による2次元への次元削除は、データを線形的に平面に写した時にデータの分散が最も大きくなるような平面を用いることになります。Rで実行した結果が下図になります。色が混ざってしまっており、うまくいっていません。(MDS)多次元尺度構成法はデータ同士の近さを元に、近いもの同士は近くに配置し、遠いものは遠くに配置する手法です。ここではデータ同士の近さをユークリッド距離で測ることにします。Rで実行した結果が下図になります。こちらも色が混ざってしまっており、うまくいっていません。col=color)■自己組織化マップ(SOM)自己組織化マップは2層のニューラルネットワークを用いて2次元への写すものです。ここでは可視化の際に、点が重ならないように乱数を用いて点を散らばらせるjitterと呼ばれる処理を行っています。Rで実行した結果が下図になります。こちらも色が混ざってしまっており、うまくいっていません。col=color)古典的な3つの手法では全てうまくいきませんでした。この3つの手法の改良を行った方法が提案されているので、それらの手法による可視化を見ていきましょう。うまくいかなかったのはデータが非線形だったからです。カーネル法と呼ばれる、データを再生核ヒルベルト空間という高次元な空間に写すことで、非線形データも線形的に扱うことが可能になります。このカーネル法と主成分分析を組み合わせたカーネル主成分分析という方法があります。Rで実行した結果が下図になります。一部色が混じってはいるものの、ある程度色が分かれていることが分かります。ハイパーパラメータを調整すればもっとキレイに分かれると思います。データ同士の近さを測る方法として、ユークリッド空間を一般化させた多様体を用いるやり方があります。この手法は多様体学習と呼ばれています。Rで実行した結果が下図になります。非常にうまくいっていることが分かります。Embeddingというものがあります。Rで実行した結果が下図になります。これもうまくいっていることが分かります。mapというものがあります。Rで実行した結果が下図になります。これもうまくいっていることが分かります。mapという手法を紹介します。これは潜在変数を用いた生成モデルで、EMアルゴリズムを用いて尤度の最大化を行います。Rでこの手法を用いるには”gtm”パッケージがあるのですが、現在はcranから削除されているのでここではRのコードは書かないことにします。cranのアーカイブにあるgtmパッケージのコードを元に実行した結果が下図になります。この方法ではあまりうまくいっていないことが分かります。以上、次元削除による可視化の方法を古典的な手法から比較的新しい手法まで紹介をしました。今回は次元削除を図で理解するために元のデータを3次元データで見えるものを対象にしておりましたが、これらの手法は4次元以上のデータでも用いることができます。これらの手法を用いて高次元データの可視化をしてみると新たな発見があるかもしれません。最後になりますが、ALBERTでは、データサイエンティストを積極募集しています。採用ページをご覧ください。