1. 難しそう!けど慣れると簡単、初めてのlightgbmモデル構築

「機械学習」「モデル構築」、難しそうですよね。検索してみると多くの情報が見つかります。アルゴリズムや数式で理論まで教えてくれている親切な記事が数多くあります。

でも、「初めてモデルを構築してみたい!」という方にとっては難しそうで敷居が高くないですか?

この記事では小難しいことはすっ飛ばして、いきなりモデルを構築してみます。

モデルを構築するだけならとても簡単です。

2. 事前準備

Pythonの仮想環境を作成します。前回記事で詳細を説明していますのでそちらをご参照ください。

3. 追加のパッケージのインストール

モデルを構築するにあたって、2つのパッケージをインストールします。

Terminal
pip install sklearn
pip install lightgbm

sklearnは機械学習のためのパッケージです。このパッケージの中で分析データが提供されているので、こちらのデータを使用してモデルを構築してみます。

lightgbmは分析手法です。世の中には分析手法が数多くあります。今回はとりあえずlightgbmを使用してモデルを構築します。

とりあえずとはいってもとても強力な分析手法ですのでとりあえずlightgbmでモデルを構築してしまえばそれなりのものが出来てしまいます。他の分析手法を試す必要性に疑いを感じるほどです。

4. 分析データの準備

sklearnのfetch_covtypeというデータ・セットを使用します。

土壌のさまざまの情報から生えている木を分類するためのデータ・セットです。

データ・セットは下記のようにすれば作成できます。

example.py
from sklearn.datasets import fetch_covtype

X, y = fetch_covtype(return_X_y=True)

これでデータの準備は完了です。簡単ですね。

5. モデルの構築まで

たった数行でモデル構築が完了します。

example.py
from sklearn.datasets import fetch_covtype
from lightgbm import LGBMClassifier

X, y = fetch_covtype(return_X_y=True)
clf = LGBMClassifier()
result = clf.fit(X, y)

とても簡単ですね。

6. あともう一歩すすんで、検証データを用意して精度を確認する

モデルを構築することが簡単にできました。これでは物足りない方はもう一歩進んでモデルの精度を確認してみましょう。

モデルの精度を確認するためには学習データと検証データを用意します。

なぜ検証データが必要なのか?興味がある方は検索してみてください。この記事はモデル構築を試してみることが趣旨ですので詳細な説明を省略します。

ここでは、20万件のデータを学習データ、残りを検証データに分割しています。

example.py
from sklearn.datasets import fetch_covtype
from sklearn.metrics import log_loss
from lightgbm import LGBMClassifier


N_train = 200000

X_train = X[:N_train, :]
X_test = X[N_train:, :]
y_train = y[:N_train]
y_test = y[N_train:]

clf = LGBMClassifier()
result = clf.fit(X_train, y_train)
pred = clf.predict_proba(X_test)
log_loss(y_test, pred)

精度が確認できました。log_lossが精度を計算する関数。predict_probaが予測値を計算するメソッドです。細かいことは後から調べれば良いのです。とにかくこれでモデル構築から精度確認までできました。

7. 今後の応用のために情報を整理

さて、ここまでで簡単にモデルを構築することができました。今後は別のデータに対してモデルを構築したくなります。

別のデータでモデルを構築するときに意識することを整理します。

問題の種類
  1. 回帰

  2. 2値分類

  3. マルチクラス分類

精度指標
  1. rmse

  2. roc

  3. log_loss

  4. etc..

上記によってコードが少しずつ異なってきます。例えば、回帰問題の場合は

「LGBMClassifier」を「LGBMRegressor」

に変更します。

そして、問題の種類に応じて精度指標も変わります。2値分類の場合は精度指標でrocを使用されることが多いのでlog_lossをrocに変更する

など変更が生じます。

でもプログラムの大きな流れは変わりません。今回の記事の内容を試しておけば、別のデータの場合には少しだけの変更で対応できます

8. まとめ

今回はモデルを簡単に構築してみました。一度試してしまえば良く分からないために生じる恐怖感も薄れます。 大事なのはまず試してみることです。

この記事で実際に試してくれる方がいるとしたら幸いです。

今回は以上です。