Python

PySpark MLlibでランダムフォレストによる分類予測

PySparkのMLlibを使ったランダムフォレストによる分類予測をやってみます。

前回の記事ではPySparkによるロジスティック回帰をやったので、同じ分類予測をするランダムフォレストにも挑戦してみます。

前回同様、こちらの本を参考にさせていただきました。

Applied Data Science Using PySpark

使うデータはBankデータとして、その中の"y"列:定期預金したかどうかを目的変数としてモデリングをしていきたいと思います。

説明変数はデータを全部使うわけではなく一部とし、またパイプラインは使わずにやってみたいと思います。

 

PySpark MLlibでランダムフォレストによる分類

文字列データのインデックス化

初めはデータの読み込みですが、以前の記事でも紹介しているので今回は割愛します。

データの読み込みができたら、モデリングができるようにデータ処理をしていきます。

初めにdefault列がyes, noが入っているので、こちらをインデックス化して、defaultIndexという名前のカラムを作りましょう。

 
インデックス化を実行する場合はfit, transformを行います。

以前の記事ではパイプライン化していたので、まとめてfit, transformしましたが、今回はパイプラインを使わずにやってみたいので、逐一実行していく必要があります。

 

目的変数の作成

目的変数は"y"列なのですが、yes, noで入っているので、こちらを0, 1に変換します。

 

モデリング用に説明変数をassemble

目的変数ができたので、説明変数も処理していきましょう。

説明変数はモデリングするためにassembleをします。

 

訓練・テストデータに分割

モデリングは訓練データを用いて行いますから、訓練データとテストデータに7:3で分けてみたいと思います。

今回はシンプルにrandomsplitです。層化とかは考えません。

 

ランダムフォレストによるモデリングと推論

これでモデリングをする準備ができましたので、モデリングを行います。

ランダムフォレストは分類だけでなく数値予測もできるのですが、今回は分類予測なのでRandomForestClassifierを使います。

 

 
一応、ランダムフォレストの重要度を出しておくとこんな感じになりました。

durationの重要度が高いんですね。

 

 

精度評価:AUCの計算

訓練データでの予測結果を使ってAUCを計算してみます。

AUC計算は一旦PysparkのデータフレームからPandasのデータフレームに変換して実行してもよいのですが、今回はpysparkのままでやってみます。

 

 

これで訓練データを使ったモデリング関連の処理が完了です!

 

テストデータでの推論とAUC計算

ではテストデータを使って推論とAUC計算をしてみます。

 

 

 

 
AUCは若干下がりましたが、意外と高いままですね。

おすすめ記事

1

お疲れさまです! 久しぶりの更新になってしまいましたが、僕が未経験からデータサイエンティストになるまでの転職活動の全記録を書き残しておきたいと思います。 僕は博士号を取得後に研究員として仕事をしていま ...

2

こんにちわ、さとしです! 気がつけばこのデータサイエンティスト転職から、1年が経とうとしています。 今はご時世的に外にも出られず、変化があまりない生活を送ったせいもあってか、なんかあっという間に1年が ...

3

データサイエンティストに転職して1年が経ち、いろいろな業務を経験させてもらいつつ、自分でもある程度本を読んできました。 仕事の話は下記の記事で書きましたが、自分で読んだ本については書いていないのでこの ...

-Python

Copyright© さとぶろぐ , 2022 All Rights Reserved Powered by AFFINGER5.