Explorables

モデルの予測は確率なのか?

Are Model Predictions Probabilities?

機械学習モデルが明日0.60のスコアで雨が降ると言った場合、傘を買うべきですか?1

図では、雨の日を予測するための仮説的な機械学習分類器があります。各日付について、分類器は気温や湿度などの関連信号を読み込み、0から1の間の数値を出力します。各データポイントは異なる日を表し、位置はその日の雨に関するモデルの予測を表し、シンボル(🌧️または☀️)はその日に発生した実際の天気を表します。

モデルの予測は降雨確率を教えてくれるのでしょうか?

一般的に、機械学習分類器は単に二項予測を与えるのではなく、予測に対して0から1の間の数値を提供します。この数値は、時々モデルスコアまたは信頼度と呼ばれ、入力データが属するクラスについてのモデルの確実性を表現する方法です。ほとんどのアプリケーションでは、正確なスコアは無視され、しきい値を使用してスコアを二項答え(はいまたはいいえ、雨またはなし)に丸めます。しかし、キャリブレーションを使用することで、これらのスコアを確率に変換し、意思決定をより効果的に使用できます。

しきい値処理

モデルのスコアを使用するための1つの伝統的なアプローチは、しきい値処理です。このシナリオでは、しきい値tを選択し、スコアがtより上の場合はモデルが雨が降ると考えると宣言し、スコアが下の場合は降らないと考えると宣言し、スコアを二項結果に変換します。実際の天気を観察すると、どのくらい間違っていたかを知ることができ、精度などの主要な集計統計を計算できます。

これらの集計統計自体を確率として扱うことができる場合があります。たとえば、精度はモデルの二項予測(雨またはなし)が正解(🌧️または☀️)と等しい確率です。

調整可能なしきい値処理

モデルが訓練された後、しきい値は簡単に変更できます。

しきい値処理はモデルのスコアを使用して決定を下しますが、モデルの信頼性を考慮することができません。モデルスコアは、しきい値より上または下かどうかを決定するためにのみ使用されますが、差の大きさは考慮されません。たとえば、しきい値を0.4に設定した場合、モデルが後者にはるかに自信を持っていても、0.6と0.9のモデルの予測は同じに扱われます。

モデルスコアをモデルの理解に組み込むことをより良くできるでしょうか?

キャリブレーション

キャリブレーションでは、モデルスコアを確率と直接比較できます。

このテクニックでは、1つのしきい値の代わりに、多くのしきい値を持ち、それを使用して予測をバケットに分割します。再び、正解を観察すると、各バケット内の予測のどの割合が雨の日(🌧️)だったかを見ることができます。この割合は、そのバケットの降雨の経験的確率です。

理想的には、この割合は高いバケットに対して高くなることを望みます。確率がそのバケットの平均予測に大まかに一致するようにします。割合と予測率の間の差をキャリブレーション誤差と呼び、すべてのバケットの平均を取ることで、期待キャリブレーション誤差を計算できます。割合と予測がユースケースに対して一致している場合、つまりエラーが低い場合、モデルは「よくキャリブレーションされた」と言い、モデルスコアを実際に降る確率として扱うことを検討できます。

キャリブレーションの調整

上で見たように、よくキャリブレーションされたモデルにより、モデルスコアを一種の確率として扱うことができます。しかし、あまりキャリブレーションされていないモデル、つまり過度に自信がある、または自信不足のモデルで開始した場合はどうでしょう。それを改善するために私たちができることはありますか?

実際のところ、多くの設定では、調整によってスコアの順序が保持される限り、モデルの決定を本当に変更することなくモデルスコアを調整できます2。たとえば、元のモデルからのすべてのスコアを平方にマップした場合、モデルスコアに関するデータの順序は変わりません。したがって、精度などの量は、しきい値をその正方形に適切にマップする限り、同じままです。ただし、これらの調整は、どのデータポイントがどのバケットにあるかを変更することで、モデルのキャリブレーションを変更します

しきい値を調整してデータのモデルスコアをキャリブレーションしてみてください3 - モデルのキャリブレーションをどの程度改善できますか?

一般的に、キャリブレーションを改善するためにモデルスコアを手動で調整する必要はありません。特定のデータ分布のモデルをキャリブレーションしようとする場合、等張回帰またはPlattスケーリングなどの数学的手法を使用して、モデルスコアの正しい再マッピングを生成できます。

データシフト

良いキャリブレーションはモデルのスコアを確率として解釈するための重要な特性ですが、モデルの不確実性のすべての側面をキャプチャするだけではありません。

モデルを訓練してキャリブレーションした後、雨がより少なく降り始めるとどうなりますか?前と同じキャリブレーション済みモデルスコアを使用しても、キャリブレーションがどのように低下するかに注意してください。

モデルは通常、特定のデータ分布に対してのみ良好にキャリブレーションされます。訓練時と提供時の間にデータが大きく変わる場合、モデルは良好にキャリブレーションされなくなり、モデルスコアを確率として使用することに頼ることはできません。

キャリブレーション以上

キャリブレーションは時々ゲームで簡単です。たとえば、年間を通じて50%の確率で雨が降ることを知っていた場合、毎日0.5の一定の予測を持つモデルを作成することができます。これは完璧なキャリブレーションを持っていますが、降雨確率の日々の違いを区別するための非常に有用なモデルではありません。これは重要な問題を浮き彫りにしています:

更良いキャリブレーションはより正確な予測を意味しません。

気象学者が天気予報を比較する際にキャリブレーションのみに焦点を当てることの問題を特定し、解決策を思いついたことが判明しました。適切なスコアリングルールは、モデルの予測と真のイベント確率の間の距離を測定する式を使用することで、確率予報の品質を測定するための別のアプローチを提供します。これらのルールは、より良い値が精度とキャリブレーションの点でより良い予測を意味することを保証します。このようなルールは、モデルをより良くキャリブレーションでき、より正確になることを促進します。

さらに詳しく

このポストは、機械学習モデル、確率、不確実性の間の接続についての議論の始まりに過ぎません。実際には、不確実性を念頭に置いて機械学習モデルを開発する場合、キャリブレーション以上のことが必要になる可能性があります。

いくつかの設定では、エラーはすべて等しいわけではありません。たとえば、患者が病気の検査を受ける必要があるかどうかを予測するための分類器を訓練する場合、偽陰性(病気の症例を逃す)は偽陽性(誤って患者を検査させた)より有害になる可能性があります。このような場合、完璧にキャリブレーションされたモデルが必要なくても、モデルスコアを1つのクラスまたは別のクラスに向けてスキューしたい場合があります。統計的決定理論の分野は、このより一般的な設定でモデルスコアをよりよく使用する方法を決定するためのツールを提供します。キャリブレーションは、いくつかのアプリケーションではモデルフェアネスのような他の重要な目標との緊張につながる可能性があります。

これ以上に、これまでのところ単一のモデルスコア、つまりポイント推定値を使用する場合のみを考慮してきました。異なるランダムシードでモデルを千回訓練した場合、または訓練データを再サンプリングした場合、特定の入力に対して異なるモデルスコアの集合を生成するでしょう。遭遇する可能性のある不確実性のさまざまなソースを本当に解明するために、ディープアンサンブルまたはベイズモデリングなどの手法を使用して、不確実性を測定するための分布アプローチを見ることをお勧めします。これらについては、今後のポストでより深く掘り下げます。

クレジット

Nithum Thain、Adam Pearce、Jasper Snoek&Mahima Pushkarna // March 2022

このコンテンツに協力してくれた、Balaji Lakshminarayanan、Emily Reif、Lucas Dixon、Martin Wattenberg、Fernanda Viégas、Ian Kivlichan、Nicole Mitchell、Meredith Morrisに感謝します。

脚注

あなたの決定は、降雨の確率とその重大度(つまり、どのくらいの雨が降るか)の両方に依存する可能性があります。今のところ、確率に焦点を当てます。

厳密に単調関数をモデルに適用することで、常にスコアの順序が同じになります。

この例では、バケット内の要素のモデルスコアをバケットの平均に変更することで、モデルスコアを調整します。