DeNAのKaggle日記

第5回:ソフトウェアエンジニア視点で見るKaggleのメリットとスキルの生かし方

大久保渉太 (ディー・エヌ・エー) 2018年12月03日 07時00分

  • このエントリーをはてなブックマークに追加

 今回は、2017年の年末ごろから「Kaggle」で積極的に活動し、Kaggle Masterとなってディー・エヌ・エー(DeNA)に転職した大久保渉太が担当します。いわゆるソフトウェアエンジニアとして6年間働き、前職ではバックエンドエンジニアとして証券システムに関わっていました。

 これまで、機械学習を専門とするエンジニアの視点からKaggleについて紹介してきましたが、今回は筆者のような機械学習を本業としていないソフトウェアエンジニア(以下、エンジニア)の視点から紹介します。

Kaggleに参加することで何が得られるか

 Kaggleに参加することで、エンジニアにはどんなメリットがあるのでしょうか。機械学習を本職としないエンジニアがどのようなスキルや経験を身に付けることができるのか、筆者の体験をもとに記述したいと思います。

機械学習やその周辺技術を学べる

 Kaggleは新しい技術の宝庫です。筆者の場合、業務ではオンプレミス環境でJavaを使っていたのですが、KaggleではGoogle Cloud Platform(GCP)環境でPythonを用いて機械学習モデルを作成しました。Kaggleを始めた当初は環境構築だけでも何十日を要していましたが、今では数分で立ち上げられる、なじみ深い環境になりました。

 業務においてプログラミング言語や開発環境が固定的になりがちなエンジニアにとって、新しい技術を自然と習得する機会はなかなか得られないため、Kaggleに挑戦する意義は多いにあると考えています。

 さらに言えば、機械学習とその周辺技術は2018年現在、需要が高い分野であり、自身の市場価値を大幅に高めることができる技術です。機械学習自体を本業としないエンジニアであっても、環境構築を含めた周辺技術を学ぶ価値は多いにあるのではないでしょうか。

小規模なプロジェクトでコードを書く経験を積める

 Kaggleでは自分自身でコンペ開始から終了までを管理します。開発環境などの選定、クラス設計からコーディングまでを一人で行うため、一つひとつの選択が最終的にどのような結果をもたらすかという理解が進みます。筆者の場合、書き捨てのコードをコピー&ペーストしていくという、ひどい品質でコンペを進めていたことがあり、結果として終盤になって自分の最良解を見失うなどの手痛い経験をしました。

 業務で大規模プロジェクトにアサインされた際、システムの全貌を把握せずに仕事をしていると判断が限定的となってしまい、自分の仕事が最終結果にどう影響するのかを実感できないときがあります。また、業務では失敗を恐れるあまり、なかなか大胆な実験ができないこともあります。その点、Kaggleであれば、自由に実験を進めながら、試行錯誤を通じて良い設計やコードへの理解を深められます。

パフォーマンスチューニングに関する知見が得られる

 Kaggleでは、プログラムの実行速度を意識してプログラムを書く機会が多々あります。特にデータが多くなると、プログラムの実行時間が数時間、ないし数日間を超えたりします。そのため、必要に迫られ、大規模なデータを効率的に処理するためのノウハウを身に付けることになります。

 筆者が経験したコンペでも、データの前処理に数日単位の時間が必要だったため、プログラムをマルチスレッドで動かすための改良や、I/O高速化のためのデータ形式変更、ハードウェアのスケールアップといった施策を実施した経験があります。

 Kaggleに参加することで、こういったパフォーマンスに関する改善を自然と行えるようになります。業務においても、必要な工数や費用への理解が進み、コストに見合うかどうかの判断を、より正確に行えるようになるでしょう。

なぜKaggleで学ぶべきか

 機械学習について学ぶためには、さまざまな方法が考えられます。例えば、理論的な専門書を熟読する、オンラインコースを受講するなどがあります。各人のスキルセットや学びたい分野に応じて、適切な学習方法は異なると思いますが、ここではエンジニアにとってKaggleで機械学習を学ぶメリットを挙げていきます。

豊富なサンプルコード

 Kaggleにはサンプルコードが大量に公開されていて、そこから学ぶことができます。機械学習についてのサンプルコード量で言えば、Kaggle以上に参考になるサイトはないのではないでしょうか。サンプルコードをコピー&ペーストで動かした後、徐々に改良していくといった学び方は、多くのエンジニアが一度は経験したことのある学習方法ではないでしょうか。そういったなじみ深い学習方法を大量のサンプルコードで実践できます。

手を動かしながら学べる環境

 「手を動かしながら機械学習の技術を学ぼう」と思い立ったとしても、そこには困難が立ちはだかります。「機械学習でどんな問題を解くのか」という問題設定や、「どんなデータを用いて問題を解くのか」といったデータ収集の部分が、実はかなり難しく労力がかかってしまうのです。

 Kaggleでは、企業が実際に取り組んでいる課題をテーマにしたコンペが多く開催されていて、データも用意されています。その点で、すぐに手を動かして学べる環境が整っています。

 さらにKaggleでは、作成したモデルについての評価をすぐ得られます。モデル精度の良し悪しがすぐに評価される仕組みがあることで、手を動かすモチベーションを保てます。

ZDNet Japan 記事を毎朝メールでまとめ読み(登録無料)

  • このエントリーをはてなブックマークに追加

この記事を読んだ方に

連載

CIO
ITアナリストが知る日本企業の「ITの盲点」
シェアリングエコノミーの衝撃
デジタル“失敗学”
コンサルティング現場のカラクリ
Rethink Internet:インターネット再考
インシデントをもたらすヒューマンエラー
トランザクションの今昔物語
エリック松永のデジタルIQ道場
研究現場から見たAI
Fintechの正体
米ZDNet編集長Larryの独り言
大木豊成「仕事で使うアップルのトリセツ」
山本雅史「ハードから読み解くITトレンド放談」
田中克己「展望2020年のIT企業」
松岡功「一言もの申す」
松岡功「今週の明言」
内山悟志「IT部門はどこに向かうのか」
林 雅之「デジタル未来からの手紙」
谷川耕一「エンプラITならこれは知っとけ」
大河原克行「エンプラ徒然」
内製化とユーザー体験の関係
「プロジェクトマネジメント」の解き方
ITは「ひみつ道具」の夢を見る
セキュリティ
エンドポイントセキュリティの4つの「基礎」
企業セキュリティの歩き方
サイバーセキュリティ未来考
ネットワークセキュリティの要諦
セキュリティの論点
スペシャル
エンタープライズAIの隆盛
インシュアテックで変わる保険業界
顧客は勝手に育たない--MAツール導入の心得
「ひとり情シス」の本当のところ
ざっくり解決!SNS担当者お悩み相談室
生産性向上に効くビジネスITツール最前線
ざっくりわかるSNSマーケティング入門
課題解決のためのUI/UX
誰もが開発者になる時代 ~業務システム開発の現場を行く~
「Windows 10」法人導入の手引き
ソフトウェア開発パラダイムの進化
エンタープライズトレンド
10の事情
座談会@ZDNet
Dr.津田のクラウドトップガン対談
Gartner Symposium
IBM World of Watson
de:code
Sapphire Now
VMworld
Microsoft WPC
Microsoft Connect()
HPE Discover
Oracle OpenWorld
Dell Technologies World
AWS re:Invent
AWS Summit
PTC LiveWorx
吉田行男「より賢く活用するためのOSS最新動向」
古賀政純「Dockerがもたらすビジネス変革」
中国ビジネス四方山話
ベトナムでビジネス
日本株展望
企業決算
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]