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冊

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

 

関連記事

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

関連記事