データサイエンス&サイバーセキュリティ備忘録

Python, Data Science, Kaggle, Cyber Security, CTF, などなど

Kaggle Days Tokyoに参加しました

2019年12月11日と12日の2日間、"Kaggle Days Tokyo"に参加してきました。

kaggledays.com

Kaggle Daysとは、 2018年から始まった、年に4~5回行われるKaggleのオフラインイベントです。

会場となる国・地域はイベントごとに異なり、今回は東京で開催されました。

公式サイトのアジェンダにある通り、11日(Day 1)はKaggleのGrandmasterやMasterの方々によるプレゼンテーションとワークショップ、12日(Day2)はKaggle Days Tokyoの参加者のみが参加できるオフラインコンペティションが行われました。

Day 1

Day 1では、Kaggleのコンペで使えるテクニックを中心に紹介してくださいました。

発表中やワークショップの最中は、聞きながらメモを取るのに必死。

Kaggleは1年ほど前にフリーランスアルバイトの研修で使用していたため、アカウントは持っていましたがコンペに挑み始めたのは今年の10月だったので、どのプレゼンテーションも為になるものでした。

私が聴講(参加)したプレゼンテーションとワークショップを、いくつかまとめようと思います。

Tutorial on Model Validation and Parameter Tuning by Raja Iqbal
  • Kaggleにおいてのtrain/test dataの定義
  • overfittingは、generalizationが不足しているときに起きる
  • train/test dataで正確に予測できても、overfittingは起こりうる
  • overfittingを防ぐために、パラメーターチューニングをする
  • Kaggleにおいて、一般的にはtrain dataの70%をモデル作成のために、残りの30%はモデル評価のために使う
  • bias/variance tradeoffについてのディスカッション
  • High biasは、underfittingを起こす
  • High varianceは、overfittingを起こす
  • パラメーターチューニングと、交差検証の方法の紹介
Joining NN Competitions (for beginners) by Tomohiro Takesako
  • NNコンペの取り組み方 (コンペの選択→ベースライン作成→改良)
  • 純粋に興味がある画像コンペを選ぶのがいい
  • beginnerは、時間をかけてでもベースラインを作り上げるのが大事
  • augmentationは目視で注意深く確認
  • モデル改善のために、まずはvalidationを確立させる
  • スコアが変わる原因を突き止めるために、random seedは固定する
  • スタンダードなやり方を知るために、論文やKaggleのdiscussion、他の人のnotebookを読んで勉強
Imputation Strategy by Yuji Hiramatsu
  • 統計学的に欠損値の発生の仕方は、MCAR (Missing Completely At Random)、MAR (Missing At Random)、NMAR (Not Missing At Random) の3パターン
  • 欠損があるデータは削除するという、LD (Listwise Deletion)、PD (Pairwise Deletion) の2パターンの方法があるが、統計学的には推奨されない
  • 欠損値補完の方法として、単一代入法、多重代入法の2パターンがある
  • XGBoostはNAを活かして予測できる
How to Encode Categorical Features for GBDT by Ryuji Sakata
  • カテゴリ型のデータをエンコードする方法として、主に3種類
  • one-hot encodingは、線形回帰でよく使われる
  • label encodingは、GBDTで使われる
  • target encodingは、out of foldでエンコードするのが良いが、foldの数が多いと過学習を起こす
  • 他のエンコードの方法として、feature hasing、frequency encoding、embeddingなどがある
  • one-hot encoding、label encoding、target encoding、LGBMのcategorical feature supportを、num_leavesの数ごとで比較
  • num_leavesの数ごとに、精度の良いモデルが違う

以下は、プレゼンターの方々が共有してくださったスライドのリンクです。

Imputation Strategy by Yuji Hiramatsu

How to Encode Categorical Features for GBDT by Ryuji Sakata (Jack)

Feature Engineering Techniques & GBDT implementation by Daisuke Kadowaki

My Journey to Grandmaster: Success & Failure by Jin Zhan

Day 2

Day 2では、日経電子版のデータを使用して、ユーザの年齢を予測するというコンペが行われました。

hack.nikkei.com

Day 1の終了後、Twitter上でチームを組んでくれるという方に出会い、一緒にコンペに挑むことに。

初対面の方とのコンペは初めてでしたが、次第に仲良くなり、モデル作成方法や特徴量エンジニアリングに悩みつつも、楽しく参加することができました!

コンペ終了後は、1位~3位の表彰式と各チームがどのように予測したかを知ることができ、とても勉強になりました。

ちなみにですが、Day 2では運営の方のアナウンスもあって、全員KaggleのTシャツを着て参加しました!

f:id:a7xche:20191221001740j:plain

 

Celebration Party

その後はパーティが開かれ、他のKagglerの方たちと交流する良い機会となりました。

食事として、可愛いカップケーキもありました!

f:id:a7xche:20191220231457j:plain



Twitter上で繋がった方とも直接お話ができ、楽しかったです :)

また、Kaggleで勝つデータ分析の技術(通称:Kaggle本)を持参し、著者であるthreecourseさん、Jackさん、Maxwellさん(私の名前入りで!)からサインを頂きました!

パーティが終わった後も、Kaggle本の著者の方々を含めたKagglerの方々に、Kaggleの勉強法を中心に色々なお話を聞くことができました。

最後に 

Kaggleのイベントは初めて参加しましたが、Kagglerの皆さんは優しい方ばかりで、Kaggle新参者の私にも基礎的なお話を含めて様々なことを教えてくださいました。

プレゼンテーションとワークショップで学んだことをKaggleのコンペで取り入れて、自分のスキルとして身につけたいです。

この先もKaggleの勉強を頑張り、メダルを目指したいと思います!