教師なし学習

「次元削減」の意味と活用方法

様々な場面で大活躍するデータ分析手法、「次元削減(次元圧縮)」とは一体何でしょうか。
また、どのように使うのでしょうか。
本記事では、次元削減の基本的な内容について整理しました。

Pythonで次元削減を行う方法については、別の記事に整理しています。

Pythonによる4種の次元削減と可視化以下4つの次元削減アルゴリズムをPythonで実行し、それぞれで2次元のグラフを作成してみます。 PCA(Principa...

次元削減とは

次元削減とは、簡単に言うとデータを要約・縮約するデータ分析手法です。

主な用途は3つあります。
1つ目は「データ容量の節約」です。
AI開発にせよ、データ分析にせよ、あまりにもデータが巨大だと処理に時間がかかってしまいます。
そこで、「なるべく情報量を削らずに、データ量を減らす」ことで、精度への影響は小さく、処理速度を上げることが出来ます。
ただ、近年ではコンピュータの性能も上がってきたため、この用途で使われる機会は少なくなってきました。

2つ目は「特徴量の作成」です。
ここはAI開発やデータ分析のスペシャリストでなければあまり考える必要はないのですが、教師あり学習における「特徴量エンジニアリング」の一つの技として使います。
次元削減したデータを、データの新たな特徴量にしてしまうというアクロバティックな方法です。

そして、3つ目の用途は「データの可視化」です。
これが最も次元削減が有効活用されるところです。
データの細かい値などは置いといて、データの大まかな傾向・特徴を知りたいという事はよくあります。
そこで、全てのデータを「2つの変数」だけで表すことができれば、それをxとyに見立てて、全てのデータを座標平面状にプロットすることができます。
そうすると複雑なデータでも、パッと視覚的に分かりやすくできます。
(3次元にして、立体図で表したり、3次元目を「点の大きさ」としてバブルチャートで表現する事もあります。)

例えば、あるクラスのテストの成績で、科目が「算数」「国語」「英語」「理科」「社会」・・・とたくさんあるとします。
その合計点数ないしは科目ごとの点数についての良し悪しは分かりますが、「点数の取り方の傾向」についてはデータを眺めていても分かるものではありません。

そんな時、次元削減を用いてデータを2次元に落とし込み「図」にしてみます。
どんな軸が出来るかは次元削減してからのお楽しみではありますが、例えば以下のように「成績」と「理系/文系」の軸が出来上がったとします。
(この軸は、コンピュータが考える「データの傾向を説明するのに重要な指標」が選択されます。)

こうして見ると、「成績が同じくらいでも、理系が得意なグループと文系が得意なグループ」「点数の取り方の傾向が近い生徒の組み合わせ」などが視覚的に分かるようになります。
これを叶えてくれるのが次元削減です。

次元削減の手法

次元削減にも、方法は色々とあります。ここでは、代表的な手法を3つご紹介します。

PCA

Principal Component Analysisの略で、日本語では「主成分分析」と呼ばれます。
おそらく、次元削減の中では最も有名な手法なのではないでしょうか。

アルゴリズムもシンプルで、データの全体の分散(ばらつき)を最も損なわないように元データを指定された次元数に落とすだけです。
シンプルゆえに、精度に関してはこれから紹介する手法よりも落ちる傾向にあります。

一方、深く考えずともお手軽に次元削減できますし、参考ドキュメントもたくさんあります。
まずは、何はともあれPCAを適用してみる、という方針も良いと思います。

ちなみに、SVDと略される「特異値分解(Singular Value Decomposition)」という次元削減方法もあるのですが、おおよそPCAと同じと考えて差し支えありません。

t-SNE

t-distributed Stochastic Neighbor Embeddingの略で、日本語では「t分布型確率的近傍埋め込み法」と呼ばれます。
(長ったらしいので、正式名称で呼ぶ人はあまりいないと思います。)

これはPCAとはアプローチを変え高精度な次元圧縮を実現した手法です。
近いデータはより近い場所にプロットされ、より明快な「データの傾向」が見て取れるようになります。

多くの場合、入力データが複雑になればなるほどPCAはうまく次元削減できなくなるのですが、t-SNEは複雑なデータでもかなり高精度な次元削減をすることができます。

ただし、良い事ばかりではなく、
・処理に時間が掛かる
・高次元(4次元〜)の圧縮には不向き
・パラメータ調整が必要
・・・といった懸念点もあります。

PCAより高精度な次元削減が出来る可能性は高いですが、一概にPCAより優れているとは言えませんのでご留意ください。

UMAP

Uniform Manifold Approximation and Projectionの略です。
2018年に発表された新しい手法で、まだ日本語名は無いようです。

t-SNE並の精度を保ちつつ、処理速度も早く、かつ4次元以上の圧縮にも適している・・・ということで、次元削減のトレンドになりつつある手法です。
ただし、こちらもt-SNE同様にパラメータ調整は必要です。

まだ発表されたばかりの手法なので良し悪しの判断が難しい面はありますが、t-SNEが徐々にUMAPに取り替わっている風潮もあります。

まとめ

次元削減のメリットと、手法について幾つかご紹介しました。
どんなデータにも適用できますし、何より複雑なデータの関係性が視覚的に分かりやすくなるので、非常に有用な分析手法です。

アルゴリズムについては、ひとまずPCAとUMAPの2つを試してみて、より結果が解釈しやすい方を選択するのが良いでしょう。
そのいずれにも納得できなければ、t-SNEなどの別アルゴリズムを試す方針が良いと思います。