DEVELOPER’s BLOG
技術ブログ
インタビュー記事:社内kaggle Expertのメダルまでの取り組み
アクセルユニバース株式会社(以下当社)では、人が対応している業務を画像認識、音声認識、文字認識等を活用して効率化する機械学習ソリューション開発をおこなっています。
インターン生はその一環としてkaggleコンペに挑戦しており、本日はkaggle Expertになった山口くんに取り組みをインタビューしました。 kaggleコンペに挑戦している方、これから機械学習の勉強を始める方は是非参考にしてください!
目次
- 山口くんの紹介
- kaggleコンペ挑戦
- kaggleメダル獲得のテクニック
- 実案件との違い
- おわりに
山口くんの紹介
10ヶ月前から機械学習の勉強を開始した文系大学生。
過去kaggle参加コンペ数:3 メダル獲得数:2 (銀1:IEEE-CIS Fraud Detection、銅1:Severstal: Steel Defect Detection)
signateもちょこちょこ参加。
kaggleコンペ挑戦
―――今日は宜しくお願いします。
お願いします。
―――まず初めに、kaggleに参加し始めたきっかけを教えて下さい。
kaggleはデータサイエンスや機械学習をおこなうにあたり、気軽に挑戦でき実力を表現しやすかったんです。なのでまずはやってみようかな、と。 僕のkaggle開始時はなかなかkagglerと出会えませんでしたが、最近コミュニティにも参加するようになり、情報交換をしやすくなりました。そのコミュニティでは、分析系をメインに議論しています。最近はビッククエリが話題になりました。 kaggleコンペについての話題も上がることもあり、ちょうど先日、僕の成果報告を話してきました。
―――成果報告!すごい。kaggleはどこでも話題なんですね。改めて今までのkaggeコンペの成績を教えて下さい。
IEEE-CIS Fraud Detectionで銀メダルをSeverstal: Steel Defect Detectionで銅メダルを獲得しました。
IEEE-CIS Fraud Detectionはnotebookやディスカッションを読み、そこに新しい特徴量を追加して...と試行錯誤を繰り返しました。だいたい200時間くらい費やしたと思います。 次に参加したSeverstal: Steel Defect Detectionは自力で行った部分が増えたことに加えて、採用するディスカッションやnotebook選びが的確になりました。そのため短い時間で提出までおこなえました。
―――ディスカッションやnotebookから取り入れるものを選ぶのは勉強が必要ですね。 どういった勉強や練習をしたんですか。
僕、機械学習を初めたのが今年(2019年)の1月からなんですよ。そこから4月までの4ヶ月はひたすら理論を勉強しました。機械学習の範囲は参考書等網羅し、統計検定2級も取得しました。 反省点は、理論だけやっていた期間が長すぎたことです。理論は広く浅く勉強して、早めに実装に入りメダルを狙いにいった方が良いと思います。
分からないことがあったら、その都度理論に立ち返り勉強する方が効率良かったです。 教材はPyQ、AI Academy、Udemy、Courseraがおすすめです。
―――なるほど、ここからはkaggleでメダルを獲得するためのテクニックをいくつか質問させてください。参加コンペを選ぶ基準はありますか?
参加人数が多く、取り掛かりやすいテーブルコンペを選んでいます。皆にとってやりやすいコンペは僕にとってもやりやすいはずなので。 Severstal: Steel Defect Detectionは画像認識系のコンペですが、時期的にちょうど参加しやすいコンペが無かったので挑戦してみました。
―――「挑戦してみました。」でメダルが獲れるって凄いですね...。最終提出までのスケジュールを教えて下さい。
僕の場合は
- 最後の1週間はブレンドとかスタッキングを行う
- それまではEDAを丁寧に行う、テストデータを分布を見る
- 並行してnotebookやディスカッションを追い続ける
よく言われている手法ですが、これに尽きると思います。 焦って早くにブレンドやスタッキングをおこなっても、また最後には再度おこなう必要があり、効率が悪いので耐えます。
―――今回銀メダルを獲得したコンペ、IEEE-CIS Fraud Detectionを振り返ってください。
このコンペは、世界有数の決済サービス会社であるVesta Corporationのデータを用いて開催された、カードの不正利用検出をおこなうコンペです。
kaggleで差がつくポイントは主にこの3つだと思っていて、
- 特徴量作り
- モデル作り
- バリデーション
今回、僕はモデル作りが上手くいったと思います。 過学習を抑えるためにビギングしたモデルを入れ、バリデーションも工夫しました。 notebookやディスカッションを読んでいくと、多くの人がLightGBMを使っていたので、あまり使われていないモデルとブースティングしたことで、スコアの差をつけることができました。
また、リーダーボードで最終提出の2、3日前にでスコアが高いモデルが投入されましたが、 それはいわゆる悪魔の実で、パブリックスコアは上がるがプライベートスコアは下がるものでした。 僕も一瞬飛びつきたくなりましたが、他の予測と相関をみて、安易に使うのは危険だと採用を回避しました。経験で危険を察知することも大事ですが、ディスカッションを読むとちゃんと書いてあるので、見逃さずに丁寧に読んでいくことも大事です。
―――全てのnotebook、ディスカッションを読んでいるんですか?
金〜銅がついているnotebookは読んでいます。なにもついていないものは読んでいないです。
notebookとディスカッションを読んで試すことで到達できるのは銀までかと思っています。金を獲るにはオリジナルでないと厳しいです。 IEEE-CIS Fraud Detectionで金を獲っているカーネルはユーザーまでも特定していました。1回不正を行ったユーザーは2回目も不正である、とかまで必要なようです。
―――山口くんが辛かったことやつまづいたことってありますか?
ありますよ。笑 スコアが上がらないときはモチベーション下がり気味で、お腹痛いことも多々あります。 特に、Severstal: Steel Defect Detectionは上位6%から落ちて、なんとか上位10%に踏みとどまったので精神的に辛かったですね。 ただ、チームで参加したことが精神安定剤になりました。最後は個人プレイですが、仲間がいるっていいですね。
―――それはうちのインターン有利かも!今度、インターン生でsigenate賃料予測解説ディスカッションを行うんです。良さそうですか?
え、良さそう。答え合わせはためになるし、新たな気付きがたくさん得られそうですね。 kaggleやsignateのイベントに参加して解説を聞くのも良いですよ。僕はkaggle Daysに参加予定です。
―――当社で実案件にも入ってくれている山口くん。そこで感じたkaggleと実案件との違いを教えて下さい。
実案件では、お客様とのやり取りの中で目標(ゴール)が決まるので、目標がわかりにくい場面がありました。 あとはデータ収集と整形です。データ収集も僕たちで行い、画像認識の案件なので実際に写真を撮影しました。
そして最大の違いは、モデルを1から構築することです。当たり前ですが...。 コンペは最初に他人の考えやモデルを参考にできますが、実案件は1から試行錯誤する根気のいる作業です。 でも、インターンでこういう経験ができることはとても良かったです。 今はWEBアプリ開発案件に携わっていて、その次はインフラにも挑戦したいです。広く経験を積めることは良いですね。
―――今日は貴重なお話をありがとうざいました!
ありがとうございました〜。
おわりに
今回話してくれた内容はどのコンペでも転用できる内容でした。 今後も社内外で情報共有をし、さらなる成果を出せるようにしていきたいです。(週1ペースで勉強会をしています。)
その他当社インターンでは論文のまとめ記事を書いたり、実際に実装したりしています。 随時紹介していくので是非ご覧ください!
定期的にメルマガでも情報配信予定なので、問い合わせページに「メルマガ登録希望」とご連絡ください。
Twitter・Facebookで定期的に情報発信しています!
Follow @acceluniverse