六本木で働くデータサイエンティストのブログ

元祖「銀座で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木

「前処理」のフォーマット共通化やOSS化はできないんだろうか


先日Zansaの会でお話してきたんですが、その際にShannon Labの田中社長からこんなコメントをいただいたのでした。

「実際のデータ分析の現場ではデータの前処理にかかる技術的・金銭的コストがあまりにも大きく、色々な企業にとってデータ分析を始めるためのハードルが高くなってしまっている気がする」


「例えばデータ分析業界で力を合わせて、何とかして前処理のフォーマット共通化ができれば、そのコストは下がってもっと多くの企業がデータ分析を導入できるようになるのではないか?」


これはものすごく僕も共感できるポイントだと思いました。実際その場でかなり突っ込んだ議論をだいぶ長々とさせていただいてしまったんですが、やっぱりデータ分析の実務レベルだと避けて通れないテーマなんだなと痛感した次第です。


前処理という名のデータ分析の宿痾


Zansaの会で話した内容は冒頭のslideshareの通りなんですが、改めてその中で口を酸っぱくして訴えたかったポイントの一つに


「データサイエンティスト=マエショリスト」


という現実を見なきゃダメだよねー、というのがありまして。これは冗談でも何でもなくて、冒頭のslideshareでも書いてるようにうっかりすると全工数の9割が前処理*1、なんてこともあったりします。


そして最大の問題が「データ分析する本人がデータの前処理をやらないとうまくいかない」ケースが大半であるということ。一般に、前処理はその後に待っているデータ分析の枠組みに合わせて行うものなので、どうしてもその枠組み自体に関する知識が必要になります。なので、もし本チャンの分析に統計分析や機械学習を伴うのであれば、前処理にもまたそういう知識が要ります*2


けれども、統計分析や機械学習を理解している人材はまだまだ少ないため、必然的にそれらを理解しているデータ分析者自身が自ら前処理をやらざるを得ない、というシチュエーションが常態化するというわけです。これはケースバイケースですが、今の現場でも以前の現場でも僕が自ら前処理は全部やっている(きた)という状況です*3


しかも、今のところデータ分析者の売り上げは工数で見積もる感じになっている組織が多いようですが*4、そうするとデータ分析の本題ではない前処理に莫大な工数がかかり、そこにかなりの費用が発生してしまうことになるため、現場によっては発注元に対する説明に苦慮するケースが頻発していると聞きます。「はぁ?CSVファイルを分析できる形に直すだけで2週間もかかったからその分の費用も請求させろだぁ?ふざけんな!」みたいなことを言われるとか。。。いやそう言われてもですねぇ。。。


ならば前処理のフォーマットを共通化したり、前処理のプロセスそのものをOSS化できないものか


で、よくよく考えると大抵の場合データ分析の本丸の方はあまり現場ごと・テーマごとに変わらないわけです。フルスクラッチでC++で処理系を書いてるような人であればまた別ですが、普通はR / Python / Javaあたりで統計分析&機械学習をやるものでしょうし*5、そうなれば統計分析や機械学習に特化した定番のパッケージやライブラリなどを使うことも多いはずなので、必要とされるデータ形式はどこでも似たようなものになるはずです。


一方で、よほど訳の分からないアクションログでも取ってない限りは、本当に大まか〜〜〜な範囲で言えば元データのフォーマットも大体似たような感じになるはずなんですよね。Webアクションログなら言わずもがなだし、その他の種類のデータ*6ならそれなりにそこそこ似たフォーマットになるはずです。


ならば、例えばそういうゆるーーーくだけれどもある程度フォーマットに法則性のある生データを、バッチで前処理して(例えば)R / Python / Javaで捌きやすい形に直すような前処理特化フレームワークとかフォーマットを作って、データ分析業界全体でOSSプロジェクトとしてシェアするというのはどんなものでしょうか?


もちろんそれ自体は様々な現場で前処理のコストダウンになるでしょうし*7、時には社内で異なるデータ分析部門同士が連携する際には前処理プロセスを統一できて効率的になるでしょう。


あまつさえ他社から優秀なデータ分析者を引き抜いてきた場合でも、個々の現場ごとの前処理プロセスのローカルルールの違いなどに悩まされることなく*8、すんなり即戦力としてデータ分析に取り掛かれるんじゃないでしょうか。


それは最終的にはデータ分析にかかるコストを著しく下げ、より多くのビジネスシーンにデータ分析カルチャーが取り入れられる契機となるはずです。そんな未来図に繋がれば良いなぁ、というちょっとした提言です。


でも、ふと思った


もしRのデータフレームとかformula式に合わせるとしたら、これって列指向DBMSに必ずデータ突っ込めよって話にしかならないなー、と。もうちょっと賢い方法はないんだろうか。。。

*1:処理のレベルは問わない:それこそCSVファイルをDBに延々突っ込むというレベルから、バッチ処理を組んで隣接行列に変換するというレベルのものもあったり

*2:例えば数値型でデータを持たせるのか、カテゴリ型に直すべきなのかetc.

*3:レポーティングはMGR氏とかプランナーさんに投げることができるけど

*4:アドホック分析であればROIオンリー評価でもない限りそうなるし、アルゴリズム実装でエンジニア仕事になるなら尚更

*5:Web系を想定してるので要注意

*6:生テキストとかグラフデータとか

*7:工数が減るんだから当たり前

*8:これ超重要(笑)