はじめに
Kaggle を始めて半年ほど経ち,個人的にこの半年で得たものを整理するという意味で「kaggle その2 Advent Calendar 2019」の20日目を担当します.
簡単な自己紹介として,普段は都内のベンチャー企業で主に製造業のお客さんを相手にデータ分析の仕事と自社製品の開発を8:2ぐらいの割合で担当しています.
実は JTC から転職して今の会社は2社目で,働いて2年弱になります.
ちなみに前職の JTC では,マーケティングオートメーションツール導入などの SE 的なことをしてました.なので,バリバリデータサイエンスをしていたわけではないです笑
Kaggle は転職した時ぐらいから知って,すぐやり始めたいと思ってたのですが,色々と仕事プライベート共に余裕が無くて満を辞して半年ほど前から本格的に参加し始めました!
Kaggle を始めて得たもの
今回はそんな半年ほど前から Kaggle を始めて得たものとして,大きく3つあり,それについて書きます.
- データサイエンス関連の知識
- 実務へのフィードバック
- 人との繋がり
それぞれ簡単ですが,書いていきたいと思います.
1. データサイエンス関連の知識
よく言われていることですが,Kaggle は宝の山であり世界中のデータサイエンティスト・機械学習エンジニアの知恵や情報が特にコードレベルで共有されているのが魅力の一つです.掘れば掘るほど色々と出て来るので,これを活用しない手はないなという印象です.
その中でも,特に個人的に得て良かった知見としては以下の4つかなと思います.
1つ目は,
- 特徴量エンジニアリング
- ドメイン知識に基づく特徴量エンジニアリングが有効であることはもちろん知っていましたが,それを作る発想であったり組み立て方が非常に勉強になってます.
- また関連して,どの単位で集約した特徴量を作るか,カテゴリカルデータやカウントデータの扱い,エンコーディングの仕方であったりと特徴量の作り方は非常に参考になってます.
2つ目は,
- パイプライン設計
- パイプライン設計は Kaggle を始めてから特に意識させられた部分になります.参考になる情報をいくつか上げておきます[1, 2, 3].
これを意識して良かったこととしては…
- 特徴量の管理が楽になる
- 試行錯誤した結果をログという形で後から確認できる
- 結果の再現性も容易になる
- 計算回した後は寝てられる笑
他にも色々と良いことはあるので,是非オススメしたいです!後々の再利用のためにも整理しておくと,一から全てを作り出さなくても良いので,有用かと思います.
3つ目は,
- バリデーションの重要性
- モデルの汎化性能を考える上では大事な要素で,Kaggle では特に pubulic LB で上位に入っていても,バリデーションをきちんとしていないと private LB で大きく shake down してしまう結果になることがよく?あるのかなという印象です.
- 学習データの結果が良くてもテストデータで全然良くないとなると使い物にならないので、この辺りは実務でも活きてくる部分になります.運用段階で全然使えないモデルが出来上がるのを回避できる方法の1つ.
- モデルの汎化性能を考える上では大事な要素で,Kaggle では特に pubulic LB で上位に入っていても,バリデーションをきちんとしていないと private LB で大きく shake down してしまう結果になることがよく?あるのかなという印象です.
4つ目は,
- NN をテーブルデータで使う方法
- Neural Network は画像認識の領域で使われてますが,それをテーブルデータに使う方法が Kaggle では見かけます.
- テーブルコンペでは,GBDT 系のアルゴリズムの方がまだまだ精度的には良いですが,モデルの多様性や特徴量抽出の自動化的な部分で NN モデルも十分に活用できると思ってます.
- この辺りはもっと kernel などで理解して自分の武器にしていきたいなという感じです.ただ,前までは選択肢にもなかった気がするので.様々な手法を見た結果得られた知見かなと.
- Neural Network は画像認識の領域で使われてますが,それをテーブルデータに使う方法が Kaggle では見かけます.
2. 実務へのフィードバック
Kaggle で実施する内容と実務での内容が必ずしも直結するわけではないですが,分析スキルの向上は実務でも大きく活きてます.
例えば,実務でデータ受領後,EDA を進める中でデータの勘所を掴むのが以前より早くなったのと,何をどうすれば良いかを掴むのが以前よりスピードが上がったと感じてます.それによって,案件を進めていくスピードが上がったので,色々と試行錯誤できる時間を確保できるようになったと思います.
また,Kaggle で有効な手法を製品へフィードバックすることも進めているので,自分自身だけでなく会社へも還元できつつあるのかなという感じです.
一方で Kaggle が楽しすぎて,仕事中でもコンペのことが気になって手を動かしたくなったり,休日だいたい費やしてるので出不精になったりしてます笑
Twitter でも書きましたが,良くも悪くも世界中の人たちと競い合って評価されるので,負けたくない精神は会社でも発揮されてます!
人との繋がり
Kaggle を始めてから,もくもく会や勉強会に参加する頻度が増えたかなと感じてます.大体最後には懇親会があるので,コンペの話や仕事の話で盛り上がって色々と情報交換が出来ていて楽しい限りです.
あとは,コンペ終了後の反省会に参加することでコンペでの苦しみなどを共有できるのも良いコミュニティーだなと思います.そういった場で社内以外のデータサイエンティスト・機械学習エンジニアの方々とお話しできるのは非常に良い刺激になります.自分が知らないことを知ってる人がめっちゃいるので,勉強になりまくりです.
前々から社外での繋がりを増やしたいと思ってたところで Kaggle という共通の話題があるので,比較的話がしやすい環境ができて Kaggle 様様です.もっと Kaggle での繋がりを増やして,お互い切磋琢磨できる環境に持っていきたいですね.
おわりに
まだまだ半年しか経っていないですが,濃い経験や知見を Kaggle を通して得られているので,これからも継続していきたいです!
人との繋がり的には,もう少し仕事面でも色々と相談できる関係性を作って,どんなことをやっててどうゆう課題や問題意識があるかとか聞いてみたいです.
あとは幸いにも,勉強会で知り合った方とコンペでチームを組んで頂けるようになったので,次はチームで参加する楽しみも味わいます!
最後に Kaggle では、まさに以下の話を体現できるのではと思ってます!
頭で理屈をわかったところで,体感を伴わない知識は活用できない(ハリガネサービス)
P.S. DSB コンペでメダルを獲得します!
参考
- [1] Kaggleで使えるFeather形式を利用した特徴量管理法
- [2] データ分析コンペで使っているワイの学習・推論パイプラインを晒します
- [3] hakubishin3/kaggle_ieee