アクセスカウンター

  • 82本記事閲覧者数   👀💡:
  • 49今日の足あと    🦶💮:
  • 47373サイト訪問者数(累計)🦶💡:

python 機械学習 プログラミング

【機械学習】【python】pythonでのデータ分析(LightGBM) ー銀行の顧客ターゲティング(2)【SIGNATE】ー

 

どうも、solobochiのbochiです。

 

SIGNATEの銀行顧客マーケティングデータ分析について、前回前処理まで実施したので引き続きモデル構築から未知データ予測精度検証を行っていきます。

 

【機械学習】【python】pythonでのデータ分析(LightGBM) ー銀行の顧客ターゲティング(1)【SIGNATE】ー

 

 



 

 

 

目次

    1. 概要
    2. データセット
    3. 前処理
    4. モデル構築
    5. 評価
    6. 予測・提出

 

4.モデル構築

では早速モデル構築へとうつりたいところですが、モデル構築事前準備を少々。

 

・カテゴリ変数のダミー変数化(LightGBMでは不要でした)

(公式ページより👉LightGBM can use categorical features as input directly.とのこと。)

👉カテゴリ変数の値を自動的に数値ラベルに変換できた

 

 

・相関の確認

👉duration,month_BMEについて目的変数と相関が見られる

 

 

・yとの相関に絞って出す

 

 

絞って出す

 

 

 

では、モデルを作っていく。

 

 

ホールドアウトで訓練データとテストデータに分割

 

 

データファイルをLightGBMバイナリファイルに定義・保存することで読み込みが早くなる

👉LightGBM:XGBoostを改良したアルゴリズムで、XGBoost同様に勾配ブースティング(Gradient Boosting)の手法。決定木を勾配ブースティングでアンサンブル学習している。XGBoostがLevel-wise(階層レベルでのブースティング)なのに対してLightGBMはLeaf-wise(葉ごとの学習)のため、より短時間で学習できる。

 

 

🔸パラメータの設定

<Core Parameters>

・task:defaultはtrain、他にもpredict,refitなど

・objective:目的、default:regression(回帰)、分類ならbinary(二値分類)、multiclass(多項分類)、他にもcross_entropy,gamma,

・boosting:ブースティングアルゴリズム。基本的に勾配ブースティングをしたいのでdefaultのgbdt。dartやrf(ランダムフォレスト)を設定することもできる。

・num_iterations:number of boosting iterations(構築する決定木の数),defaultは100。

・learning_rate:学習率/一度に学習する重み。決定木を足し合わせる際の重み。大きくすると時間は短くなり精度は落ちる。default:0.1

・num_leaves:葉の数。分岐の個数。default:31。$$num\_leaves = 2 ^ {max\_depth}$$

 

<Learning Parameters>

・max_depth:木の深さを限定する。データが多くない場合に過学習を抑制する。default:-1(上限なし)

・min_data_in_leaf:決定木の葉(ノード)の最小数。これを大きくすると過学習を抑制する。default:20

・bagging fraction:学習スピードを規定する。default:1.0

・bagging freq:バギングを行う間隔。frequency of bagging、default:0、設定するときはbagging fraction(0.0-1.0)も設定する。

・feature fraction:特徴のうち何割を使用するか。

 

<IO Parameters>

・max_bin:default:255、分岐に入るデータの最大数。小さければ精度向上、大きくして過学習抑制。

 

<metric Parameters>

・metric:評価指標。無指定なら目的に応じた評価指標になる。

"L1":絶対誤差関数、"L2":二乗誤差関数、他にもrmse,gamma,auc。

 

 

🔸実行する

early_stopping_rounds:精度が改善されない時に学習を途中で止めることができる。

 

 

 

5.モデル評価

🔸バリデーション(評価)

・AUCスコアを確認

 

 

🔸変数重要度を確認

👉month_BME(月の上旬、中旬、下旬)の変数が効いていることがわかる

 

 

 

6.予測・提出

🔸最後にコンペのテストデータについて予測しコンペ提出形式に加工して提出

👉93.4%とまずまずの精度となりました。

 

 

 

 

 

 

 

以上

 

 

 

 

⬇️他にもよく見られている記事⬇️

最も訪問者が多かった記事 10 件 (過去 7 日間)
  • この記事を書いた人
  • 最新記事
solobochi

solobochi

(名前):solobochi

(説明)
都内在住の独身アラサー男子
新卒で大手IT企業へ就職して気付けば10年。
このままではマズいという強烈な危機感から会社を休職。


🔸使命に生きたい
🔸好きなひとと好きなことで生きていきたい
これを人生懸けて実現すべく、人生模索中の日々


(Like)
🔹最適化することが好き
🔹PDCAを回すのが好き


(当サイト)
日々思うことを徒然と発信
└(例)
・学びのアウトプット
・投資・資産運用
・プログラミング
・資格試験の対策
・セミナーのレビュー
・書評
etc...

詳しくは自己紹介記事にて。
自己紹介①
自己紹介②
自己紹介③
自己紹介④

おすすめ記事

1

  どうも、solobochiです。     先日(7/6(日))受験した、JDLA(日本ディープラーニング協会)認定のG検定資格に無事合格しました。   &n ...

2

  どうも、solobochiです。     先日、PMP試験に無事合格しました。 振り返り記事のPart2です。     目次 前日・当日の流れ 勉 ...

3

  どうも、solobochiです。   2014年からなのでもうかれこれ6年弱、株や投資信託への投資をしています。 株を始めた頃は社会人5年目、ようやく仕事にも余裕が出てきた頃。 ...

4

  どうも、solobochiです。     昔から読書は好きで、ルーツを辿ると小学生の頃電車通学で、地下鉄丸ノ内線の終点からほぼ終点まで通っていたためその時間にいつも本 ...

5

    どうも、solobochiです。   2019年に入ってからというもの、休日は割とpython触ってます。といってもまだ簡単なサンプルコードをなぞるだけですが。 ...

-python, 機械学習, プログラミング
-, , , ,

Copyright© そろボチ , 2020 All Rights Reserved Powered by AFFINGER5.