Hatena::ブログ(Diary)

放浪するエンジニアの覚え書き このページをアンテナに追加 RSSフィード

2015-01-15

ビッグデータの超高次元な説明変数をスケーラブルに選択する(Selection of Huge Dimensional Explanatory Variables by Google MapReduce)

| 12:37 | ビッグデータの超高次元な説明変数をスケーラブルに選択する(Selection of Huge Dimensional Explanatory Variables by Google MapReduce)のブックマークコメント

久しぶりのビッグデータ関連の投稿。昨年7月に書いたレポートを掲載する(末尾のリンク)。

レポートで取り扱うのは、「数百万ー数億の説明変数がある判別問題においてMapReduceを用いてスケーラブルに変数選択をする方法論」について。統計方向からの勘弁なアプローチとなっている。

後述するが、当レポートは「遺伝情報から特定の疾患を判別する」という問題に刺激されて作成した。

さて。

前置きが長くなってしまうが、研究背景から述べたいと思う。自分が何年か前にMapReduceというフレームワークについて聞きかじり、興味をもった点は以下だった。

  1. 線形代数を多用する旧来からの多変量解析法の実務において、MapReduceの分散フレームワークが有効に使えそうかどうか。
  2. Amazon Web Servicesに代表されるクラウド環境において、簡単にMapReduceコンフィギュレーションが可能かどうか。
  3. クラウド環境が(そのふれこみ通り)「資金の乏しい研究」の味方となる(廉価な)プラットフォームなのか。

第1の問いに対しては、これまでの試行結果よりネガティブな印象を受けてしまったことは否めない。(たとえば、Hadoop Mapreduceで大きな相関行列を計算する)。

著名な機械学習のプロジェクトであるApache Mahoutが「Goodbye MapReduce」という結論を下したのもこれに関係ないことではないだろう。

これに対して、第2、第3の問いに対しては極めてポジティブな印象があり、クラウド環境は「資金の乏しい研究プロジェクト」に大きな力を与えると確信できた。

添付するレポートは、2014年の応用統計学会春季大会で聞かせていただいた東京農工大石井教授の研究に刺激され作成した。その発表では「遺伝情報から特定の疾患を判別する」という問題が取り扱われていた。「遺伝マーカー」なるものがどのようなデータであるかわからないが、それらの「有無」つまり2値の説明変数であろう(もしくはそう還元できるだろう)と推測した。定式化としては古典的な判別分析の問題(2群の判別関数)となるが、ビッグデータの特徴である「超高次元な説明変数」群をどう取り扱うかが課題となる。

よく知られているように説明変数の数を増やしていけば自ずと判別結果は良好(オーバーフィット)となる。また、説明変数が多くなればなるほど「判別を本質的に決めているのはどの変量か」という議論がしずらくなるから、少ない変量で判別を行うことが分析者の腕の見せ所である。

そして、判別問題は固有値問題に帰着されるから「線形代数の苦手なMapReduce」には不得意な領域である。それでも「(クラウドはプラットフォームとしてのメリットがあるのだから)どうにかMapReduceを使うことはできないかな」と考えた結果、「線形代数演算を簡単に行うDSLDomain Specific Language)にはR(S plus)やMATLABなどがあるのだから、これらのソフトウェアが使える程度まで次元縮約(変数選択)してあげれられればいいだろう」という安直な結論に到達した。つまり、「MapReduceでスケーラブルに変数選択を行う方法論」を探すことが新たな課題であり、レポートの主旨となる。

添付のレポートで採用したのは「符号検定(二項検定)」という古くから用いられている簡便な統計検定を用いた変数選択の方法論とそのAmazon Web Services上でのシミュレーション結果である。これは、MapReduceという「(演算上の)制約の強いフレームワーク」を利用するにあたっては「できる限り」簡便な方法を利用すべきと考えたためである。「符号検定」は品質管理の現場などで「計算機のない時代に」変数間の相関を計るために利用されていた。

レポートでは具体的なデータを用いた検証には至っておらず、数値実験によって手法がMapReduceフレームワークによってスケールすることだけを検証した。

1,000,000オーダーの説明変数に対して、1,000のサンプル数のデータを20台構成のAmazon Elastic MapReduceクラスタで8分14秒(494秒)で処理できた。1億であれば計算時間は49,400秒(14時間弱)であるが、クラスタサイズを増やせばそれを線形に減らすことが可能である。

ただし、これらの所要時間は「Amazon Web Servicesの特定の環境」において得られた計測値であること、データの加工・転送にかかる時間は含まれていないことを付記しておく。

レポート:二項検定に基づくMapReduceを用いたビッグデータのスクリーニング

注記:

レポートは自由にダウンロード可能です。なんらかのお役に立てたらご連絡いただけたら嬉しいです。