区分の割合を3割から2割に動かしても、指標は0.0585でした。よく使われる目安の0.1に届きません。
件数も効きます。まったく変化していないデータでも、100件で0.0241、2万件で0.0000と値が変わりました。
変化の程度を4段階に変えて指標を計算しました。よく使われる目安では、途中の変化を拾えません。
ドリフト検知の指標がどこから反応するのかを、実際に走らせて確かめました。使ったのは問い合わせの区分5種類の割合です。
基準の期間を5万件、比べる期間を1000件としました。変化の程度を4段階に変えて、指標を計算しています。
// 母集団安定性指標(PSI)
const psi = (a, b) => a.reduce((s, x, i) => {
const p = Math.max(x, 1e-6), q = Math.max(b[i], 1e-6);
return s + (q - p) * Math.log(q / p);
}, 0);
基準となる期間の分布(5万件) 区分 割合 宿泊費 30.1% 交通費 24.9% 日当 20.0% 前払 15.0% その他 10.1% 変化の程度 指標の値 目安の判定 変化なし 0.0014 変化なしとみなす わずかに変化 0.0026 変化なしとみなす はっきり変化 0.0585 変化なしとみなす 大きく変化 0.3867 変化ありとみなす
上の表を見てください。はっきり変化させた場合でも0.0585で、よく使われる目安の0.1に届きませんでした。
はっきり変化の行では、宿泊費を30%から20%に、日当を20%から25%に動かしています。10ポイントの移動です。
業務としては十分な変化です。問い合わせの中心が移っているので、用意しておくべき回答も変わります。それでも指標は反応しませんでした。
0.1や0.25といった値は、よく紹介される目安です。ところがこの題材では、拾いたい変化がその下に隠れました。
Evidentlyのドキュメントも、この検知の論理は変更できるとしています。手法を選び、しきい値を指定し、独自の判定を渡せる作りです。既定のままにしない前提になっています。
拾いたい変化が、目安の下に隠れることがある。
基準にする期間と、いまの期間の分布を比べます。基準を決めておくことが前提になります。
ドリフト検知は、入力の傾向が変わったことに気づく仕組みです。日本語では傾向のずれの検知と呼ばれます。
比べる相手が要ります。Evidentlyのドキュメントも常に2つのデータを渡す必要がある。いまの側と、基準として働く側であるとしています。
つまり基準の期間を先に決めておく必要があります。決めていなければ、変わったかどうかも言えません。
比べるのは値そのものではなく分布です。同じドキュメントも2つのデータについて、ある列の値の分布を比べるとしています。
4番目は結果の側です。入力が変わっていなくても、出せる答えが変わることがあります。両方を見ておくと切り分けられます。
入力の傾向が変わると、用意しておいた仕組みが合わなくなります。文書を足す、指示を書き直すといった手当てが要ります。
気づかなければ、答えられない問い合わせが静かに増えます。苦情が来るまで分かりません。答えの側の質を測る話はRAGASの記事で扱っています。
分布は種を固定した乱数で作っています。実際の問い合わせを測ったものではありません。使った指標も1種類だけで、他の手法では反応の仕方が変わります。ここで見せているのは、既定のしきい値をそのまま使うと拾いたい変化を逃すことがあるという関係です。
You always need to pass two datasets: current (dataset evaluated for drift) and reference (dataset that serves as a benchmark).原文Evidently ドキュメント「Data drift」 この内容の有効期限2027-02-18
観測する件数そのものが指標に効きます。少ないと、変わっていないのに変わったように見えます。
ドリフト検知では、観測する件数が指標に効きます。変化していないデータで件数だけを変えて確かめました。
件数 指標の値 目安の判定 100件 0.0241 変化なしとみなす 300件 0.0120 変化なしとみなす 1000件 0.0117 変化なしとみなす 5000件 0.0005 変化なしとみなす 20000件 0.0000 変化なしとみなす
上の表はすべてまったく同じ分布から取ったものです。それでも100件では0.0241、2万件では0.0000になりました。
100件しかないと、たまたまの偏りがそのまま指標に出ます。変化がないのに0.0241という値が立ちました。
前の節の「はっきり変化」が0.0585だったことを思い出してください。100件での揺れの倍しかありません。件数が少ないと、本物の変化と見分けがつきません。
この性質は道具の側でも考慮されています。Evidentlyのドキュメントは基準のデータが1000件以下の小さなデータの場合として、規模ごとに違う統計的な手法を当てる作りを説明しています。
つまり件数を確かめずに指標だけ見るのは危ないということです。日次で見るか週次で見るかによって、揺れの大きさが変わります。
4番目を忘れると、問い合わせが減った日に指標が跳ねます。件数の変化を、傾向の変化と取り違えることになります。
同じ分布でも、件数が少ないと値が立つ。
For small data with <= 1000 observations in the reference dataset原文Evidently ドキュメント「Data drift」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る