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

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

 

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

 

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

アクセンチュア株式会社

データドリブン・コンサルタント/データからコンサルティングを主導するポジション
年収 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の他のサンプルを例にしながら勉強を進めていきます。

タイトルとURLをコピーしました