Translate

#49 Section5 分類(2) 前処理

ここからは、『setup』関数によるいくつかの前処理機能を体験していきます。 





まずは、モジュールのインポートとsetup関数の実行です。

下記の公式『Tutorials』の下記のコードは、1行目は解説で、2行目は、PyCaretのうち分類に用いるモジュール『classification』をインポートしています。このモジュールは、二項分類または多項分類に使用できます。さらに、 『setup』関数によるいくつかの前処理機能、18以上のすぐに使えるアルゴリズムと、学習済みモデルの性能を分析するためのプロットが用意されています。

ワイルドカード*」を使うとモジュールで公開されているすべての関数や変数などがインポートされて使えるようになります。

3行目は、PyCaretの分類モジュールに含まれる『setup』関数で、欠損値処理、データ分割などの前処理を行っています。

# import pycaret classification and init setup

とあり、setup関数を初期化するような説明となっていますが、『init』は初期化という意味ではなく、機械学習の実験を開始するための準備作業全体を指していますから、ここではsetup関数を実行して前処理を行うという意味で理解しておきましょう。




setup関数について詳しく説明します。setup関数は、最小限、『分析するデータ名』→data、『目的変数』→target、『後で再現可能にするための擬似乱数設定』→session_idという引数が必要になります。

session_idは、無くても動きますが、毎回違う結果が出てくることがありますので固定しておきましょう。

また、その他の引数の主なものは、下記のとおりです。

ignore_features』→無視したい特徴量のリスト
normalize  True』→Trueに設定するとデータが正規化される
train_size』→訓練データのサイズ、例:=0.7では70%が学習用データとして使用される
log_data』→Trueにすると、学習およびテストデータがCSV形式で保存される

これが引数でできるなんて!ちょっとワクワクしませんか?

その他は@Asagumo63さんの記事『PyCaretのsetup関数の引数について』を参照してください!

「PyCaretは細かい調整ができない」と誤解されているようですが、そうではありません。ただし、二項分類の全体像を把握するために、ここでは最小限の引数で進めていきます。





さて、数十秒待つと、Setup関数の出力が表示されます。

最小限の引数ですから、結果が望ましくない場合も出てきます。その場合は、引数を新たに追加しなくてはなりませんから、結果の解釈が必要です。そのために、出てきた結果をどう解釈するか、まとめてみました。下記の2枚をみてください!

訓練データとテストデータを分割欠損値の処理交差検証(これは後で説明します)の選択等を最適な方法で自動的に処理し、それらをどのように処理したかの結果が表示されています。

楽ちんですね!個人的には、Wow!が付いている項目はチョベリグ、めっちゃいいと感じています。






さて、図の12に『Fold Generator StratifiedKFold』(交差検証は、StratifiedKFold/K分割交差検証を選択)とありますが、この交差検証とは一体何でしょう?

通常、機械学習モデルの訓練では、データを「訓練データ」と「テストデータ」に分割します。訓練データでモデルを学習させ、テストデータでその性能を評価します。しかし、この単一の分割方法には以下の問題点があります。

1.データ分割による偏り: テストデータセットがたまたまモデルにとって「簡単」なデータを含んでいた場合、過剰に良い性能評価が得られる可能性があります。逆に「難しい」データを含んでいた場合、過小評価される可能性があります。

2.データ量の制約: データセットが小さい場合、テストデータに割り当てられるデータがさらに少なくなり、評価の信頼性が低下します。訓練データが少なくなると、モデルの学習も不十分になる可能性があります。

3.過学習(Overfitting)の検出: モデルが訓練データに過剰に適合し、テストデータでは性能が落ちる「過学習」を見抜くことが難しくなります。

そこで、交差検証では、データセットを複数の部分集合に分割し、 それぞれの部分集合を交互にテストデータとして使用しながら、残りの部分集合でモデルを学習させます。 この過程を繰り返すことで、モデルの性能を複数回評価し、その平均値を最終的な性能指標として用います。

性能指標には、正解率(Accuracy)、適合率(Precision)、真陽性率(Recall)、F1-score
等があります。それは、『Section6 分類(2) モデルの評価・比較』で詳しく解説します。





さて、今までのコードは『関数型API』という方法(流儀)で書いてきましたが、『オブジェクト指向API』という方法でもコードを書くことができます。

公式『Tutorials』にそのコードがあるので、下記に解説します。また、その解説に出てくる用語の説明(『クラス』、『Estimator(エスティメータ)』)も下記にまとめましたが、大規模なコードを書くのではなく、今回のような短いコードの場合は、『関数型API』で十分ですので、ざっくりと目を通していきましょう。









『オブジェクト指向API』で書いたコードは、下記のようになります。











『関数型API』と『オブジェクト指向API』でのコードを併記すると、下記のようになります。




最後に、関数型APIのsetup関数のコードと出力を動画で確認しましょう。




コメント