リーク

リーク #

リークとは #

機械学習分野におけるリークとは “漏れる” を意味し、AIモデルを学習するときには本来得られるはずのないデータを使用することです。リークは分析者の意図に関わらず発生する可能性があるので注意が必要です。

リークが発生している状態で分析を進めると、手元のデータではAIモデルの精度が実際よりも良く見え、本番のデータではAIモデルが使い物にならないくらいに精度が下がることがあります。そのため、ビジネスの場面において誤った意思決定につながる可能性があります。また、分析しようとしているデータの蓄積方法やドメイン知識の有無によってはリークの発見が困難になる場合があります。

リークの具体例 #

リークが発生している可能性が高い例として以下の2つがあげられます。

  • データ分割前の標準化

    データを分割する前に計算した平均値や標準偏差を使用して、分割後の学習データを標準化することはリークが発生している可能性が高いです。学習時には本来得られるはずのない評価データを用いて統計量が計算されているためです。正しくは、分割したあとの学習データから得られる統計量のみを用いて学習データの標準化を行います。

  • 別の銘柄を用いた株価の終値予測
    ある銘柄の株価の終値を予測するとき、別の銘柄の株価の終値の情報を含むデータを使用してAIモデルを作成することはリークが発生している可能性が高いです。知りたい銘柄の株価の終値を予測するとき、別の銘柄の株価の終値もまだ確定していないためです。正しくは、予測したい未来において確定していない事象を含むデータは削除してAIモデルの学習を行います。

リークの予防 #

リークは、分析者の意図しないものなので発見が困難になる場合が多いです。ですが、扱うデータの理解、処理の仕組みや流れの理解を深めることでリークは未然に防ぐことが可能です。また、ドメイン知識と分析結果を照らし合わせ、直感に反して高い精度が出た場合はリークが発生している場合があります。このような場合「学習データ以外から得られた統計量を用いていないか」、「不確定要素を含むデータを扱っていないか」、「時系列を無視していないか」、「適切でないクロスバリデーションを用いていないか」などのリークを疑い、データや処理内容を見直すことが大切です。

また、Node-AIにおいては時系列を考慮したクロスバリデーションが利用でき、一部のリークを未然に防ぐことができます( 4.2.3. 操作方法)。