Update 2023.12.09 2020.01.13

機械学習 ベストプラクティス 「Kaggle」の『Titanic』
LightGBM.LGBMClassifier,Kerasニューラルネットワーク
最強の グリッドサーチ 5x2 クロスバリデーション
EDA(Exploratory Data Analysis)と特徴量エンジニアリングの典型を紹介

前処理はKaggleにある『Titanic Data Science Solutions』をそのまま流用

Kaggleで上位に入るためには,前処理もモデリングもある決まったスタイルがあります。KaggleのTitanicにある一番有名なサンプルコードを下に添付しました。ベストプラクティスです。モデリングは,Kaggleで上位を狙えるLightGBMとKerasニューラルネットワーク(Dense2層)です。

動作確認したJupyter Notebookとそれをhtml化したものが左上隅からダウンロードできます。htmlを下に添付してあるのでそのまま読めます。

本モデルの特徴は,下に添付の.ipynbファイルに書いてあります。


(2023-12-09 Python3.10.9(GPUマシン)で動作確認済み)


◆◆Kaggleとは◆◆

◆◆Kaggleは機械学習の道場◆◆

Kaggleはデータサイエンティストなら知らない人はいないくらいの機械学習のコンペです。Kaggle社は2010年に設立されて2017年にはGoogleの傘下になりました。

2020.01.13現在,コンテスト数は370,データセット数は約2万です。Activeなコンテストは14件で,2~3か月程度で締め切られます。優勝者には賞金がでます。百万ドルも珍しくありません。

コンテストは個人または数人のチームで参加します。日本からも無償で簡単に参加できます。私はGoogleアカウントでログインしています。 コンテストの成績の上位1パーセントがmasterと呼ばれ,IT企業(DeNAなど)にすぐ就職できるくらいすごい資格です。機械学習の腕だめしにはぴったりで「AI道場」と言われています。

KaggleのCompetitionsのHPはここです。
https://www.kaggle.com/competitions
『Competitions New to Kaggle? Start here!』

◆◆Kaggleの課題は企業が本当に解決したい問題,賞金も高額◆◆

Kaggleのコンテストのテーマは企業から提供され,架空の課題ではなく企業が本当に解決したい課題がテーマになっています。賞金も多額なことから参加者は本気モードでコンテストに参加してきます。実際に有用な解決策が多く提案されています。

コンテストのテーマは過去370もあり,内容をよく読んでいくと自分の課題に近いものがけっこうみつかります。そしてCodeタブには有志がアップしたサンプルコードとその解説があるのです。前処理とモデルをマネできるものがきっとみつかります。

◆◆KaggleからEDAと特徴量エンジニアリングを学ぶ,Titanicに限らず◆◆

さて,コンテストTitanic(上のHPの最初にあります)ですが,かなり前に締め切られたものですが,特別扱いにより今でも submit ができて順位も知らされます。 https://www.kaggle.com/c/titanic
『Titanic - Machine Learning from Disaster』

コンペの内容は,生死が判っている891人のtrain dataから,生死が不明の418人のtest dataの生死を予測するというものです。特徴量(説明変数)は11です。いわゆる二値分類の課題です。data setはDataタブにあります。

◆◆Titanicをsubmitしよう。すぐ自分の順位が判ります◆◆

submitはLeaderboardタブででき,全員の順位と自分の順位が判ります。

実際にKaggleに参加するときはOverviewタグに課題がありますが,いきなりコードを書き始めることはしないで,他の参加者のコードを参照します。それはCodeタブにあります。参照したコードをJupyter Notebookでrunさせて結果をsubmitしてください。成績はそんなに上位にいかないはずです。その理由は前処理を少し手抜きしてモデルは平凡なのもを採用しているからです。まだ締め切られていないactiveなテーマでは成績が上位のものをそのまま開示するわけがありません。それでも十分に参考になります。

TitanicのCodeタブでFiltersをMost Votesにして1番目にあるものは7千人以上から参照されていて役立つようです(2021-04-09現在)。
https://www.kaggle.com/startupsci/titanic-data-science-solutions
『Titanic Data Science Solutions』

サンプルコードの大半は前処理です。前処理は単純なデータ加工や特徴量エンジニアリングなどがあります。特徴量エンジニアリングとは簡単に言ってしまえば,特徴量を減らしたり増やしたりその意味付けを変えたりすることです。そしてモデルが受け付けるデータの種類に変換します。

特徴量エンジニアリングのテキストはほとんどなく経験工学みたいなものです。ツールは pandas や numpy などです。 Titanicに限らずKaggleのCodeタブにあるサンプルコードはEDA・特徴量エンジニアリングの勉強の参考になるのです。

上に紹介したCodeタブのサンプルコードのモデルはそのまま採用しても良い成績は得られませんが,Kaggleにsubmitするための形式の作り方のコードがありますので参照してください。

モデルは自前のものを使います。典型例としてLightGBM GridSearchとDNN ニューラルネットワークをJupyter Notebookでrunさせたものをhtml化して下に添付します。

sickit-learnにあるモデルで良い成績がえられるのはランダムフォレストや勾配ブースティングの決定木の仲間です。それ以上に可能性があるのはLightGBMとDNN ニューラルネットワークです。

それでもそれを使うだけでは簡単には成績上位10パーセントに入ることはできません。EDA・特徴量エンジニアリングとモデルのパラメータチューニングが効きます。

ちなみに,テーマが画像であればディープラーニングの一択です。

特徴量エンジニアリングの全体像を上手くまとめたものが次のサイトにあります。76枚のスライドです。
https://www.slideshare.net/HJvanVeen/feature-engineering-72376750
『FEATURE ENGINEERING』

LightGBM GridSearchの詳細な解説は本Webサイトの別記事を参照してください。


◆◆『Titanic Data Science Solutions』をJupyter Notebookで動作させる◆◆

実際に動作するJupyter Notebookのhtmlを下に添付します。Jupyter Notebookと下のhtmlを左上隅からダウンロードできます。ファイルinputとoutputのディレクトリを正しくしてください。.ipynbファイルがあるフォルダと同列です。「../input/」「../output/」がフォルダの位置を示しています。

Python3 on Jupyter Notebook(拡張子.ipynb)on GPU


トップページに戻る
inserted by FC2 system