PSIとKSでドリフトを測定する
各特徴量の分布変化を定量化します。
「PSIとKSでドリフトを測定する」はCoddyKit上の無料MLOps Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはMLOps Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 MLOps Academyコースには全4レッスンが含まれています。
直感を数値に変える
特徴量が違って見えると言うだけでは不十分です。その分布がどの程度変化したのかを示す数値が必要です。信頼性の高いツールにはPSIとKS検定があります。📏
PSIが測定するもの
Population Stability Indexは、特徴量の現在の分布と学習時の分布をビンごとに比較します。各ビンの差が大きいほど、スコアは高くなります。
PSIの値を読み取る
一般的な目安では、PSIが0.1未満なら安定、0.1以上0.25以下なら中程度の変化、0.25を超えるなら対応すべき大きなドリフトを意味します。
PSIの計算方法
各ビンについて、PSIは割合の差に2つの割合の対数比を掛け、その値をすべてのビンについて合計して1つのスコアにします。
import numpy as np
def psi(expected, actual):
return np.sum((actual - expected) * np.log(actual / expected))まずビニングを行う
PSIでは、両方のサンプルを同じビンに分類する必要があります。通常は学習データを10分位に分けます。両方で同じ境界を使うことで、公平に比較できます。
edges = np.quantile(reference, np.linspace(0, 1, 11))
exp = np.histogram(reference, edges)[0] / len(reference)
act = np.histogram(current, edges)[0] / len(current)KS検定が測定するもの
Kolmogorov-Smirnov検定は、2つの累積分布の間で最も大きな差を見つけます。この最大距離がKS統計量です。
KSを一言で説明すると
SciPyを使えばKS検定を直接実行できます。p値が小さい場合、2つのサンプルは異なる分布に由来する可能性が高く、ドリフトが示唆されます。
from scipy.stats import ks_2samp
stat, pvalue = ks_2samp(reference, current)
drifted = pvalue < 0.05PSIとKSの比較
PSIは、ダッシュボードに適した単一の重大度スコアを提供します。KSは、二択の判断に適した統計的なp値を提供します。多くのチームは両方を並べて追跡します。
カテゴリ特徴量
PSIは、各値をそれぞれ1つのビンとして扱うため、カテゴリデータに自然に適用できます。KSは順序のある数値を前提とするため、カテゴリ特徴量には代わりにカイ二乗検定を使います。
サンプルサイズに注意する
サンプル数が非常に多いと、KS検定は小さく無害な変化まで統計的に有意だと判定することがあります。アラートを出す前に、p値をPSIのような効果量と組み合わせて確認します。
特徴量ごとに実行し、最後に集約する
これらの検定を特徴量ごとに実行してから、結果をまとめます。便利な指標は、ドリフトした特徴量の割合です。変化が広範囲なのか限定的なのかを把握できます。📊
クイックチェック
この数値から正しく読み取れるものを選びましょう。
まとめ
ドリフトを数値化しました。PSIはビンを使って重大度をスコア化し、KSは分布間の最大の差を測定します。両方を使い、サンプルサイズに注意し、特徴量の種類に合った検定を選びましょう。🎯
AI チューターと学ぶ Python — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「PSIとKSでドリフトを測定する」レッスンは無料ですか?
はい。「PSIとKSでドリフトを測定する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、MLOps Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 MLOps Academyコースには全4レッスンが含まれています。
「PSIとKSでドリフトを測定する」で何を学びますか?
各特徴量の分布変化を定量化します。 ブラウザで直接実行するハンズオンコードでMLOps Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
MLOps Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのMLOps Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「PSIとKSでドリフトを測定する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このMLOps Academyレッスンでコードを書いて実行できますか?
はい。すべてのMLOps Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- データドリフトと概念ドリフト
- PSIとKSでドリフトを測定する
- Evidentlyでドリフトレポートを生成する
- ドリフトのしきい値とトリガーを設定する