第426話|機械学習の予測区間って、どうやって求めるの?
– Conformal Predictionで作る機械学習モデルの予測区間 –

第426話|機械学習の予測区間って、どうやって求めるの?– Conformal Predictionで作る機械学習モデルの予測区間 –

機械学習や統計モデリングでは、将来の値や未知のデータ点を予測することがしばしば求められます。

しかし実際に役立つ予測を行うためには、「この予測値の周辺にはどの程度の不確実性があるのか」を示すことが重要です。

つまり、単なる点推定(予測値)だけでなく、その値がどの区間内に収まるかという予測区間を提示する必要があります。

たとえば、ある商品の需要を来月に予測するときに、「予測は 100 個です」と伝えるだけでは不十分な場合があります。

実際には「需要は 80 〜 120 個になる可能性が高い」といった形で、どのくらい幅があるかを示せると、在庫管理や生産計画のリスクが評価しやすくなります。これこそが予測区間を提示する意義です。

ここで注目したいのが、Conformal Prediction (CP) と呼ばれる手法です。

CPは、データが独立同分布(i.i.d.)または交換可能性(exchangeability)を仮定できる場合に、ユーザーが設定した信頼度(例えば 90% や 95%)を理論的に担保する予測区間を構築できる枠組みとして知られています。

複雑なモデルでも適用可能であり、回帰問題に限らず分類問題や時系列分析など幅広い領域で応用例が増えつつあります。

今回は、Conformal Predictionで作る機械学習モデルの予測区間のお話しをします。

Conformal Predictionの概要

Conformal Prediction (CP) の中でも実用上よく用いられる Split Conformal 方式について、その基本的な仕組みや手順、理論的背景を説明します。

 Split Conformal Prediction とは

Split Conformal (あるいは Split Conformal Inference とも呼ばれます) は、以下のようにデータセットを2つに分割して進めます。

Train データ

  • 全体の一部 (例: 80%) をモデル学習に使用
  • このデータだけを用いて、回帰モデルや機械学習モデル(線形回帰やランダムフォレストなど)をトレーニングする。

Calibration データ

  • 残りの部分 (例: 20%) を「キャリブレーション」(調整)に使用
  • 学習済みモデルを使い、この部分のサンプルに対する予測誤差を計算し、その誤差分布から「どのくらいの幅があれば、新しいデータに対して一定の信頼度が保てるか」を推定する。

実際に未知の入力xに対する予測区間をつくるとき、キャリブレーション用データで得られた誤差分布(不適合度の分布)を使い、理論的に保証された近似的な予測区間を構築します。

  • Train データを使い、予測区間を求めるための機械学習モデルを構築
  • Calibration データを使い、構築した機械学習モデルで誤差分布を計算

このSplit Conformal 方式は、データが i.i.d.(または交換可能)である と仮定しています。

これは、分割前後でデータの統計的性質が大きく変化しないことを前提にしており、キャリブレーションの過程で得た誤差分布が新しい入力にも当てはまる、という考え方をとっています。

 不適合度 (Nonconformity Measure) と残差の活用

Conformal Prediction で「予測のずれ具合」を測る指標は 不適合度 (nonconformity measure) と呼ばれます。

回帰タスクで最もシンプルなのは、以下のような 絶対誤差などです。

  • は実際の観測値
  • は学習モデル による予測値(例:

もちろん、二乗誤差 や標準化残差など、様々な形の不適合度が提案されています。

Split Conformal でも根本的な考え方は変わらず、「キャリブレーションデータでの不適合度の分布」を利用して未知サンプルを評価します。

 Split Conformal による予測区間構築の流れ

以下では、回帰問題の例を想定し、最も基本的な Split Conformal の手順を説明します。

  ステップ 1: データの分割

全データをシャッフル(交換可能性を維持)したうえで、以下のように分割します。

  • Train データ ( サンプル)
  • Calibration データ ( サンプル)

しばしば 8:2 や 9:1 など、実務上許容できる比率で分割することが多いです。

  ステップ 2: モデルの学習

Train データを用いてモデル を学習します。

このとき、まだ Calibration データは使いません。Train データからモデルを作るだけです。

  ステップ 3: キャリブレーションデータでの誤差(不適合度)を計算

Calibration データ に対して、学習モデル で予測を行い、不適合度 を求めます。

たとえば絶対誤差なら

これをキャリブレーション用の として保管します。

  ステップ 4: 新しい入力 に対する予測区間の計算

未知の入力 に対して、まず学習モデル から点予測値 を得ます。

このとき、「キャリブレーションデータの不適合度分布」を基に、以下のような単純な区間推定を行うことができます。

  1. キャリブレーションデータの絶対誤差 を昇順に並べる。
  2. (例えば 95% のカバレッジを目指す場合)上位5%に相当する値 を取得する。より正確には、-分位点
  3. 新しいサンプルの予測値 を中心に、 した範囲 予測区間とする。

この区間が、理論的に近似的な「(例:95%)の確率で真の を含む」と解釈できます。

実際には、計算上の細かい調整やより洗練された不適合度の定義を用いることで、区間幅を少し狭めつつカバレッジを維持する技術が研究されています。

  不適合度のバリエーション

Split Conformal で回帰モデルを評価する際、よく用いられる不適合度は 絶対誤差 (absolute error) ですが、他にも以下のような定義が可能です。

二乗誤差

標準化残差

不適合度が異なると、Calibration データで得られる分位点 も変化し、結果的に予測区間の形状や幅が変わります。

 理論的なカバレッジ保証(近似)

Conformal Prediction は、データが i.i.d. であるとき、理論上は の確率で「真のラベル」が予測区間に含まれることを保証します。

Split Conformal でも、その保証は近似的に成り立ちます。

実務では以下の点に注意が必要です。

  • 有限サンプル: データ数が十分でない場合、カバレッジ率が理想より上下にブレる可能性がある。
  • モデル誤差: 学習したモデル自体が大きなバイアスを持つと、Calibration データで補正しきれない可能性がある。

時系列予測における Conformal Prediction

Conformal Prediction (CP) を時系列データに応用する際の注意点と代表的なアプローチについて紹介します。時系列データは自己相関や非定常性、トレンドなどを伴うことが多く、i.i.d.(独立同分布)の仮定が成り立ちにくいのが大きな特徴です。

 時系列特有の課題

  i.i.d. 仮定の崩れ

時系列データでは隣接した時点同士に強い相関(自己相関)が存在し、データが互いに独立であるという仮定が大きく崩れることがあります。

  • 例: 今日の株価は昨日・一昨日の株価と関連が強い。
  • 例: ある季節の需要は前年同季節の需要と似た傾向を示す。

このように、データをシャッフルすれば独立同分布とみなせるわけではない点が、時系列データならではの難しさです。

  非定常性

時系列データは、時間経過とともに平均や分散、相関構造などが変化する非定常性を持つことも多いです。

一定期間では近似的に定常だとみなせても、長期間ではその仮定が当てはまらない場合があります。

  • 例: マーケットの構造変化、社会・経済のトレンド変化など。

こうした状況下で「過去データと新たに得られるデータは同じ分布からのサンプル」という発想が成り立たなくなると、Conformal Prediction の前提が揺らいでしまいます。

 時系列データへの基本アプローチ

時系列データで Conformal Prediction を適用する場合、次のようなアプローチをとります。

  • 時系列を「疑似的に」独立なブロックに分割する
  • ローリング (rolling) なウィンドウを使って分布の変化に対応する
  • データが到着するたびにモデルと不適合度を更新する

  ブロック分割 (Block Conformal) アプローチ

自己相関が強い場合でも、ある程度の長さのブロックごとに区切って扱うことで、「ブロック間は交換可能」という緩やかな仮定を置く手法です。

たとえば、以下のように進めることができます。

ブロックの作成

  • 時間軸を等間隔のブロック(例: 1週間単位)に区切る。
  • もしくは自己相関が十分に減衰しそうなブロックサイズを経験的に設定する。

ブロック単位での不適合度の算出

  • 過去のブロックデータでモデルを学習し、あるブロックを “Calibration” ブロックとして活用。
  • 各ブロック単位で平均誤差などを求め、「ブロックごとの不適合度」を得る。

Conformal の適用

  • ブロック単位の不適合度分布を用い、分位点を取得して予測区間を構築。
  • 新しいブロックが得られた場合は、古いブロックを捨てる or 全ブロックを再評価するなど運用方針を決める。

ブロック長さの選択は「自己相関が消失するまでのラグ」「ビジネス的な期間」などを考慮し、試行錯誤が必要です。

ブロック間が本当に交換可能とみなせるかはデータの特性次第(トレンドが強い場合はさらに工夫が必要)です。

  ローリングウィンドウを用いたアプローチ

多くの時系列予測シナリオでは、最新の一定期間 のデータだけを用いてモデルを更新する手法(ローリング・スライディングウィンドウ)が採用されます。

たとえば、「直近 3 ヶ月のデータを使ってモデルを学習し、翌週を予測する」、1 週間後にもう一度「直近 3 ヶ月」を取り直す……。

ローリング・スライディングウィンドウと CP を組み合わせる場合も、「どのデータを Calibration 用に使うか?」という設計が重要です。

Split Conformal の利用

  • ウィンドウ内をさらに Train/Calibration に分ける。
  • Train で学習したモデルに対する誤差を、同じウィンドウの Calibration で算出。
  • 次に未知の時点を予測するとき、その Calibration の誤差分位点を用いて区間を作る。

オンライン更新(逐次更新)

  • 新しい時点が到着するたびに、過去一定期間のデータを使ってモデルを再学習し、不適合度の分布をアップデート。

このように、「過去のある時点~現時点」までの時系列を “擬似的に” i.i.d. に近い形で扱うことで、CP のアイデアを生かすことが可能です。

  オンライン Conformal Prediction

オンライン (sequential) Conformal Prediction とは、データが順次到着する環境で、一つひとつの新しいサンプルが入るたびに予測区間を更新していく手法の総称です。

時系列の場合も、データが時系列順に得られる環境においてオンライン方式が自然にマッチします。

ただ、幾つかの注意点があります。

  • 逐次到着するサンプル(新しいデータ)をどこまでCalibrationに使うか?( 計算コストとのトレードオフ)
  • トレンドや構造変化が生じた場合、古いデータの分布が通用しなくなるため、どうすべきか?(ウィンドウを短くする、変化点検知でリセットするなどの工夫が必要)
  • モデルそのものもオンライン更新可能なアルゴリズムで学習るのか?(例: Online Gradient Descent, Online Random Forest)

Conformal Predictionのメリットと限界

 メリット

Conformal Prediction の大きな強みは、モデルの内部構造に依存せず、単に出力された予測値とその誤差(残差)を利用して予測区間を構築できる点にあります。

そのため、どのような機械学習アルゴリズムとも組み合わせやすく、特定のモデルに特化した手法を用いなくても済みます。

メリット項目 内容
モデルに依存しない どんな回帰・分類モデルでも「残差(不適合度)」を活用できるため、特定のモデルに縛られず幅広い手法に適用可能。
理論的カバレッジ保証 i.i.d.(または交換可能性)の仮定の下で、設定した信頼度(例:95%)で真のラベルが予測区間に含まれることが理論的に保証される。
分布仮定不要 ベイズ推定のような事前分布の設定や複雑な分布仮定が不要で、シンプルな前提のみで予測区間が構築できる。
汎用性と拡張性 回帰、分類、時系列、オンライン学習など様々なタスクに適用でき、不適合度の定義を工夫することで応用範囲が広がる。
Split Conformal による計算効率の良さ 一度学習したモデルの残差分布(キャリブレーション)を利用するため、再学習を繰り返さず大規模データにも対応できる。

設定した信頼度に合わせたカバレッジが理論的に保証されるため、予測結果に対する不確実性を定量的に示すことができ、分布仮定を必要としないシンプルさも実用上大きなメリットとなっています。

さらに、Split Conformal を用いれば、キャリブレーション用のデータから一度分位点を求めるだけで予測区間が得られるため、計算負荷が低く、大規模なデータセットにも容易に適用できるという点も評価されています。

 デメリット(限界)

CP の理論的保証はデータが i.i.d. であることを前提としており、時系列や空間的に依存関係が強いデータにはそのまま適用できない場合があります。

これらの場合、追加の工夫(例えばブロック分割やローリングウィンドウなど)が必要となり、理論上のカバレッジが崩れるリスクが存在します。

デメリット項目 内容
交換可能性(i.i.d.)の仮定依存 CP の理論的保証はデータが独立同分布であることに依存しており、時系列や空間依存が強いデータではそのままでは保証が成立しにくい。
データ量不足時の不安定性 キャリブレーション用データが十分でない場合、分位点の推定が不安定になり、予測区間が過度に広がったり狭まったりするリスクがある。
区間幅の一様化傾向 単純な絶対残差に基づく不適合度の場合、局所的な予測の難しさや外れ値に対する柔軟な対応ができず、すべてのサンプルに同一の幅が与えられがちである。

キャリブレーション用のデータが十分に確保できないと、分位点の推定にばらつきが生じ、結果として予測区間が適切に設定できなくなる可能性がある点も注意が必要です。

さらに、単純な不適合度の定義では、モデルが苦手とする領域に対しても一律の区間幅が与えられてしまうという問題があり、場合によってはより複雑な不適合度の設計が求められます。

 他の不確実性推定手法との比較

手法 前提・仮定 実装難度 強み 弱み
Conformal Prediction i.i.d. 仮定 比較的容易 モデル非依存で、理論的な区間カバレッジ保証が得られる 交換可能性の仮定が崩れると保証が不十分になり、データ分割のバランス調整が必要
ベイズ推定 事前分布や事後分布の設定 やや高(MCMC等) 事前知識を反映でき、複雑なモデルにも対応可能 大規模データへの適用が難しく、事前分布の設定に主観的な要素が入りやすい
ブートストラップ i.i.d. リサンプリング 中程度 推定量の信頼区間をシンプルに計算できる 時系列など依存構造が強いデータでは適用に工夫が必要で、小サンプルではばらつきが大きい
アンサンブル手法 モデル設計次第 中程度~やや高 複数モデルの出力を組み合わせることで予測精度が向上する 区間推定は各モデルに依存し、チューニングが複雑になる場合が多い

ベイズ推定は、事前分布を活用して不確実性を反映できるため柔軟なモデリングが可能ですが、その反面、計算コストや主観的な分布設定が問題になることがあります。

ブートストラップはリサンプリングにより信頼区間を推定するシンプルな手法ですが、依存関係が強いデータに対しては特別な対策が必要です。

アンサンブル手法は複数のモデルを組み合わせることで精度が向上する点は評価できるものの、明示的な予測区間を得るには各モデルの不確実性の扱いが重要となるため、CP とは性質が異なります。

応用例と分類問題への適応

 需要予測・在庫管理

需要予測では、たとえば小売業や物流業で商品需要を数量として見積もる必要があります。

Conformal Prediction を用いれば、単なる「需要量の予測値」だけでなく、需要がどの範囲に収まりそうかという予測区間を提示できます。

これにより、在庫不足・在庫過多などのリスクをより定量的に管理することが可能になります。

たとえば、小売店での週次販売量データに対して線形回帰やランダムフォレストを適用し、その残差(不適合度)をキャリブレーションして区間を求めます。

ただし、季節性などの影響で i.i.d. 仮定が厳しい場合は、ローリングウィンドウやブロック分割などの追加設計が必要です。

 金融時系列データでのリスク評価

株価や為替レートなどの金融時系列では、将来の価格水準やリスク指標(ボラティリティなど)の予測に不確実性が付きまといます。

Conformal Prediction による信頼度付き予測区間は、リスク許容度に応じた運用判断や損失回避戦略を立てる際の指標となりえます。

たとえば、金融時系列モデル(ディープラーニング系モデル)を用いて残差を解析し、Conformal Prediction で区間を構築するといいでしょう。

また、トレンド転換やボラティリティ変化が頻繁に起こる場合、短いウィンドウを使うオンライン学習型の CP が検討されることが多いです。

 医療データでの診断・予後予測

医療データ分析では、不確実性を考慮することが重要です。

疾患の予後(治療効果や再発リスクなど)を予測する際、CP による予測区間が得られれば、医師や患者が治療方針を決定する上でリスクを正しく認識する一助となります。

たとえば、回帰タスク(例:ある治療後の血液検査数値や機能的スコアの予測)に対して、Conformal Prediction で 95% のカバレッジを目指す区間を提示できます。

ただし、データの交換可能性を担保しにくい多施設データなどでは、調整や前処理が必要になる場合があります。

 異常検知や外れ値検出

異常検知では、通常の「正常サンプル」からどれだけ逸脱しているかを数値化する指標が不可欠です。

Conformal Prediction をうまく使うと、新しいサンプルに対する不適合度が一定閾値を超えるかどうかで「異常度」を測る手法が考えられます。

たとえば、正常データで回帰もしくは再構成モデル(例:オートエンコーダ)を学習し、Conformal Prediction を適用して不適合度分布を得ることができます。

ただし、クラス不均衡が激しい場合や、異常ラベルの定義が曖昧な場合は、通常の i.i.d. 仮定が破れる可能性もあるので注意が必要です。

 マルチクラス分類への応用

分類タスクでも Conformal Prediction は使われており、クラスごとに予測集合を構築する形で応用されます。

つまり、入力に対して「最もあり得るクラスは A だけど、一定の信頼度を確保したい場合は B というクラスも含む予測集合を提示する」といった枠組みです。

たとえば、マルチクラス SVM やニューラルネットワークを用い、各クラスのスコアと不適合度を定義。p値がある閾値を超えるクラスのみを予測集合として返すという使い方ができます。

このような使い方の場合、実用面では「どのクラスも含まれない」ケースをどう処理するか、もしくは「予測集合が大きくなりすぎる」問題への対処が求められます。

今回のまとめ

今回は、Conformal Predictionで作る機械学習モデルの予測区間のお話しをしました。

Conformal Prediction (CP) の基本原理から応用例までを簡単に説明しました。

まず、CP はどのようなモデルにも適用でき、残差(不適合度)を活用して設定した信頼度で予測区間を構築する理論的な枠組みであることを解説。

特に、Split Conformal の手法により、学習データとキャリブレーションデータに分割することで計算負荷を大幅に低減しながら、理論的なカバレッジ保証を近似的に実現できます。

CP はシンプルながらも強力な不確実性推定手法であり、適切な工夫を行えば幅広い分野での実用が期待できる技術であるとまとめることができます。

機械学習モデルの予測区間を求めるInductive Conformal PredictionをPythonで実装してみよう