1. HOME
  2. ブログ
  3. IT技術
  4. Kaggler がよく使う「LightGBM」とは?【機械学習】

Kaggler がよく使う「LightGBM」とは?【機械学習】

LightGBMとは?

LightGBM は、2016年に米マイクロソフト社が公開した勾配ブースティングに基づく機械学習手法です。

公開されてまだ3年足らずですが、「Kaggler」の上位6割以上が LightGBM を用いているという集計結果が報告されています。

これは、データサイエンティストとして、「知らなかった」では済まされません。

LightGBM を実装できるようになり、ステップアップしていきましょう!

それでは、計算原理から実装まで、順を追って説明していきます。

こちらの記事もオススメ!

LightGBM の計算原理

LightGBM 公開前の勾配ブースティングは、「XGboost」が主流でした。

勾配ブースティングには、「予測精度は高いが、計算時間が長い」という特徴があります。

当時、勾配ブースティングの主流であった「XGboost」に対し、LightGBM の「予測精度を保ったまま計算時間を大きく削減できる」という特徴に注目が集まり、急速に広まりました。

LightGBM では、計算時間を削減するために色々な工夫がなされており、XGboost と比較すると以下の2点が大きく異なります。

計算時間削減のための工夫(その1)

1点目は、「Level-wise」から「Leaf-wise」に変更されている点です。

出典:https://lightgbm.readthedocs.io/en/latest/Features.html

「Level-wise」は、各層ごとに一括で決定木の分岐を行います。

その一方、「Leaf-wise」は、分岐させるべき葉に絞って分岐を行います。

葉の数が減ることで、計算時間が短くすることができます

計算時間削減のための工夫(その2)

二点目は、「葉の分岐点を探す際にヒストグラムを採用している」という点です。

これまでは、すべてのデータを読み込んで分岐点を探していました。

この読み込み時間に占める割合が非常に多いのですが、ヒストグラムで分岐点の狙いをつけることで、高速処理が可能となりました。

このように葉の数を減らし、葉の生成時間を短くすることで、計算時間が大幅に短縮されました。

それでは、LighGBM の実装に移ります。

LightGBM の実装

LightGBM ライブラリのインストール

まずは、AnacondaPrompt から LightGBM ライブラリをインストールします。

または、jupyternotebook からインストールしましょう。

これでインストールは完了です!

コードの実装

次に、必要なライブラリを読み込みます。

今回は、「ボストン住宅価格」のデータセットを用います。

データセットを確認し、正しく結合できていることを確認します。

ボストン住宅価格のデータセット

ボストン住宅価格のデータセットの詳細

CRIM犯罪発生率(町毎の一人当たりの犯罪率)
ZN住宅区画の割合(25,000 平方フィート以上)
INDUS小売業以外の商業が占める土地面積の割合
CHASチャールズ川沿いかどうか (ダミー変数 1: 川沿い  0: それ以外)
NOX窒素酸化物の濃度(pphm)
RM1戸当たりの平均部屋数
AGE1940年よりも前に建設した物件の割合
DISボストンにある5つの雇用施設までの重み付き距離
RAD環状高速道路へのアクセス指数
TAX10,000ドル当たりの固定資産税の割合
PTRATIO町毎の生徒と教師の比率
B1000(Bk – 0.63)^2 の値。Bkは町毎の黒人の割合。
LSTAT低所得者の割合 (%)
Price家賃

上表がデータセットの詳細です。

家賃を目的変数とし、それ以外を説明変数とします。

訓練データとテストデータに分割

次に、「訓練データ」と「テストデータ」に分けます。

LightGBMは、専用のデータセットに入れることで処理速度が上がります。

今回の評価基準は、RMSE としています。

回帰結果の確認

LightGBM の回帰結果を確認します。

精度良く予測できていることが分かります。

結果から分かるように、データ数が少ない部分はどうしても精度が下がってしまいます。

特徴量の重要度の確認

次に、特徴量の重要度を確認します。

上位3項目がボストンの家賃に関わるのは、納得ができると思います。

このことから、違和感のないモデルができていると判断できます。

決定木の可視化

次に、決定木を確認してみます。

決定木を見ることで、リバースエンジニアリングに繋がることはあまりありません。

ここから先は、「graphviz」のインストールが必要となりますが、興味のある方は調べてみてください。

LightGBM の決定木が「Leaf-wise」となっていることが確認できました。

重要度の高い特徴量が先頭に集まっていることが確認できます。

XGboost との比較

最後に、上記データを用いて「LightGBM」と「XGboost」を比較しました。

回帰モデル予測精度(RMSE)計算速度
LightGBM3.283275 ms
XGboost3.768355 ms

今回は、計算時間に大きな差が出ませんでしたが、データ数が少ないためと考えています。

数万行を超えるデータの場合は、分単位で差が出ることを確認できているので、皆さんもぜひ試してみてください!

さいごに

以上となりますが、どうだったでしょうか?

簡単なコードで強力な回帰ツールを扱うことが可能となるので、各自、色々なデータに使ってみてください。

今回は、ハイパーパラメータにデフォルト値を使っています。

ブースティング系は、ハイパーパラメータの調整による精度向上分は小さいと言われており、特徴量追加等が有効であると言われています。

インターネットなどで調べると、色々な工夫が出てきますので、理解を深めていただければと思います。

(株)ライトコードは、WEB・アプリ・ゲーム開発に強い「好きを仕事にするエンジニア集団」です。
機械学習でのシステム開発依頼・お見積もりはこちらまでお願いします。
また、機械学習系エンジニアを積極採用中です!詳しくはこちらをご覧ください。

※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

こちらの記事もオススメ!

今日の1冊

作ってわかる! アンサンブル学習アルゴリズム入門
作ってわかる! アンサンブル学習アルゴリズム入門

 

関連記事

書いた人はこんな人

ライトコード社員ブログ
ライトコード社員ブログ
「好きなことを仕事にするエンジニア集団」の(株)ライトコードです!
ライトコードは、福岡本社、東京オフィスの2拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もりは大歓迎!
また、WEBエンジニアとモバイルエンジニアも積極採用中です!

ご応募をお待ちしております!

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア