目次
1. 前回の実行結果のふりかえり
前回のブログでは、ハイパーパラメータを探索するために、以下のようにプロンプトを記述して実行しました。
実行に当たっては、LangChainでOpenAIのAPIを使用する手順を参考にして準備をしています。
■python
agent.run(""" タイタニック号の乗客が生存したかどうかを予測するlightGBMのモデルを作成します。予測精度を上げるため、このデータセットからどのような特徴量を作るべきかを考えて説明してください。 # 入力データの情報: - 入力データセットの変数名は、dfです。 - 生存したかどうかは、変数Survivedです。1なら生存、0なら死亡です。 # 以下の手順で考えてください。 1. dfを訓練用とテスト用に分割してください。データセットの70%を訓練用、30%をテスト用としてください。 2. 訓練用データセットを使って予測モデルを作成し、テスト用データセットを使って予測精度を計算してください。 3. 予測精度は、AUC_ROCを使って比較してください。 4. 予測結果を元に、このデータセットからどのような特徴量を作るべきかを考えてください。 # 結果 実行ログを用いて、プロセスと推論結果を説明してください。 タスクの完了後、あなたのワークフロー・使用したモデル・推論結果の詳細・予測精度を説明してください。 その後、予測精度を向上させるためにどのような特徴量を追加するべきかを考えて説明してください。 私のリクエストに関係のない情報はフィルタリングしてください。 """ )
その結果、「最も精度の良いハイパーパラメータ」に関する回答は返ってきましたが、期待したものではありませんでした。ハイパーパラメータの探索・調整をした上での、最も良いハイパーパラメータの組み合わせを返答することを期待しましたが、試行はせずに事前に学習したデータの中に含まれる情報が返答されました。
2. 仮説
前回のプロンプトは、実行手順の指示の仕方に悪い部分があると考えました。以下の指示を見てみると、手順4で唐突にハイパーパラメータの話を出してしまっています。
このような指示の仕方では、4の段階までハイパーパラメータを調整することがわかりません。また、ハイパーパラメータの調整の仕方も曖昧でした。
1. dfを訓練用とテスト用に分割してください。データセットの70%を訓練用、30%をテスト用としてください。 2. 訓練用データセットを使って予測モデルを作成し、テスト用データセットを使って予測精度を計算してください。 3. 予測精度は、AUC_ROCを使って比較してください。 4. 予測結果を元に、ハイパーパラメータを調整して再度予測をしてください。
そこで、ハイパーパラメータの調整方法の指示を具体的にしてみます。
3. 検証
以下のようにプロンプトを書き換えてみます。ハイパーパラメータを調整する部分をより具体的に、何をどのように調整してほしいかを記載しました。
■python
agent.run(""" タイタニック号の乗客が生存したかどうかを予測するlightGBMのモデルを作成してください。ハイパーパラメータを調整して、最も予測精度の高いモデルを作成してください。 # 入力データの情報: - 入力データセットの変数名は、dfです。 - 生存したかどうかは、変数Survivedです。1なら生存、0なら死亡です。 # 以下の手順で進めてください。 1. dfを訓練用とテスト用に分割してください。データセットの80%を訓練用、20%をテスト用として分割してください。訓練用データセットを使って予測モデルを作成し、テスト用データセットを使って予測精度を計算してください。 2. グリッドサーチを使って、ハイパーパラメータを調整してください。ハイパーパラメータの候補は、以下の通りです。 - num_leaves: 10, 20, 30, 40, 50 - max_depth: 3, 4, 5, 6, 7 - learning_rate: 0.01, 0.05, 0.1, 0.2, 0.3 3. 予測精度が最も良いハイパーパラメータの組み合わせを教えてください。予測精度はAUC_ROCを使って比較してください。 # 結果 タスクの完了後、実行ログを用いて、推論結果の詳細を説明してください。最も精度が良かったハイパーパラメータの組み合わせと、その時の予測精度を教えてください。 私のリクエストに関係のない情報はフィルタリングしてください。 """ )
その結果、意図通りの返答を返すことができました。グリッドサーチを行うコードを実行して、その結果から返答を返してくれています。
4. まとめ
指示の仕方を具体的にすることで、ChatGPTでグリッドサーチを行い、ハイパーパラメータの調整を実行させることができました。
このことから、明確に具体的な指示を出すことで、複雑な手順でも実行できることがわかりました。