今日は統計学や機械学習、その他画像認識等の場面で登場する「次元削減」の話について書こうと思います。
まず、次元削減とは、次元データを次元にうつすことで、次元を下げることを指します。
簡単に例を出すと、
例えば国語・数学・理科・社会の4科目(1科目0点~100点)のテストをしたとします。
この時太郎君は国語:70点、数学:90点、理科:85点、社会:60点だったとします。
今現在変数は4つあって、
国語の得点(0点~100点)
数学の得点(0点~100点)
理科の得点(0点~100点)
社会の得点(0点~100点)となってるわけですが、
太郎君の点数を見た塾の先生や、太郎君の親は
「太郎君は、理系科目が得意だね~」
なんて言ったりしますよね。
スポンサーリンク
でも、今ある変数に「理系科目変数」なんてものは無いわけです。
当たり前ですが、これは次のようなプロセスで導かれています。
国語・社会⇒文系科目
数学・理科⇒理系科目
と置き換え、
(文系科目)<(理系科目)という何かしらの基準に基づく大小関係を考え、「太郎君は理系科目の方が得意」という話になるわけです。
特に数学や国語に重きを置くわけでないのなら、例えば次のような変換が出来ますね。
という得点変数について、
今回であれば太郎君のは次のようになるはずです。
つまり、<で、太郎君は理系科目の方が得意だとなるわけです。
この簡単な変換も実は「次元削減」です。
4次元(国語・数学・理科・社会)あったデータが2次元(文系科目・理系科目)になっていますよね。
この次元削減、どんな利点があるのでしょう。
何の利点も無いのに、人間が普段の会話で何となくこんな次元削減したりすることはないはずです。
一番の理由は多次元空間の解釈の難しさにあります。
国語・数学・理科・社会ならまださておき、8科目、9科目、かなり細かい専門に分けて10科目以上のテストをしたとして、その人の特性をどう解釈したらよいでしょうか。生データのままでは、せいぜい「この科目よりこの科目の方が点数が高い」とかそれくらいしか言えません。
結局色々なデータがあっても、多次元すぎてどう解釈すればわかりませんねーとなるわけです。
そこで、有用な情報を残したまま(あまり差の出ない情報は捨てて)、解釈しやすい次元までデータを持って行ってやろう!
となるわけですね。これが次元削減です。
しかし、有用な情報を残すとは具体的にどういうことでしょう。
先ほどの例は、国語と社会は文系科目という分類が一般認識としてあるので、次元削減の方法までは考える必要もありませんでしたが、実データでは、「削減したいのはやまやまだけど、どう分けたらいいか分からない!」という状況の方が多かったりします。
そこで普通は(色々方法はありますが、よくある手法として)、データの分散に着目するわけですね。
主成分分析や決定木等の手法は、分散に着目した分析法です。
何故分散に着目するかというと、話は単純で
分散が小さい⇒データ間に決定的に差が無い
と考えられるからです。
例えば10人生徒に対して、国語のテストをしたとします。点数が次のようになったとすると
国語の得意な生徒と苦手な生徒に分けるのは簡単ですね。つまりこのデータには、国語の得意・苦手の情報がしっかり入っているため、国語が得意か苦手か分けることが容易ということになります。
点数が次のようになっていたとすると
これで国語の得意な生徒と苦手な生徒に分けるのはしんどそうです。
つまり、このデータは分散が小さく、皆が似通った点数を取っているため、国語の得意な生徒と苦手な生徒に分けるのは難しいということになります。
もしかしたら、生徒皆が国語のテストが得意で、全国平均20点のテストを受けているのかもしれませんし、実は生徒皆が国語のテストが苦手で、全国平均90点のテストを受けてこの点数になっているかもしれません。また、70点くらいまでならだれでも取れるけど、それ以上を取るのが難しいようなテストで、得意な人も苦手な人も点数が均されている可能性もありますね。
何が言いたいかというと、分散が小さい分類基準よりも、分散が大きい分類基準の方が、そのデータの性質が見出されやすいということです。
だから、特に主成分分析では、分散が大きくなるように主成分を決定していきますよね。
これが、次元削減の概要になります。
また次回にでも主成分分析等々の手法について記事をあげていこうと思います。