comet で実験管理!(lightGBM編)

comet

 前回の記事で、cometという機械学習における実験管理ができるツールを紹介しました!
 今回の記事は、その続きとして実際にLightGBMを用いて実験管理をするまでをまとめていきたいと思います!

スポンサーリンク

準備

install

pip install でインストールできます!
pip install comet_ml

アカウント登録

 cometを使うためには、アカウント登録が必要です。個人利用の場合は無料で使えるので、下のリンクからcometのホームページに飛んで、右上の「Sign Up」からアカウントを登録してください!
https://www.comet.ml/

APIキーを取得するためにも必要です!!

今回使用するデータの取得

 train,testデータをそれぞれ取得してください!

wget https://raw.githubusercontent.com/microsoft/LightGBM/master/examples/regression/regression.train -qq
wget https://raw.githubusercontent.com/microsoft/LightGBM/master/examples/regression/regression.test -qq
スポンサーリンク

LightGBM で comet活用

cometの設定

cometを使えるようにする設定は基本的にこの設定で十分です!

from comet_ml import Experiment

experiment = Experiment(
    api_key="*********",
    project_name="********",
    workspace="*****",
    auto_metric_logging=True,
    auto_param_logging=True,
    log_graph=True,
    parse_args=True,
)

1つずつ順番に説明していくと、

import

from comet_ml import Experiment

APIキーを含むプロジェクトごとの設定

cometの設定の核となる部分です。API keyの設定と、project_name(どのプロジェクトに属するかの設定)、workspace(アカウントを作ったときの名前)を設定します。ここまでは、lightGBMに限らず、comet共通の設定です!

experiment = Experiment(
    api_key="*********",
    project_name="********",
    workspace="*****",
)

LightGBM 実験を行うパラメータの設定

 LightGBMでの主な設定項目は4つあります!いずれもデフォルトでは Falseとなっているので、必要なものをTrueにして使っていきましょう!

1. auto_metric_logging

評価指標として設定したもののログを自動で取ってくれる!

2. auto_param_logging

パラメータのログを自動で取ってくれる!

3. log_graph

モデルのグラフ表現のログを取得

4. parse_args

コマンドライン引数のログを取得

LightGBMのコード

 機械学習の学習部分には、設定は必要なくここまでにした設定のもとでコードを以下のように書いていくとそのまま comet のページにログが取られていきます!
 はじめに1回設定しておけば、その後は実行の度に自動的にログを取ってくれる+そしてそれらの結果をGUIで比較できる!という点は良いですよね!!

import lightgbm as lgb
import os
import pandas as pd
from sklearn.metrics import mean_squared_error

dirname = './'
df_train = pd.read_csv(os.path.join(dirname, "regression.train"), header=None, sep="\t")
df_test = pd.read_csv(os.path.join(dirname, "regression.test"), header=None, sep="\t")

y_train = df_train[0]
y_test = df_test[0]
X_train = df_train.drop(0, axis=1)
X_test = df_test.drop(0, axis=1)

lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train)

params = {
    "boosting_type": "gbdt",
    "objective": "regression",
    "metric": {"rmse", "l2", "l1", "huber"},
    "num_leaves": 31,
    "learning_rate": 0.05,
    "feature_fraction": 0.9,
    "bagging_fraction": 0.8,
    "bagging_freq": 5,
    "verbosity": -1,
}

gbm = lgb.train(
    params,
    lgb_train,
    num_boost_round=20,
    valid_sets=lgb_eval,
    valid_names=("validation"),
    early_stopping_rounds=5,
)

y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)
print("The rmse of prediction is:", mean_squared_error(y_test, y_pred) ** 0.5)

(コードはcometの公式ドキュメンテーションから引用(一部改変))

 学習結果は下記のようになりました!(このログをcometで取れているか?グラフ化できているか?をこの後見ていきます!)

file

comet で確認 !

実際に今回は評価指標として、"l1","l2","rmse","hunber"の4つであったので、それらについてそれぞれ学習過程を図示すると、このように画面で表示されています!!

file

file

コメント

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