見出し画像

大量データを扱うときに出てくる問題を知る - 高次元データと次元の呪い

こんにちは、西岡 (@ken_nishi) です。
今回は「大量のデータがあればよいわけではない」という話を、高次元データを取り扱うという視点で解説します。

データを大量に所持していると、多くの人がそのデータの中に解決したい課題の何かしらの解があると期待します。
もちろん大量のデータを保持していると、様々な切り口でデータ解析したり、AIに学習をさせることで色んな課題を課題解決できることもあります。
しかし、多くの場合は、データが増えた分と比例するような形で課題がどんどん解決できるわけではありません。むしろ、データが多くなることで高次元データになり、解析が困難になってしまう問題が出てきます。

高次元データとは

画像1

高次元データとは、文字通り次元が高いデータのことです。
データ解析における次元は、データを表す特徴量とも言います。そのため、特徴量が多い場合に次元が多いと表現したりします。
例えば、ユーザの特徴であれば、年齢や性別などが特徴量として使われたりします。他には、住所や年収やその他様々な情報が特徴量として考えられます。この特徴が多くなることで高次元データになります。
どのくらいの次元から高次元という線引はないですが、数万次元や数百万次元のデータを扱うことは、近年のデータ解析では当たり前となってきています。
特徴量に触れたことがない人からすると、ユーザの特徴データなどがなぜ数万次元のような高次元になるか不思議かもしれません。
データは扱い方によって特徴量を増やしやすい、つまり容易に高次元することができます

高次元データを作る

画像2

ECサイトのデータを解析するプロジェクトを考えてみましょう。
特徴量としては、まずユーザの基本情報 (年齢や性別など) などが考えられます。このようなデータを集めたとしても、せいぜい数十次元というところです。
次に、ここに商品の購買履歴を特徴量として加えます。レコメンデーションエンジンや購買予測では購買履歴の特徴量は必須となってきます。
ここで、購買履歴を特徴量に変換するときに、商品ごとの購買をそれぞれ1つの特徴として扱います
つまり、この場合、商品の数だけ次元が増えるということです。1000個の商品があれば1000次元増え、10万個の商品が10万次元増えるということです。
さらに、購買した商品に対して「閲覧した」「お気に入りに入れた」「評価した」などユーザが取ったアクションなども特徴量として考えられます。
もし朝昼晩などの時間帯別に特徴を分けたい場合には、さらに次元が細分化されます。
このように実際にデータ解析しようとすると、爆発的に次元数が増えて高次元のデータになることはよく起こります。
そして、色んな特徴量を加えようとすると、値を埋めることができない欠損値なども増えてきて、その対処する必要も出てきます。欠損値については以前の記事で解説しているので、そちらを参照してください。

高次元になることは必ず欠損値の問題を大きくするわけではありません。しかし、高次元データを扱うと低次元のときには起きなかった問題が起きてきます。それが「次元の呪い」と呼ばれる現象です。

次元の呪いとは

画像3

次元の呪いは、次元が増えることにより計算量が指数関数的に増えることや、精度の高いモデルとつくために必要なデータ数が指数関数的に増えたりするときに使われます。
また、高次元空間におけるデータが低次元のデータとは異なる性質を持ち、統計や機械学習の手法をうまく適用できなくなるときも次元の呪いを使うことがあります。(興味ある方は、サクサクメロンパン問題などで調べてみてください)
次元の呪いは、1957年に数学者であるRichard E. Bellmanの論文で使われた表現ですが、今もなおデータを扱う人々が直面する大きな問題の一つとなっています。

次元の呪いは技術の進歩で解決できるのか

画像4

近年、飛躍的な技術の進化により、マシンパワーが向上し、それにより昔は計算できなかった高次元データを扱えるマシンが誕生し、様々な解析ができるようになりました。
このマシンパワーの向上が、機械学習ないしはディープラーニングが進化した背景とも言えるのですが、これで次元の呪いは解決されないのでしょうか。
確かに、マシンパワーの向上により大量の計算ができるようになりました。しかし、次元の呪いは得られるデータ量とともに成長し続けており、次元の呪いの影響はマシンパワー成長を遥か凌駕したスピードで大きくなっています
また、そもそも高次元データは低次元のデータとは異なる性質を持つ事自体は、マシンパワーにより解決できる問題ではありません。
結局のところ、いくら大量にデータがあったとしても、特徴量を削減したり、次元削減によりデータを圧縮して扱う必要があるということです。

次元の呪いとディープラーニング

画像5

次元の呪いと最近の研究としては、ディープラーニングによって次元の呪いを回避する研究も出てきています。
例えば、「富士通研究所、“次元の呪い”回避する世界初のディープラーニング活用技術を開発」に紹介されている技術では、次元削減をディープラーニングで最適化することにより、元のデータの特徴を残したまま次元圧縮する研究などがあるようです。
高次元のデータを特徴を残したまま低次元に落とすということなので、次元削減の一種と言えるのですが、圧縮前後でのデータの性質の差分をできる限り小さくするのにディープラーニングを使っているのが面白いですね。

まとめ

今回は、高次元データと次元の呪いについて簡単に解説しました。
大量のデータを集めて解析をすることは、新しい知見を得たり色んな課題を解決する可能性を秘めています。
しかし、データの次元が増えることで起こる問題を理解していないと、解析しても思ったように効果が出ないことにがっかりしてしまうかもしれません。
高次元データを扱うときは、高次元により起こる問題を避けるために、適切に次元削減することが必要となります。
このような作業は地道であることも多く、すぐに成果が出るとも限りませんが、一歩一歩課題解決のために解析をしていくことがビジネスを成長させるために重要になると思います。

この記事が気に入ったらサポートをしてみませんか?