予測結果と確率を返答する予測エージェントの作り方について

予測エージェントの作り方について2点ご質問です。
①指定する説明変数の数
十分な説明変数の数の分の条件を指定せずに、予測結果が返ってきました。
全説明変数を指定せず、予測に対する問い合わせができるという事でしょうか?
機械学習レシピにて説明変数は5つあるので、5つそれぞれの値を指定して質問しなければ予測できない認識でした。
ですが、1つの説明変数のみの指定で返答がある状態です。このような使い方で問題なさそうでしょうか?
②モデルが算出した確率を知りたい場合の実装法
スコアリング結果のデータセットにSQL Query toolをつなぎ、予測モデルエージェントへまとめている状態です。
しかし、確率を返答できない状態です。確率のみ問い合わせても解決せずでした。
予測エージェント内のSQL Query toolに対して、確率について問い合わせがあった際に起動するようにという指示を入れてあります。
②を実現する方法として間違っていますでしょうか?
Operating system used: Windows10
Answers
-
Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 282 Dataiker
以下、回答・コメントさせていただきます。
①指定する説明変数の数
十分な説明変数の数の分の条件を指定せずに、予測結果が返ってきました。全説明変数を指定せず、予測に対する問い合わせができるという事でしょうか?
機械学習レシピにて説明変数は5つあるので、5つそれぞれの値を指定して質問しなければ予測できない認識でした。ですが、1つの説明変数のみの指定で返答がある状態です。このような使い方で問題なさそうでしょうか?
はい。MLモデルを学習させる場合、通常は以下の定義のように、値が入っていない特徴量はデータの平均値などが設定されます。この挙動は、MLモデルの推論時も同様となりますので、必ずしも全ての説明変数が存在しなくても、予測を行うことは可能です。
②モデルが算出した確率を知りたい場合の実装法
スコアリング結果のデータセットにSQL Query toolをつなぎ、予測モデルエージェントへまとめている状態です。
しかし、確率を返答できない状態です。確率のみ問い合わせても解決せずでした。予測エージェント内のSQL Query toolに対して、確率について問い合わせがあった際に起動するようにという指示を入れてあります。
Score結果を格納するデータセットに「確率」の情報が入っていれば、以下画像のように確率の数値を回答することは可能なはずです。(この点は、スコア結果を格納したデータセットのカラム名やメタデータに依存する部分になると思います。)
そこで、ご質問の意図としては「SQL Query toolではなくて、ML予測ツールが呼ばれた場合に、0/1ではなくて確率を返したい」ということで合っていますでしょうか?その場合について確認したところ、確かに現状のML予測ツール(Model Predict tool)では、予測結果(分類モデルの場合は0 or 1)のみを返す仕様となっており、確率は返さない仕様となっていました。
将来的には、確率も返すようにModel Predict toolが拡張される可能性はありますが、もし確率も含めて推論結果を取得したい場合、現状ではInline Pythonツールを利用して、カスタムツールを実装する必要があります。
以上、取り急ぎですが、確認結果をご連絡いたします。
-
ご回答頂きありがとうございます。
ML予測ツールについて、以下2点理解しました。大変助かります
・説明変数を必ずしもすべて指定しなくても良いこと・確率を返答する仕様ではないこと
SQL Query toolを使った確率の回答について、以下のような状況でありました。
数値データの説明変数を指定した聞き方をすると、回答ができないようでした。メタデータを追加済みです。存在する数値で説明変数を指定してみても解決せずでありました。
またクラス分類されたデータであれば、確率を回答できました。
-
追加で質問させてください
私が作った予測モデルエージェントの内部にはSQL Query toolとPredict Model Toolが入っていますが、CV予測とその確率をきくような、内部の複数Toolを同時に動かして回答させることは仕組み的に不可能でしょうか? -
Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 282 Dataiker
以下、コメントさせていただきます。
数値データの説明変数を指定した聞き方をすると、回答ができないようでした。
メタデータを追加済みです。存在する数値で説明変数を指定してみても解決せずでありました。
上記の場合、SQL Query toolではなくて、Model Predict toolが呼ばれてしまっているように見えます。(この点は、エージェント実行時のトレースログで確認可能だと思います。)
上記の状況において、Model Predict toolを利用せずに、必ずSQL Query toolが呼ばれるようにするためには、エージェントに指定するプロンプトの書き方を工夫する必要があると思います。例えば、私の環境では、以下のようなプロンプトを記述することで、一応SQL Query tool経由で確率の情報を取得できました。
特定の顧客に関する質問の場合、「顧客データ分析(SQL)」ツールを利用して、その情報を元に回答に答えてください。 顧客のCV確率に関する質問の場合、必ず「顧客データ分析(SQL)」ツールを利用して、その情報を元に回答に答えてください。結果が複数存在する場合は、結果の数値の平均を計算して答えてください。 一般的な顧客属性について、かつCV確率を含まないCV予測結果に関する質問の場合のみ、「CV予測モデル」ツールを利用して、その顧客のCV予測結果を取得してください。
上記のように、適切なツールを使って処理するように、プロンプトの書き方を工夫する必要があると思います。お手数ですが、まずはその点をご確認いただけますと幸いです。