ねほり.com

何もないから何かみつかる

Kaggle の Titanic Prediction Competition でクラス分類(XGBoost、LightGBM、CatBoost編)

      2020/02/13

機械学習に精通し適切にデータを分類できるだけではなく、膨大なデータから課題を発見しソリューションを提示してリードできる

 

データドリブン・コンサルタント

 

が、市場に求められています。

アクセンチュア株式会社

データドリブン・コンサルタント/データからコンサルティングを主導するポジション
年収 800万~2000万円

【必須(MUST)】
・コミュニケーション力(経験に囚われず)企画や新しいことをやりたい意欲
・統計解析やアナリティクスツールを使ってデータ分析からビジネスプランニングをした経験
・R/Python/SAS/SPSSなどのアナリティクスツール使用経験

【歓迎(WANT)】
・クライアントフェイシングで業務にあたった経験
・プロジェクトマネジメント経験

データ分析に強くて課題解決能力も高い人材を目指したいです。

 

 
「勾配ブースティング決定木」がKaggleコンペで勝利に貢献し続けているそうです。

調べて試してみました。

勾配ブースティング決定木(Gradient Boosting Decision Tree)

勾配ブースティングは注目度の高い機械学習手法であり、今日のデータ分析競技には必須とも言える存在です。

[引用] 決定木の2つの種類とランダムフォレストによる機械学習アルゴリズム入門

「勾配ブースティング」って何?

アンサンブル学習の一つ。
ブースティングの一つ。
クラス分類手法・回帰分析手法は何でもよいが、基本的に決定木を用いる。

「アンサンブル学習」って何?

多数決をとる方法。
個々に別々の学習器として学習させたものを融合させる事によって、未学習のデータに対しての予測能力を向上させるための学習

「ブースティング」って何?

学習データの情報を全て使うのでなく、その一部を使用して学習し、最後に結合させる方法。
ただし、以前に使用したデータを再利用してブーストするため、バギングのように並列処理は不可能。

「決定木」って何?

条件分岐によってグループを分割して分類する手法。
その際にグループがなるべく同じような属性で構成されるように分割する。

「バギング」って何?

アンサンブル学習の主流な方法の1つ。
学習データの情報を全て使うのでなく、その一部を使用して学習し、最後に結合させる方法。

「勾配ブースティング決定木」のフレームワーク

「XGBoost(2014年)」や「LightGBM(2017年)」「CatBoost(2017年)」が有名。

機械学習のコミュニティで世界的に有名なKDnuggetsによると、Kaggleで上位ランキングを取った半数以上もの勝者が「勾配ブースティング」を使った実績があると報じている。

[引用] LightGBMの解説

「XGBoost」を試してみる

XGBoostとは,先程のGradient BoostingとRandom Forestsを組み合わせたアンサンブル学習です。

インストール

Python3.6だとpip installできませんでしたが、Python3.8をインストールしたらXGBoostをインストールすることができました。

利用方法

使い方は簡単です。

「LightGBM」を試してみる

LightGBMとは決定木アルゴリズムに基づいた勾配ブースティング(Gradient Boosting)の機械学習フレームワークです。

LightGBMは米マイクロソフト社がスポンサーをしています。

インストール

pip でインストール可能です。

利用方法

使い方は簡単です。

学習用パラメータを記載するとすると次のようになります。

「Catboost」を試してみる

CatBoost は学習にかかる時間が LightGBM や XGBoost に劣るものの、特にカテゴリカル変数を含むデータセットの扱いに定評があるアルゴリズムです。

2017年7月に、ロシアのGoogleと言われているYandex社から公開されました。

インストール

pip でインストール可能です。

利用方法

使い方は簡単です。

学習用パラメータを記載するとすると次のようになります。

Kaggle の Titanic Prediction Competitionで試した結果

精度・正解率ともに「CatBoost」「LightGBM」「XGBoost」の順に高いです。

特徴量の重要度をプロット

ランダムフォレストに代表される決定木ベースのアンサンブル分析器では、特徴量の重要度を算出することができます。

「LightGBM」の例です。

次のように出力されます。

「Fare(運賃)」「Age(年齢)」を重要視して分類していることが可視化されました。

「Sex(性別)」「Age(年齢)」が重要だと思っていたので意外です。

ソースコード

前回」のコードを借用し、importとclf_names 部分を修正しています。

こちらも簡単です。

まとめ

完全にブラックボックスで利用していますが、学習モデルのトレンド含めて一通りは紹介しました。

今後は、パラメータ調整や理論を少しずつ理解しつつKaggleの他のサンプルを例にしながら勉強を進めていきます。

 - 2019年(社会人15年), 機械学習, テクノロジー

  関連記事

JSのグラフライブラリ・アニメーションライブラリの現状トレンド

JSライブラリは多種多様に存在する。 グラフィックライブラリのトレンド グラフィ …

2009年テニス納会用に作成した動画

2009年10月30日(金) 残念な感じです・・・V 先週末は、寮でカップラーメ …

printf関数が自作できないと「C言語が書ける」と言うなかれ

2005年07月10日(日) C言語 プリンタを購入。やっぱ必要になりました・・ …

cosisin氏のダウ逆張り改良ドドンパ(待ち)の有効性検証(システムトレード)

9月30日は台風18号が原因で飛行機は午後からは飛びませんでした。 また、午前便 …

MSX : 超戦士ザイダー バトルオブペガスの攻略方法

MSXとは? 「MSX」と言うコンピュータをご存知だろうか?  &nb …

KaggleのHome Credit Default Risk体験(サブミット編)

ビッグデータ分析、新卒年収は1000万円以上 東大生の人気職種に(産経新聞) 「 …

HTML5 canvas+JavaScriptでオセロ作成

2011年11月27日(日) HTML5 canvas+JavaScriptでオ …

Raspberry Pi3でScratch1.4を動かしゲームを作ってみる(小学生にプログラミング教育は必要?編)

今年(2020年)より小学生でのプログラミング教育が必修化されます。 既に201 …

DellのVistaマシンのマザーボードの故障

2009年11月29日(日) 修理は二週間かかるそうです 動画編集で購入したDe …

Kerasを使った株の利益を計算(ディープラーニング)

PytorchはLSTMが難しいらしいし、TensorFlowも難しいので未挑戦 …