Kaggle&競プロ紹介 in 中田研究室
@東京工業大学 工学院 経営工学系 水野・中田研究室
Takami Sato
2017/11/22Kaggle&競プロ紹介 1
Kaggleとは?
2017/11/22Kaggle&競プロ紹介 2
• 与えられたデータに対して予測スコアを競う
• コンペ中に見れるデータの大体25%を使ったPublic LBと
コンペ後に最終順位を決める大体75%を使ったPrivate LB
現行Featuredコンペ紹介 (口頭)
2017/11/28Kaggle&競プロ紹介 3
Kaggleとは?
2017/11/22Kaggle&競プロ紹介 4
議論を行うDiscussionや
Kaggleとは?
2017/11/22Kaggle&競プロ紹介 5
PythonやRが実行出来るKernelが存在
http://blog.kaggle.com/2017/09/21/product-launch-amped-up-kernels-resources-code-tips-hidden-cells/
Kaggleとは?
2017/11/22Kaggle&競プロ紹介 6
Rankingがあって
世界中のデータサイエンティストが殴り合ってる
私がKaggle Masterです
2017/11/22Kaggle&競プロ紹介 7
Kaggle Masterって?
世界に900人ぐらい、
2017/11/22Kaggle&競プロ紹介 8
大体 Top10が1回と、Top 10%が2回必要
Top 10に入るのは本当に難しい
(Kernel MasterやDiscussion Masterはまた別)
Kaggle Masterここが凄い!
• 凄いところ!
– 就活に有利!
– どこに行っても話を聞いてもらえる
– 肩書で殴れる
• データ分析界隈必要スキルセットが曖昧なので諸々楽
• 凄くないところ!
– データ分析の仕事が出来るようになるわけではない
• よいKernelを作れる人は素質アリ
2017/11/22Kaggle&競プロ紹介 9
今日の内容
中田先生から非常にレベルの高い学生と伺ったので・・・
2017/11/22Kaggle&競プロ紹介 10
機械学習の初歩は飛ばして、
如何にコンペを戦ったか、
如何にスコアを上げたかを話します
主に参加したコンペ
• Bosch Production Line Performance, 15th
– センサー情報から製品ラインの不良品検知
• Quora Question Pairs, 17th
– ある質問とある質問が同じ意味かを予測
• Instacart Market Basket Analysis, 15th
– スーパーの再来訪時の再購入予測
2017/11/22Kaggle&競プロ紹介 11
Bosch Production Line Performance
2017/11/22Kaggle&競プロ紹介 12
センサー情報から製品ラインの不良品検知
Bosch Production Line Performance
2017/11/22Kaggle&競プロ紹介 13
センサー情報から製品ラインの不良品検知
一緒に参加したhskkskさんの資料から今日は抜粋
https://www.slideshare.net/hskksk/kaggle-bosch
Bosch Production Line Performance概要
2017/11/22Kaggle&競プロ紹介 14
• タスク
– センサー情報から不良有無の0-1予測
– センサー値と測定時間がデータ
• 評価指標(MCC)
データが不均衡
なときに有効な
指標
※閾値を決める必要アリ
特徴量
2017/11/22Kaggle&競プロ紹介 15
特徴を全部文字列と思って、
ハッシュ値の頻度を使用
通過時間とセンサー値の組
み合わせを考慮
NULLが非常に多いデータで
NULLのパターンを使用
Bosch Production Line Performance
• 学習器はxgboostを使用
• このコンペではDartが上手く働いた
• スタッキングやアンサンブルは試したけど、
上手く行かなかったのでシングルモデル
2017/11/22Kaggle&競プロ紹介 16
Quora Question Pairs
2017/11/22Kaggle&競プロ紹介 17
https://www.kaggle.com/c/quora-question-pairs
Quora Question Pairs
2017/11/22Kaggle&競プロ紹介 18
Quora Question Pairs
2017/11/22Kaggle&競プロ紹介 19
https://www.slideshare.net/tkm2261/quora-76995457
過去に話した資料から抜粋して話します
Publicスコアの推移
2017/11/29Kaggle&競プロ紹介 20
– ステージ0: doc2vecの時代 (LB:0.5)
– ステージ1: anokasさんカーネルの時代(LB:0.35)
– ステージ2: word一致系の時代(LB:0.30)
– ステージ3: Word Embeddingの時代(LB:0.25)
– ステージ4: NLP特徴の時代(LB:0.2)
– ステージ5: グラフの幕開け(LB: 0.13)
– ステージ6: 倦怠期(LB: 0.13)
– ステージ7: スタッキングの時代(LB: 0.122)
ステージ4までの特徴量
2017/11/27Kaggle&競プロ紹介 21
ステージ5: グラフの幕開け(LB: 0.13)
2017/11/22Kaggle&競プロ紹介 22
人生の夢のひとつが叶った!
2017/11/22Kaggle&競プロ紹介 23
Deep Learning系の特徴
無くても大丈夫だったが、手元では試していた
2017/11/22Kaggle&競プロ紹介 24
こんな感じでKernelでコードが共有されるので、
DNN興味あるけど手を出せてない人にKaggleはオススメ
Instacart Market Basket Analysis
2017/11/22Kaggle&競プロ紹介 25
買い物代行スーパーの再購入予測
評価指標
2017/11/22Kaggle&競プロ紹介 26
mean F1 score
※提出ファイル例
購買なしのNoneも商品として提出出来るのが特徴
特徴量
9割の特徴はBigQueryで作成
2017/11/22Kaggle&競プロ紹介 27
• ユーザ特徴
– 再購買率
– 訪問曜日割合
– ジャンル購買割合
– 来店間隔
– 最終来店からの日数
• 商品特徴
– 再購買率
– 曜日割合
• ユーザ×商品特徴
– ユーザ購買間隔
– 過去購買数
– 来訪時購買割合
– 購買間隔
– 過去購買日からの日数
– 同一カテゴリ購入からの日数
https://github.com/tkm2261/kaggle_instacart/blob/master/sql/
SQLは楽に分散大規模にデータを扱えるのでオススメ
F1 score最大化
ユーザに商品を推薦するタスクなので、スコアの足切が必要
2017/11/22Kaggle&競プロ紹介 28
引用元: Ye, N., Chai, K., Lee, W., and Chieu, H. Optimizing F-measures: A Tale of Two
Approaches. In ICML, 2012.
ICML2012の関連研究がFaronさんによって共有されて
皆のスコアが爆上がり
The 3rd Place Solution
2017/11/22Kaggle&競プロ紹介 29
• この人はほぼDNNだけで特徴を作成して3位
• 購買時系列に対してLSTMとWaveNetを適用
• TensorFlowで読み難いですが学習オススメ
• 私はKerasに移植して使用中
Kaggleで上位を狙うには
• 最低限の機械学習知識
– Cross Validationや評価関数
– 有名学習器の概要やハイパーパラメタ
• データに向き合う
– GBDTの登場やスタッキング等の技術が共有されて、
近年モデル面ではほぼ差がつかない
– 大差がある場合は特徴に気づけていないので頑張る
– あらゆる角度からデータを眺める
• 長期戦を意識する
– 大体3ヵ月戦うので、結構再現性を失う
– コード管理や品質に気を配る
– 根を詰めすぎずに楽しむ
2017/11/22Kaggle&競プロ紹介 30
そもそも始め方がわからない人には。。。
2017/11/22Kaggle&競プロ紹介 31
Kaggle入門動画作ったから見てね
https://youtu.be/NHQTw-ORcSQ
Kaggler Slackもあるよ
2017/11/22Kaggle&競プロ紹介 32
https://kaggler-ja.herokuapp.com/
おっさんからのアドバイス
• 経営工学みたいなチャラい字面の学部出身のエンジニアは
どこかで身の証を立てる必要がある
– Kaggleや競技プログラミング等
• ハッタリでOK。それで仕事とって経験積ば勝ち
– 文系ウェーイ勢と同じ仕事をしますか?
– メーカーに入っても生産管理系は閑職だったりする
• 国際学会に投稿しよう
– 経営工で取れるMEngはMSと異なり、研究能力があるとみなされない
– リジェクトされてもarXivにあげておけば、
『英語でResearch活動が出来る』証明になり学位よりも役立つ
– Kaggleもいいけど大学にいる間は研究のほうがコスパ高い
• 英語をやろう
– 年収が倍になる
– 上達に時間がかかるので早いうちから
– とりあえずTOEFLかIELTSを受けよう
2017/11/22Kaggle&競プロ紹介 33
競技プログラミングの紹介
私は初心者ですが、前職は競プロガチ勢が多かったので紹介
2017/11/22Kaggle&競プロ紹介 34
• TopCoder
– 言わずと知れた有名所
– TopCoder SRMに参加してスコアが上下
– ただし近年活動が停滞しており、存在が危ぶまれている
• Codeforces
– ロシアの競技プロサイト
– 現状一番有名なのでとりあえず始めるならここ
– 2週間に一回ぐらいで2時間ぐらいのコンテストが開催
• AtCoder
– 日本の競技プロサイト
– 日本語なのとサイトが安定
• Google Code Jam
• CS Academy
• CodeChef
• Yukicoder
競プロの種類
• 普通のコンテスト
– 1~2時間で3~5問ぐらいを解く
– 速く解くほど高得点
– DFS, BFS, DP, Queue, Stuck, Priority Queue, BTree等の
アルゴリズムやデータ構造に詳しくなれる
– 最初は『for文使える?』 ぐらいの難易度で始まるので安心
• マラソンマッチ
– 数週間で問題のスコアを競う (ゲームAIを作る等)
– 長期間戦うのでクラス設計なども重要
– 最適化の研究室にいるなら挑戦してみてはどうか
2017/11/22Kaggle&競プロ紹介 35
おわり
2017/11/22Kaggle&競プロ紹介 36
https://www.slideshare.net/OwenZhang2/tips-for-data-science-competitions
Owen Zhang氏の資料より金言

Kaggle&競プロ紹介 in 中田研究室