背景
Code Interpreter の Plugin が大きな可能性を持っています。現状のアルファ版でも、比較的シンプルなタスクはこなせてしまいます。
私の少ない経験からですが。
Deep Learning のネットワークを組めるような高い技術力は確かに役に立ちます。それでも、実社会・ビジネスの現場では、意外とシンプルな機械学習や深層学習のモデルで十二分効果・価値を発揮する場合も多いんです。
今回は機械学習のモデルの作成と、そのモデルファイルのダウンロードを試しましょう。
注意事項
注意点:
- ChatGPT の 有料プランが必要
- Python のコードは sandbox 環境で実行される
- インターネットへのアクセスは出来ない
- 明文化されたドキュメントを探せなかったのと、各種リスクが不明瞭。そのため、OpenAI の ChatGPT では、機密情報は扱わない事。
- 現在の Code Interpreter が扱えるストレージサイズはそれ程大きくありません。
すぐに使える Resources
Prompt 履歴:
https://chat.openai.com/share/7cd522df-fdba-452a-8ebb-b325f2f3a7ed
手順
Azure Machine Learning のチュートリアルのデータセットを使います。つまりある程度綺麗なデータセットです。ある程度😊
1. データの準備
Code Interpreter はインターネットにアクセスできませんので、データセットをダウンロードします。
このデータセットは、クレジットカードの顧客情報などから、デフォルト、つまり支払い能力がなくなりそうな顧客の情報が入っています。
2. Code Interpreter の Plugin を有効化して、Prompt 入力
Code Interpreter の Plugin を有効化した上で。Prompt の入力準備をします。
3. ファイルのアップロード
先ほどダウンロードしたCSVのデータセットをアップロードします。
Code Interpreter を有効化していると、このスクショの様に、Prompt の入力画面に + アイコンがついてファイルのアップロードが出来るようになります。
これで準備完了です。
4. Prompt 入力
以下の例のようにPromptを入力していきます。
### 役割 ###
データサイエンティストとして振舞ってください。
### 指示 ###
機械学習の分類モデルを作成します。アップロードしたファイルをトレーニングデータとテストデータとして扱います。
実はこの後の出力文字列をみて。
初めて実施した際には、私は驚いた表情がちょっとの間消えませんでした...😲
この出力のスクショを見てください。
何とFeature Engineering の一部をやってくれています!
- データセットの基礎集計
- 欠損値の確認
- データ型の確認
- 目的変数 (ターゲット変数) の分布の確認
- 文字列などの説明変数の不均衡の是正。標準化の実施。重みづけの実施。
そして
- 学習用とテストデータの分割
神すぎますよね!
AutoML の中でやってくれている事。Scikit-learn のパッケージのみでやってくれているようです。
これ、毎日データを見ている人であれば習慣化されているかもしれませんが。私は、都度マニュアルなどでタスクの抜け漏れチェックしないと無理です。タスクの網羅性が高いですよね。
ここで是非、[show work]を押して、Python のコードを確認していただきたいのです!
「動けばいいや」ではなく。Pandasにこんな便利な関数があるんだな。と、学ぶ機会にしていただきたいんですよね。私も毎回勉強になります。
そしてですよ...
何と、特に指示をしていないのですが、学習の実施をしてくれているんです!!!
これは予想してなかったんです。全くもって!!!😍
こちらが Code Interpreter が作成してくれた学習用のコードです。
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, recall_score, precision_score, f1_score, confusion_matrix
# Scale the features
scaler = StandardScaler()
features_train_scaled = scaler.fit_transform(features_train)
features_test_scaled = scaler.transform(features_test)
# Train the model
model = LogisticRegression(class_weight='balanced', random_state=42)
model.fit(features_train_scaled, target_train)
# Make predictions
train_preds = model.predict(features_train_scaled)
test_preds = model.predict(features_test_scaled)
# Calculate performance metrics
train_accuracy = accuracy_score(target_train, train_preds)
test_accuracy = accuracy_score(target_test, test_preds)
test_recall = recall_score(target_test, test_preds)
test_precision = precision_score(target_test, test_preds)
test_f1 = f1_score(target_test, test_preds)
test_cm = confusion_matrix(target_test, test_preds)
train_accuracy, test_accuracy, test_recall, test_precision, test_f1, test_cm
マジで神すぎますよね!
Confusion Matrix まで作成してくれて。文字列なのがいまいちですが😅それでも、その説明文まで作成してくれます。
マジ、初心者はこれで十二分。初めての機械学習にはこれで十二分!
たった1度のPromptでモデルの学習実行まで行ってくれました。
勿論、Logistic Regression 以外の方法も試してみたいでしょうし、Hyperparameter Turning も試してみたいでしょうし。それは次のフェーズでやりましょう。
5. モデルの出力
作成したモデルをファイルに出力してください。
はい!
あっという間にファイルがダウンロード出来る状態になりました。
6. 推論用のコード作成
これも作成させちゃいましょう😊
先ほどの2つのモデルのファイルを読み込んで実行する Python のコードと pipのrequirement.txt と docker file を作成してください。
Web用なのか、どこで実行するのか指定が無かったので。一番シンプルなコードを作成してくれました。
Promptで直すもよし、Visual Studio Code + GitHub Copilot で直すもよし。皆さんのお好みで。
まとめ
データセットさえ用意すれば、初歩的な機械学習の手法で済むモデル作成までは、いとも簡単にやってくれます。一番私が重要視しているのは、作業時間です。データセットさえ用意されていれば、全ての工程は10分かかりません。勿論、データ量が増えたりすれば、もっと時間を要するでしょうが。
圧倒的な生産性。圧倒的な学習環境。明るい未来しかりありません。ともすれば機械的な作業になりがちな Feature Engineering のカバー。
次のステップも試したくなりますよね。次はまず AutoML の実行ですかね。
どんな価値がありそうか?
その価値を私なりに考察します。この Blog Post はビジネスユーザーにとっての価値が高いと思います。現場の人と言い換えましょうか。
データについては、データサイエンティストじゃなく、そのビジネス・業務に関わっている人の方が全然詳しいです。その方が、学びながら、その場で機械学習のモデル作成が出来てしまう事が重要です。非常に価値が高いと思います。
- [トレーニング] プロのデータサイエンティストがいなくても、いつでも、どこでも、タスクの内容を説明してくれる
- [速さ] 基礎的なモデル作成であれば、推論環境の準備までが早い。基礎的な機械学習の環境構築も不要
- [網羅性] 基礎的な機械学習の、データの理解、データ加工、機械学習の実行とモデルの作成、そして推論用のコードの作成が出来る
拡張性も勿論あるわけです。
- [成果物] 成果物をファイルとしてダウンロード出来る。細かい調整は Visual Studio Code + GitHub Copilot ですればいい。例えば PyTorch は入っていないので。Deep Learning が必要になったら、Code Interpreter 無しの ChatGPT で PyTorch のサンプルコードを再作成して、Visual Studio Code で動かせばいいわけで。
- [トレーニング] Python のエラーメッセージなど、自身が腑に落ちていないコトを、説明文を読んでみたり、Bing Chat や ChatGPT に「子どもでも分かるように説明して」と問いかけるコトで理解をしたり。それによって Bing Chat によって多くの場合たどり着ける公式ドキュメントを読める知識が得られる
つまり、全ての学生やビジネスユーザーにとって、試した方がいいものだと思います😊