Fioneのモデル説明案で予測の理由と診断を確認する

FioneのPython刷新案に、予測の理由やモデルの弱点を調べる説明機能が加わりました。学習してスコアを比較する流れから一歩進み、列ごとの寄与度、分類・回帰の診断、部分依存を画面とAPIで確認する提案です。

学習後の診断と各行の理由

モデルの指標タブでは、交差検証のout-of-fold予測から混同行列、クラス別指標、ROC・適合率再現率曲線、キャリブレーション、回帰の残差を表示します。独立したテストデータの評価とは異なり、やや楽観的になり得る点を踏まえて読みます。

説明タブには寄与度から作る重要度と部分依存を表示します。予測結果画面では先頭5行の理由を確認できます。寄与度は分類なら確率、回帰なら目的変数の単位へ変換して合成する近似で、厳密なShapley値や因果関係を示すものではありません。

学習後の説明計算は初期値で有効

FIONE_EXPLAIN_AFTER_TRAINING=true

初期値trueでは、学習後に短い説明ジョブをキューへ追加します。忙しい環境ではfalseにして必要時だけ計算できます。環境変数は起動時に読み込まれるため、配置方法に合わせて再起動します。

ジョブは最大1,000行の寄与度から重要度を作り、上位10列の部分依存を保存します。説明にはデータが必要で、インポート済みモデルや学習データ削除後のモデルでは、説明タブから列のそろったデータセットを選びます。保存済みの曲線がある場合と新規計算できる場合を区別してください。

バッチ予測とServingは明示して要求する

バッチ予測の「各予測の内訳を含める」は初期値で無効です。有効にするとcontrib_<列名>などの列が増え、処理時間とCSV容量も増えます。対象は最大10万行で、幅の広いモデルでは特に大きな出力になります。

Servingはリクエストにcontributions=trueを指定すると寄与度を返します。省略・false・nullなら従来の応答を維持し、それ以外の型は400です。

FIONE_SERVING_MAX_CONTRIBUTION_INSTANCES=100
FIONE_SERVING_MAX_CONTRIBUTION_REQUESTS=2

これは既定値です。寄与度付きリクエストは100件の入力、同時2リクエストまでで、混雑時は503となります。列数やクラス数によってさらに制限され、説明の計算中は通常予測も同じモデルを待ちます。Servingに認証が追加されるわけではありません。

共有範囲と読み違いを確認する

Web側のその場の説明計算はサーバー全体で1件ずつ、待機4件・最大15秒です。閲覧者の操作でもCPUやメモリーを使います。大きなモデルや信頼未確認のインポートはその場では拒否され、書き込み権限を要するジョブでの説明になります。

診断にはクラスラベルと、回帰では最大2,000件の実測目的値が残り、プロジェクトの閲覧者へ見えます。診断はモデルのエクスポートにも入り、元データを削除しても残ります。説明結果にもカテゴリ値などが残るため、共有前に内容を確認します。旧実装は診断を含むエクスポートを拒否し、同じ20.0.0表記でも互換性を判断できません。

リークの疑いが強い列への警告も追加されますが、スコアによる疑いだけでは入力列を自動除外しません。警告がないこともリークがない保証にはなりません。Notebook連携は別の計画で、今回の説明機能に含まれません。

関連PR

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です