機械学習

とてもゆっくりなKaggle【MLC#13】

こんにちは、チズチズです!

先日はKaggleのコードを見て解説をしようとしたのですが、中々上手くいかずに終わりました。

まずはパラメータ

クラスにXやyとかありますが、何が入っているかわからないので、クラス予備前に定義されてる変数等を見ていきます。

LightGBMのパラメータです。

パラメータの説明をします。

パラメータの名前詳細デフォルト値
learning_rate学習率0.1
n_estimatorsツリー数100
max_binbinの数255
subsampleサブサンプルの比1.0
subsample_freqサブサンプルの頻度0
closample_bytree反復する回数1.0
min_child_sample1枚の葉に含まれるデータの最小量20
seedシード(randomとかにも使われるとか…None
num_leaves1つの木の最大の葉の枚数31

 

LightGBM公式ドキュメント

今回は3回に分けてパラメータが設定されています。

さっき入れたデータを辞書型にしてモデルを構築させます。

ロジスティック回帰のモデルです。分類器を上のLightBGMで作ってからロジスティックで回帰させるのかなと思います。

クラス呼び出し

こっちがクラス呼び出し

こっちが呼ばれるクラスです。

クラス目的その他
n_splitsデータを分割させる個数base_modelの個数
stacker予測モデル
base_models分類モデル
fit_predict関数目的その他
Xtrainnumpy配列
ytrain_ynumpy配列
Ttestnumpy配列

クラス内

StartifiedKFoldは綺麗に分割してくれる関数です。カテゴリも均等になります。

foldsにはX, yを分割させたものが入ります。(連動

S_train, testにはtrain, testの行数xbase_modelの個数のゼロ行列が入ります。

最初のループ

S_test_i:testの行数x分割数 (ゼロ行列

clf:base_modelが1つずつ読み出される

i番目の列の行全てにS_test_iの平均を入れます。

わかってきた…

2回目ループ

folds(分割されたデータ)を1つ目から読み込みます。

holdoutは出力するものですからtestです。

print文でFitさせると表示させてからFitさせます。

clfは前のforにあったようにbase_modelが入ります。(分類モデル

そしてモデルにfitさせてからy_pred(データ精度確認用)にtrainデータの予測を入れてS_trainに入れます。

S_testにはtestデータを予測させてものを入れます。

クラス後半

トレインデータで予測させる検証を行います。

複数の機械学習ライブラリを一発で適応しちゃう方法

相互検証についてはこの記事がわかりやすかったです。

このcross_val_scoreはテスト用データとトレインデータ双方の精度を出せる便利ものです。(片方でも大丈夫

予測モデルとトレイン、targetを入れて精度を表示させてから分類させたS_trainとyをロジスティックの予測モデルにfitさせてS_testで予測させて返して終わります。

言いたいことまとめ

先日までちんぷんかんぷんでしたが、ゆっくり押さえると案外わかるものでしたw

理解する為に行ったこと

このようにまず紙に書きました。

変数の目的や処理を自分流に書きました。

こうすることで、視覚的にこれがこうなってるのねと理解しやすくなりました。

コードを理解するための方法

  • まずはゆっくりコメント全てに付けてみる
  • 公式ドキュメントで引数見る
  • 繰り返す

これやれば一応何とかコードは理解できます。

お読みいただいてありがとうございました。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です