プログラミングコンテストとの関係
こういった問題はKaggleだけで出題されているものではなく、「Topcoder」に代表されるプログラミングコンテストの中ではマラソンマッチと呼ばれる種目で、似た形式の問題が出題されていました。
私は2015~2016年のコンペで上位に入った人たちがそういうところで活躍している人たちだと知り、彼らの強さの秘密を知るためにプログラミングコンテストへの参加を始めました。始めてみると、それ自体が面白くなって、マラソンではないアルゴリズム部門の方を今も続けています。サンタコンペで優勝するような方々には遠く及びませんが、「Atcoder」というプログラミングコンテストで、先日黄色のランクに到達しました。サンタコンペで金メダルを2個獲得したのは、間違いなくプログラミングコンテストのおかげでしょう。
AtCoderのプログラミングコンテスト
Kaggleとの関係で言えば、もともと古く(といっても2010年や2011年ですが)から参加しているKagglerにはこういったコンテストに参加していたという方が多いのですが、毎年サンタコンペを入り口に新たな強豪たちが参入してきます。そして彼らはサンタコンペにとどまらず、通常のKaggleコンペでも活躍しています。
問題には形式からして大きな差があって、役立つ専門性も違うのに、と、もしかしたら不思議に思われるかもしれません。でもよく考えてみると、そもそもKaggleですごく強いといわれる人はどんなコンペでも強いものです。きっと問題のテーマが違っても使い回せるスキルがあるのでしょう。
プログラミングコンテストの参加者について言えば、彼らはコードを書く能力や、数理的な思考力、さらには問題を解くために全力を尽くす根性があり、そういった能力はKaggleでもそのまま活用できるでしょう。
データ分析の業務に役立つのか
では、サンタコンペやプログラミングコンテストがデータ分析の仕事やKaggleコンペにどう役立っているか、私自身を振り返ってもう少し具体的に考えてみます。能力として伸びたものが大きく3つ、「計算の効率化」「コードを書く速さ」「できる仕事の幅」があると思います。
まず1つ目、計算の効率化をする能力について。これは明らかに上がったと思っています。今はクラウドで幾らでもスケールする時代ですし、大きな計算はライブラリを呼び出して行うので、そんな能力はデータ分析に必要ないと思われるかもしれませんが、それは誤解です。
Kaggleで勝つために変わった特徴を作ろうとしたり、あるいは仕事で分析データを自分で作ろうとしたりすると、重い計算をするコードを自分で書くことになります。こんなときに、計算の効率化のノウハウがあると、例えばパラメータを全探索したり、事前計算しておけば良いものを何度も同じ計算をしてしまったり、ということがすごく少なくなります。
また、実際に書いたコードや受け取ったコードの処理が重いという場面はかなりあるのですが、ボトルネックがどこなのか、どうして重いのか、解消手段があるのかないのか、あるとしたらどういう手段か、を考えるのが速くなります。例えば、データ量が10倍になったから10倍の計算時間を見込んでおけば終わるだろうと実行した、サポートベクトルマシンや一部クラスタリングアルゴリズムの計算が終わらなくて思考停止する、なんてこともなくなります。
2つ目のコードを書くスピードの上昇は分かりやすいと思います。プログラミングコンテストでは、問題を解くまでの速さも競っていますので、素早く考えを整理してコードにできるようになりました。こういった物理的な速さはもちろんですが、それだけではなく心構えの問題として、自分の手でコードを書くことへの抵抗が少なくなり、実際にコードを自分で書くと決心するまでの時間も早くなったと思います。
3つ目となる仕事の幅の広がりについて。Kagglerがモデルを作るのはたいてい予測のためで、その予測はそもそも何かの効率化が目的ということがあります。このような場合は、予測のことだけではなくて、もとの問題を数理最適化の枠組みで解くこととセットで考えるべきでしょう。
例えばタクシーの移動で最短経路を探す問題であったり、需要と供給のマッチングであったり、弊社だとオートモーティブ事業に関連する形でこのような問題はたくさんあります。
また、先日「関西電力とDeNAが、石炭火力発電所の燃料運用最適化を行うAIソリューションの共同開発等に関して基本合意」というプレスリリースを出しました。このシステムの中で用いられているのも数理最適化の技術です。このような問題の専門家がチームにいたわけではないのですが、プログラミングコンテストが得意なKagglerを中心にしたチームで、勉強しながら開発に取り組みました。
終わりに
このように、プログラミングコンテストに取り組むことでデータ分析にもいい影響があると私は考えています。Kaggleに取り組むことにいろいろなメリットがあるというのは既にさまざまなところでいろんな方が述べている通りです。ただ、世界規模の勝負の世界であるKaggleに取り組み続けるというのは、なかなかに辛いものがあります。そんなときには気分転換もかねて、新しく別のことにも取り組んでみるのはいかがでしょうか。回り道に見えるかもしれませんが、回り回って意外と近道なのかもしれませんよ。
- 原田慧
- ディー・エヌ・エー システム本部 AIシステム部 データサイエンスグループ マネージャー
- 2018年2月にDeNAに入社、数理学博士、Kaggle Master。前職ではコンサルタントとして金融機関向けのデータ分析に従事する傍ら、数学力とデータ分析コンペティションで鍛えた技術力を生かし新規分野開拓、社内外の分析技術者育成に従事。現在はデータサイエンスグループのマネージャーとして癖の強いKagglerたちを率いる。