rickey1227の日記

機械学習や計量経済学、ソフトウェアエンジニアリング、アジャイル、開発組織などについて書きます

機械学習による区間予測入門 ④: Conformalized Quantile Regression

 本記事は機械学習による区間予測入門シリーズの4記事目です。他記事へのリンクはこちら: 

機械学習による区間予測入門 ①: はじめに

機械学習による区間予測入門 ②: 分位点回帰

機械学習による区間予測入門 ③: Conformal Prediction

機械学習による区間予測入門 ⑤: 予測区間の評価指標

機械学習による区間予測入門 ⑥: 実装例


目次:

はじめに

 分位点回帰のみを用いる予測区間の算出方法だと不均一分散性を考慮した柔軟な予測区間を作成できる一方、事前に決めた有意水準を満たせるかどうかが非自明であったり、実証的にも有意水準を満たせない場合があることを②の記事で確認しました。他方、 ③の記事の通り、Conformal Prediction はモデル非依存な予測区間を算出でき、予測区間の中に正解ラベルが含まれる確率について望ましい性質を持っていますが、区間の幅が定数になってしまう制約がありました。本記事で紹介する Romano et al. (2019) による Conformalized Quantile Regression は、両者の長所を組み合わせたアプローチとして予測区間の計算で広く応用されています。

分位点回帰 CP CQR
予測区間の幅 ×
予測区間の性質

 本記事は目次の通り、アプローチの直感的理解や具体的なアルゴリズムを先に説明し、その後でアルゴリズムの解釈や実務上のポイント、手法の限界について述べます。また、最後のオプショナルなセクションでは well-calibrated property と呼ばれる有限標本性質を証明していますが、議論の大枠は③の記事に基づいています。

CQR の直感的理解

 CQRのエッセンスは大きく2点です:

  1. 分位点回帰モデルを学習して予測区間の上限と下限を予測する
  2. 1のモデルの予測結果をどれくらい補正したら良いかを、ホールドアウトしておいたデータ (calibration set) で計算する

 1では分位点を予測出来るモデルであれば好きな学習アルゴリズムを用いてモデルを学習して良いです。例えば LightGBM を用いて上限と下限の2つのモデルを学習したり、ニューラルなモデルであればモデルを2つ学習するやり方の他に区間そのものを学習する方法もあります*1。ここが大きな利点であり、欠損値や質的変数を含む特徴量から成るテーブルデータのMLタスクの場合は LightGBM で分位点回帰が可能で、自然言語や画像認識などのMLタスクはそのドメインに合ったニューラルネットワークの損失関数を pinball loss に設定することで分位点回帰を行えるので、非常に広範な機械学習ドメインで予測区間を計算することが出来る手法なのです。

 2のステップでは、分位点回帰による予測結果が予め定めた予測区間有意水準を満たしていない場合、CQRによる区間を広げる補正が可能です。逆に分位点回帰による予測区間が不必要に広い場合は、正解データが区間の中に入る確率を元の有意水準に保ったまま区間を狭めるよう補正出来ます。2のステップは1で予測した予測区間と正解データにのみ依存し、1の学習アルゴリズムには依存せずに区間の補正が可能です。

図 (1): CQRで補正したい予測区間の例。

アルゴリズム

ここでは前セクションの1,2のステップの具体的な手順である、アルゴリズムの詳細をまず紹介します。

  1. 予測区間有意水準  \alpha を定める
  2. データを train set  \mathbb{D}_{\text{train}} と calibration set  \mathbb{D}_{\text{cal}} に分割する
  3. Train set を用いて、有意水準 \alpha となるように分位点回帰モデルを学習する
  4. Calibration set を用いて、3のモデルによる各インスタンスの予測結果  (\hat{q}_{\text{lower}}(x_i), \hat{q}_{\text{upper}}(x_i)) を得る
  5. Calibration set を用いて、式 (1) で表される各インスタンスの non-conformity measure  E_i を計算する

\begin{align} E_i = \max \{\hat{q}_{\text{lower}}(x_i) - y_i, y_i - \hat{q}_{\text{upper}}(x_i)\} \end{align}

  1. Calibration set における  E_i について、有意水準  (1-\alpha)(1 + 1/n_{\text{cal}}) の empirical quantile である定数  Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}) を計算する
  2. 未知のインスタンス  x に対する予測区間は次の通り算出する:  (\hat{q}_{\text{lower}}(x) - Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}), \hat{q}_{\text{upper}}(x) + Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}))

疑似コードは以下のようなイメージです:

# 有意水準を定める (90%予測区間なら alpha = 0.1)
alpha = 1 - 0.9

# 分位点回帰モデルの学習は好きなやり方で良い
# ここでは5%分位点と95%分位点を予測する2つのモデルを学習する
model_lower = train_lower_quantile_reg(X_train, y_train, significance=alpha / 2)
model_upper = train_upper_quantile_reg(X_train, y_train, significance=1 - alpha/2)

# calibration set における予測値を得る
y_cal_lower = model_lower.predict(X_cal)
y_cal_upper = model_lower.predict(X_cal)

# Non-conformity measure である E を計算し、E をもとに定数 Q を算出する
E = np.max(np.array([y_cal_lower - y_cal, y_cal - y_cal_upper]).T, axis=1)
Q = np.quantile(E, ((1 - alpha) * (1 + 1 / X_cal.shape[0])))

# 未知データへの予測にはモデルの予測値に ± Q の定数で補正する 
y_test_lower = model_lower.predict(X_test) - Q
y_test_upper = model_upper.predict(X_test) + Q

アルゴリズムの解釈

 下記の証明のセクションで示す通り、未知のインスタンス  x_{\text{test}} におけるこのアルゴリズムで導かれた  1-\alpha 予測区間である  C(x_{\text{test}}) は、 "well calibrated property" と呼ばれる以下の性質を満たします:

\begin{align} 1 - \alpha \leq P(y_{\text{test}} \in C(x_{\text{test}})) \leq 1 - \alpha + \dfrac{1}{n_{\text{cal}}+1} \end{align}

 ここでは上記のアルゴリズムのセクションの5〜7のステップがどのような意味を持つのか、何を計算してどのように式 (2) を達成しているのかを考えてみます。

Non-conformity measure

 式 (1) における calibration set 内のあるインスタンス  i に関して、モデルの予測値である  (\hat{q}_{\text{lower}}(x_i), \hat{q}_{\text{upper}}(x_i)) を固定値として、正解ラベル  y_i が変化したときに non-conformity measure  E_i がどのように変化するかを図示したのが図 (2) です。

図 (2): あるインスタンス  i の正解ラベル  y_i と non-conformity measure  E_i の関係。

 E_i は予測区間が正解とどれだけ不一致しているかを示す尺度で、予測区間の中に正解ラベルがある場合は値が負になり、予測区間の外にある場合は正、区間の端にちょうど正解が一致した場合はゼロとなります。例えばアイスクリームの価格を100円〜120円と予測していたときに、実際の正解が130円だった場合、  E_i = 130 - 120 = 10 円だけ区間の端から予測を外している、という意味です。正解ラベルや予測区間そのものとスケール (単位) が一致した尺度であることがポイントで、これにより後述の予測区間の補正が可能になります。

予測区間の補正

 前述のような  E_i を calibration set の全てのインスタンスで計算してみたときに、  E はどのような分布をしているでしょうか。例えばアイスクリームの価格予測の例で  80\%予測区間を求めたいケースを考えます。 E の約  80\% 分位点を集計した結果、  Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}) = 0 が得られたとします。このとき、calibration set 全体のうちの約  80\% E_i \leq 0 となっていて、残りの約  20\% E_i > 0 となります。そのため分位点回帰モデルの予測結果のみで  P(y_{\text{test}} \in C(x_{\text{test}})) \fallingdotseq 80\% を達成でき、区間を補正する必要はありません。

 次に、上述のアイスクリームの価格予測の  80\%予測区間の例で、  Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}) = 10 円が得られたケースを考えます。 このとき、 Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}) > 0 なので、  E_i \leq 0 となっているインスタンスは全体の  80\% に満たないはずです。分位点回帰による予測区間が狭すぎて、  E_i \gt 0 となるインスタンスが多い状態です。すなわち分位点回帰モデルの予測結果のみだと  P(y_{\text{test}} \in C(x_{\text{test}})) \lt 80\% となり、区間を広くするよう補正してあげる必要があります。 E_i の約  80\% 分位点では区間の左右どちらかの端から正解データまで  10 円分予測を外してしまっているので、未知のインスタンスの予測時に一律に区間の上限と下限の両方を  10 円分広くしてあげれば、  P(y_{\text{test}} \in C(x_{\text{test}})) \fallingdotseq 80\% を達成出来るはずです。

 逆に負の値である  Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}) = -15 円が得られた場合はどうでしょうか。 Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}) \lt 0 なので、  E_i \leq 0 となっているインスタンスは全体の  80\% より多い状況です。分位点回帰モデルの予測結果のみだと区間が広すぎて  P(y_{\text{test}} \in C(x_{\text{test}})) \gt 80\% となり、もっと区間を狭くしても  P(y_{\text{test}} \in C(x_{\text{test}})) \fallingdotseq 80\% を維持出来ます。 E_i の約  80\% 分位点では  15 円だけ区間が左右どちらかに余分に広い状況なので、未知のインスタンスの予測時に区間の上限と下限の両方を  15 円分狭くしても  P(y_{\text{test}} \in C(x_{\text{test}})) \fallingdotseq 80\% に出来るはずです。

 下の図 (3) は区間が広すぎるケースと狭すぎるケースにおける、分位点回帰による予測区間 E_i の分布を示しています。どういう状況で  Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}) がゼロから乖離するのか、イメージが湧いてくると思います。

図 (3): 分位点回帰による予測区間と non-conformity measure の分布の例。左は  Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}) \lt 0 なので CQR により区間は狭くなる補正がかかり、右は  Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}) \gt 0 なので CQR により広くなる。

実務上の注意点

ホールドアウト 

 CQR のアルゴリズムに厳密に従うならば、分位点回帰モデルのモデル選択に用いる validation set とは別に、  Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}) の集計に用いる calibration set という新たなホールドアウトが必要となります。ですが筆者の経験上、モデル学習時の validation set と CQR の calibration set は同じデータを使っても問題無いケースが多いと思います。 E_i y_i に関するシンプルな piecewise linear な変換を行っているだけで、  Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}) はその分位点の集計値にすぎず、非常に low variance な変換となります。そのため同じホールドアウトを二重に使ってもリークによる精度の過大評価の影響はほとんど無いケースが大半だと思います。もちろん、元の分位点回帰モデルをクロスバリデーションにより out-of-fold prediction を出力する形で学習し、CQR を OOF prediction に対するスタッキング学習器であると解釈すれば、ホールドアウトを増やすかどうかで悩む必要は無いでしょう。他方、巨大なニューラルネットワークで学習に時間を要するなど、気軽にクロスバリデーションを行えないケースはあります。その場合は、上記の理由で calibration set を別にホールドアウトしない、すなわち validation set を使い回すという選択肢もあり得ると思います。

有意水準

 分位点回帰のみではなくCQRを用いることの追加的な利点として、有意水準を固定することで問題設定をシンプルにしやすいという点もあげられます。例えば、予測区間算出におけるユーザー体験として望ましい有意水準  1-\alpha が既知であるとします。このとき、CQR を用いずに分位点回帰のみで区間予測のモデリングをすることを考えてみます。未知データにおける予測区間 1-\alpha \leq P(y_{\text{test}} \in C(x_{\text{test}})) を満たせなかった場合、特徴量エンジニアリングといった分位点回帰モデルのモデル選択に加えて、 \alpha を別の値である  \hat{\alpha} にチューニングすることで元の  1-\alpha \leq P(y_{\text{test}} \in C(x_{\text{test}})) を達成出来ないかも検討しなければなりません。他方、CQR を用いる場合は、  \alpha は元の値に固定した上で分位点回帰モデルのパフォーマンスを如何に向上させるかに集中することが出来ます。なぜなら、  1-\alpha \leq P(y_{\text{test}} \in C(x_{\text{test}})) は CQR による区間の補正で達成出来るからです。もちろん、望ましい有意水準  1-\alpha 自体が探索の対象であることの方が多いでしょうが、その場合でも望ましい有意水準の探索の問題と有意水準が固定となる分位点回帰モデルのパフォーマンス向上の問題とを分けて考えることが出来るようになります。

CQR の限界

予測区間の周辺確率と条件付き確率

  ③の記事で解説した Conformal Prediction と同様に、式 (2) はあくまで  x について周辺化した確率についての主張で、  x がどのような値でも成り立つ訳ではありません。すなわち、以下の式 (3) のような条件付き確率に関する命題が成り立つ訳ではありません。

\begin{align} 1 - \alpha \leq P(y_{\text{test}} \in C(x_{\text{test}}) | x_{\text{test}} = x ) \leq 1 - \alpha + \dfrac{1}{n_{\text{cal}}+1}. \end{align}

CQRは分位点回帰の予測結果を定数  Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}) で補正しているだけなので、通常は図 (4) の真ん中の図のように精度が高いところもあれば低いところもあってデータ全体で集計すると式 (2) が成り立っている状態となります。

図 (4): 予測区間の命題が周辺確率について成り立っていることを示す例 (中央)。Angelopoulos & Bates (2022) より転載。

分位点回帰の重要性

 CQR を使えば、元の分位点回帰モデルがどんなものであっても、どれほど精度が悪くても 式 (2) を満たすような補正が可能です。一方、CQR は前セクションの通り式 (2) の周辺確率を満たすために定数  Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}) で予測区間を補正するアプローチなので、そもそも元の条件付き分位点回帰の予測精度がある程度高いことが重要になります。裏を返せば、CQR 無しの分位点回帰のみでも十分に精度が高い状態でないと扱いづらいという欠点を抱えた手法でもあります。分位点回帰の精度が低い場合は、図 (5) の右側のように  Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}) による補正の影響が大きくなり、全体的に区間の幅が広いような予測結果になってしまいます。

図 (5): 精度の良い分位点回帰 (左) と精度の悪い分位点回帰 (右) による CQR の違い。

 このように、予測区間の算出においては、「区間の広さ」といった  P(y_{\text{test}} \in C(x_{\text{test}})) 以外の観点も重要になります。次回の記事では、機械学習における予測区間の評価指標について紹介します。

Well-calibrated property (オプショナル)

 本セクションでは、CQR による予測区間有意水準が有限標本においても満たされることを示す、式 (2) を証明します。

 最も重要な仮定として、 Conformal Prediction の場合と同様に、確率変数列  (x_1, y_1), ..., (x_n, y_n), (x_{\text{test}}, y_{\text{test}}) の exchangeability を仮定します。Exchangeability は IID をより一般化したような性質で、ほとんどの機械学習タスクにおいて満たされる性質と考えて差し支えないです。詳細が気になる方は ③の記事を参照してください。

  E_{\text{test}} を、以下の通り未知データにおける non-conformity measure とします:

\begin{align} E_{\text{test}} : = \max \{\hat{q}_{\text{lower}}(x_{\text{test}}) - y_{\text{test}}, y_{\text{test}} - \hat{q}_{\text{upper}}(x_{\text{test}})\} \end{align}

CQR による予測区間の定義から、

\begin{align} y_{\text{test}} \in C(x_{\text{test}}) \iff E_{\text{test}} \leq Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}}). \end{align}

従って、

\begin{align} P(y_{\text{test}} \in C(x_{\text{test}})) = P(E_{\text{test}} \leq Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}})). \end{align}

さらに、 \hat{q}_{\text{lower}} および  \hat{q}_{\text{upper}} を算出する学習モデルが、③の記事で定義した permutation invariant であるとします*2 (x_1, y_1), ..., (x_n, y_n), (x_{\text{test}}, y_{\text{test}}) が exchangeable であるため、  E_i for  i \in \mathbb{D}_{\text{cal}} \cup \{\text{test}\} も exchangeable となります。従って、③の記事の命題 1 と同様の証明により、

\begin{align} 1 - \alpha \leq P(E_{\text{test}} \leq Q_{1–\alpha}(E, \mathbb{D}_{\text{cal}})) = P(y_{\text{test}} \in C(x_{\text{test}})) \leq 1 - \alpha + \dfrac{1}{n_{\text{cal}}+1}. \end{align}

レファレンス

*1:詳細は②の記事の脚注 1 を参照してください。

*2:元論文では触れられていませんが、  E_i の exchangeability を導くには、学習モデルの permutation invariance の仮定が必要になります。③の記事の脚注 6 で述べた通り、勾配ブースティングやニューラルネットワーク等のバギングやミニバッチを用いる学習アルゴリズムは厳密には permutation invariant ではありませんが、 exchangeability preserving であるとみなせるため、permutation invariance の仮定のみでも一般性を失うことはありません。実務上のインプリケーションとしては、学習データの順序が重要になるような例外的な学習アルゴリズムでなければ、予測区間の補正に non-conformity measure の分位点を用いるアプローチが機能する、ということです。詳細は該当の脚注を参照してください。