今回はサンプルデータの特徴の選択による二項分類 - 収入の予測を利用してみたいと思います。
ワークスペースやクラスターの作成、実行方法等は最初の記事を参考にしてください。
サンプルを開く
今回利用するサンプルを開きます。
利用するのはBinary Classification with Feature Selection - Income Prediction
です。
利用するデータも見ておきましょう。
年齢や学歴、収入などが入ったデータみたいですね。
サンプルの内容
今回のブロックは以下のようになってます。
前回とは結構違うようですね。気になる点を見ていきましょう。
Filter Based Featuer Selection
というブロックがあります。何をやっているかがコメントに書いてあります。
どうやらChiSquared
によって5個のカラムを選んでいるようです。
ChiSquared
はカイ二乗検定というものらしいで、関係があるかどうかの判定を行うために使います。
つまりここでは関係の強いカラム5つを選定しているようです。TargetColumnにincome
が設定されているので、これについての関係の強さを見ているのでしょう。
実際にどうなっているのか、ここだけ切り取って実行してみたいと思います。
実行結果はこのようになっていますね。カラムが6つだけになっています。
ちゃんと算出結果を見ることもできますね。
これによってデータ量の多すぎるものを関係の強いものに絞って学習することができますね。
それでは元のサンプルに戻ってみましょう。
アルゴリズムのある左のブロック群は前回までと同様の流れを組んでいますね。
テストのほうはなんだか複雑になっています。
それぞれ確認してみましょう。
Select Columns Transform
は入力されたデータと同じカラムを返すブロックのようです。
そのカラム情報をApply Transformation
に渡すことでテストデータのカラムを学習データと同じものにしているようです。
その後テストデータとして利用されていますね。
また、SelectColumnsInDatasetでincomeのデータを削除して再度結果を出しています。
これはおそらく利用時に取得できるデータを作成してるのではないでしょうか。
モデルの評価をするだけなら必要ないかと思います。
サンプルをいじってみる
それでは少しいじってみましょう。
先日のように複数のモデルの比較をしてみたいと思います。
また、3つの評価の比較はできていなかったので、pythonコードを記述して結果を結合してみたいと思います。
pythonコードでやってることは単純で、二つのEvaluteModelのデータをpd.concat()
で結合してるだけですね。
既存のjoinブロックだと横に結合されちゃったのでpythonコードでやってみました。
結果がこれですね。
ちゃんと3つのデータが並んで比較できます!よかった!
ただ、EvaluteModelブロックのほうが可視化されてわかりやすいので普段はそちらを使うことがおすすめですね。
特に閾値を変動させつつ精度を確認できるのはすごくわかりやすくていいと思います!
これで最適な閾値や自身の望む閾値の精度を簡単に確認できますね。
上のグラフだと少しわかりにくいですが、データを複数選んでおくとグラフも複数表示されて比較できるようになってます。
これもいいですね。
まとめ
今回は特徴の選択による二項分類 - 収入の予測を使ってモデルの作成を行ってみました。
また、pythonコードの直接実行もやってみました。簡単に実行できるので、簡単な処理や現状pythonでやってる内容などをそのまま簡単に流用できそうなのはいいですね。
今回は初の二項のサンプルを実行してみましたが、ほとんど回帰と変わらずにブロックを組み上げることができました。
特にEvaluteModelの可視化部分がわかりやすくていいですね。上述しましたが、閾値を変動させて精度を直接確認できる点がとてもよかったと思います。
次回はこのEvaluteModelのデータや予測結果などをblobにcsvとして出力できないのかをいろいろ試してみたいと思います。