データドリフトについて思ったこと

だいぶポエムっぽい内容かもしれません。

日々データを収集していると時が経つにつれてデータの様子が変わっていってしまうことが考えられますが、そのことをデータドリフトと呼びます。 それを可視化するためのツールとしてTensorflow Data Validationというものがあり、これについての記事も書きました。

この記事を書いた時は「データの分布を確認し続けることって大事だよね!TFDVは可視化できて最高!」と考えていたのですが、しかしよくよく考えてみると、データの分布の話ってそこまで単純な話ではないのではという風に感じました。

TFDVにはデータのスキーマが変わっていることに関しては便利な検知機能があるのですが、分布の変化に関しては可視化機能がメインでスキーマ異常検知に比べると検知機能がそこまであるわけではありません。

やはり、そもそも何を持って「分布が変わっているよ!」というのかを定義することすら難しいと思いますし、分布そのものから何か情報を得ているのでない限り、特に機械学習を使用するサービスを運用する中でドリフトの監視を行っている場合、「分布が違うよ!」と言ったって「だから何」という話にしかならないのだと思いました。

上で述べた機械学習を使用するサービスを運用する中でドリフトの監視を行っているケースに限定しますが、監視しないといけないのはデータの分布よりもまずモデルの性能だと思いました。 分布のドリフトが起こっているというというのはどちらかといえばよくはないことではあることは間違いないと思いますが、それがどのくらい困るのかというのは分布にだけ着目していると何も分からないのだと思いました。

まずはきちんとモデルの性能について、劣化していると判定するためのボーダーラインを設定し、それをモニタリングする。 そして、そのボーダーラインを超えた時初めてデータ分布のドリフトが原因で劣化が起こっているのかを調査する。 データの分布のドリフトの監視に関してはこのような運用をしていけば良いのではないかなぁと思いました。