不均衡データに対する機械学習:理論と実践

はじめに

みなさん、データ分析や機械学習をやっていると必ず直面する問題があります。そう、不均衡データです。クレジットカード詐欺検知や製造業の不良品検出など、現実の問題では「正常」と「異常」のサンプル数には圧倒的な差があることがほとんどです。
不均衡データの処理方法については「SMOTEでオーバーサンプリングすればいいんでしょ」とか「class_weight='balanced'を設定すればOK」といった断片的な知識は広まっていますが、その背後にある理論や、各手法の適用場面についての理解は意外と浅いものです。私自身も「なんとなくこの方法を使っておけば大丈夫だろう」と思っていた一人です。そして何より、実務では必ずと言っていいほど遭遇するのに、機械学習系の書籍ではあまり触れられてるのを個人的には一度も見たことがありません!(書籍の知識が古いだけかも...最近は理論系しか読んでいないもので...)
そこで今回は、不均衡データの理論から様々な対処法、そしてそれらがなぜ効果的なのかの概念的説明まで、徹底的に掘り下げていきたいと思います。初学者でも理解できるように、できるだけ直感的な例えも交えながら説明していきますね。

1. 不均衡データとは何か

1.1 不均衡データの定義と実例

不均衡データとは一言でいうと、分類問題においてクラス間のサンプル数に大きな偏りがあるデータセットのことです。よくある例として、二値分類問題(正常/異常、陽性/陰性など)では、一方のクラスが圧倒的多数を占めることが多いです。
実際の例を見てみましょう:

  • クレジットカード詐欺検知:詐欺取引は全体の0.1%未満
  • スパムメール検出:受信メールの5~10%がスパム
  • 顧客離反予測:離反する顧客は全体の3~7%程度
  • 地質調査:石油が埋蔵されている地点は調査地点全体の0.1%以下

このようなデータでは、単純に正解率(Accuracy)を最大化しようとすると、モデルは「全てを多数派クラスと予測する」という戦略を取りがちです。100:1の不均衡があれば、全て多数派と予測するだけで99%の正解率が出てしまいます。でも、これでは意味がありませんよね。

1.2 なぜ不均衡データが問題なのか

不均衡データが機械学習アルゴリズムにとって問題である理由をもう少し詳しく見ていきましょう。
まず第一に、ほとんどの機械学習アルゴリズムは暗黙的に「データが均衡している」ことを前提としています。例えば、決定木やニューラルネットワークの学習過程では、誤分類されたサンプルの数を最小化しようとします。不均衡データでは、少数派クラスのサンプルを全て誤分類しても、全体の誤分類率への影響は小さいため、アルゴリズムはそれを「許容」してしまいます。
具体的に考えてみましょう。1,000サンプルのデータセットで、陽性クラスが50サンプル(5%)だとします。このとき、全て陰性と予測するモデルの正解率は95%です。しかし、このモデルは陽性クラスの検出能力が全くないため、実用的には全く役に立ちません。
第二に、少数派クラスのサンプル数が少ないと、そのクラスの特徴を十分に学習できません。機械学習アルゴリズムが効果的に働くためには、各クラスの特性をカバーするのに十分なサンプル数が必要です。サンプル数が少ないと、モデルは少数派クラスの一部の特性しか学習できず、汎化性能が低下します。
第三に、決定境界(クラスを分ける境界線)が多数派クラス側に押しやられます。これは特にSVMなどのマージン最大化アルゴリズムで顕著です。不均衡データでは、多数派クラスのサンプルが境界を「押し込む」ことで、少数派クラスの領域が不当に小さくなります。

1.3 数学的視点から見た不均衡データの課題

不均衡データの問題をより厳密に理解するために、数学的な視点で考えてみましょう。
機械学習アルゴリズムの多くは、全サンプルにわたる平均損失を最小化するように設計されています:

L = \frac{1}{N} \sum_{i=1}^{N} l(y_i, \hat{y}_i)
ここで、Nはサンプル数、l(y_i, \hat{y}_i)は各サンプルの損失関数、y_iは真のラベル、\hat{y}_iは予測ラベルを表します。

この式を見ると、各サンプルは損失に等しく寄与していることがわかります。不均衡データでは、多数派クラスのサンプルが圧倒的に多いため、この平均損失は多数派クラスの性能に大きく左右されます。
具体例で考えてみましょう。1,000サンプル中50サンプルが陽性(5%)のデータセットで、全てのサンプルを陰性と予測するモデルを考えます。このとき、50個の陽性サンプルは全て誤分類されますが、全体の損失への寄与はわずか5%です。このような状況では、「全て陰性と予測する」という戦略が、損失関数の観点からは「良い」選択になってしまいます。
ベイズの定理を用いて考えると、この問題はより明確になります:

P(y=1|x) = \frac{P(x|y=1)P(y=1)}{P(x|y=1)P(y=1) + P(x|y=0)P(y=0)}
ここで、P(y=1)P(y=0)はそれぞれ陽性クラスと陰性クラスの事前確率(クラスの出現確率)を表します。

不均衡データではP(y=1) \ll P(y=0)となるため、P(y=1|x)(特徴xが与えられたときに陽性である確率)が過小評価されがちになります。例えば、陽性クラスが全体の1%しかないデータセットでは、P(y=1) = 0.01という非常に小さい値になります。この結果、特徴量の証拠が強くても、最終的な陽性確率は押し下げられてしまいます。
これを具体的に数値で見てみましょう。ある特徴パターンが陽性クラスでは80%の確率で、陰性クラスでは20%の確率で観察されるとします(つまりP(x|y=1)=0.8P(x|y=0)=0.2)。クラスが均衡していれば(P(y=1)=P(y=0)=0.5)、このパターンを持つサンプルが陽性である事後確率は:
P(y=1|x) = \frac{0.8 \times 0.5}{0.8 \times 0.5 + 0.2 \times 0.5} = \frac{0.4}{0.5} = 0.8

しかし、不均衡データ(P(y=1)=0.01P(y=0)=0.99)では:
P(y=1|x) = \frac{0.8 \times 0.01}{0.8 \times 0.01 + 0.2 \times 0.99} = \frac{0.008}{0.008 + 0.198} \approx 0.039

この数値例から、同じ特徴パターンでも、不均衡データでは陽性である確率が0.8から0.039へと劇的に低下することがわかります。これは不均衡データにおける事前確率の影響の大きさを示しています。

2. 不均衡データへの対処の根本的な考え方

不均衡データに対処するための手法は多岐にわたりますが、その根本にある考え方は共通しています。それは「少数派クラスの重要性を相対的に高める」ということです。この考え方に基づいて、様々なアプローチが開発されてきました。

2.1 基本的アプローチの体系

不均衡データへの対処法は、大きく4つのカテゴリに分類できます。
一つ目は「データレベルの手法」で、トレーニングデータ自体を変更して均衡を取るアプローチです。例えば、多数派クラスのサンプルを減らす(アンダーサンプリング)、少数派クラスのサンプルを増やす(オーバーサンプリング)、あるいはその両方を組み合わせるなどの方法があります。
二つ目は「アルゴリズムレベルの手法」で、機械学習アルゴリズム自体を不均衡データに対応させるアプローチです。例えば、決定木のノード分割基準を修正する、SVMの目的関数を調整するなどの方法があります。
三つ目は「コスト敏感学習」で、異なるクラスの誤分類に異なるコスト(重み)を設定するアプローチです。例えば、少数派クラスの誤分類コストを高く設定することで、モデルはより慎重に少数派クラスを予測するようになります。
四つ目は「アンサンブル手法」で、複数のモデルを組み合わせて性能を向上させるアプローチです。例えば、ブースティングやバギングなどの手法を不均衡データ向けに拡張した方法があります。
これらの手法は相互に排他的ではなく、むしろ組み合わせて使用することで相乗効果を得ることができます。例えば、データサンプリング技術とコスト敏感学習を組み合わせることは非常に一般的な実践です。

2.2 統計的基盤: なぜこれらの方法が機能するのか

これらの手法がなぜ効果的なのかを理解するために、決定理論の観点から考えてみましょう。 最適なベイズ分類器は、事後確率に基づいて決定を行います。二値分類の場合、サンプルxに対する最適な予測は以下の条件を満たすときにクラス1(少数派)と予測します:

P(y=1|x)P(\text{loss}|y=1, \hat{y}=0) > P(y=0|x)P(\text{loss}|y=0, \hat{y}=1)
ここで、P(\text{loss}|y=i, \hat{y}=j)は真のクラスがiのときにjと予測した場合の損失(コスト)を表します。

標準的な機械学習アルゴリズムでは、全てのタイプの誤分類に対して均等なコストを仮定しています(つまり、P(\text{loss}|y=1, \hat{y}=0) = P(\text{loss}|y=0, \hat{y}=1))。しかし、不均衡データではP(y=1|x)が小さくなるため、この条件を満たすことが難しくなります。

不均衡データへの対処法は、この不均衡を以下のような方法で補正します:

サンプリング手法は事前確率P(y=1)P(y=0)を変更します。例えば、アンダーサンプリングは多数派クラスのサンプル数を減らすことでP(y=0)を減少させ、オーバーサンプリングは少数派クラスのサンプル数を増やすことでP(y=1)を増加させます。

コスト敏感学習は損失項P(\text{loss}|y=1, \hat{y}=0)を調整します。具体的には、少数派クラスの誤分類コストを高く設定することで、不均衡を補正します。
アルゴリズムレベルの手法は、分類器が生成する確率推定値P(y=1|x)を直接調整します。例えば、確率しきい値を変更したり、確率推定のプロセス自体を修正したりします。

これらの方法はいずれも、不均衡データにおける事前確率の偏りを補正し、少数派クラスがモデルの学習過程で適切に考慮されるようにするものです。

3. データレベルの対処法: サンプリング技術

データレベルのアプローチは、トレーニングデータのクラス分布を直接変更することで不均衡に対処します。ここでは、主要なサンプリング技術とその背後にある理論について詳しく解説します。

3.1 アンダーサンプリング手法

アンダーサンプリングは、多数派クラスのサンプル数を減らすことでクラスバランスを改善する手法です。

3.1.1 ランダムアンダーサンプリング(RUS)

最も単純なアンダーサンプリング手法は、多数派クラスからランダムにサンプルを削除する方法です。

数学的には、多数派クラスのサンプル集合S_{maj}から、少数派クラスのサンプル数|S_{min}|に等しくなるようにランダムにサンプルを選択し、新しい多数派サンプル集合S'_{maj}を作ります:

S'_{maj} \subset S_{maj} \text{ such that } |S'_{maj}| = |S_{min}|

この方法は非常にシンプルですが、重要な情報を失うリスクがあります。例えば、複雑な決定境界を持つ問題では、削除されたサンプルが境界の理解に不可欠だった場合、モデルの性能が低下する可能性があります。
概念的に説明すると、ランダムアンダーサンプリングは「多数派の声が大きすぎるから、代表者だけに発言してもらおう」というアプローチです。例えば、議会で一部の議員だけが発言するようなイメージです。単純ですが、ランダムに選ぶため重要な意見(データポイント)が失われる可能性があります。
ランダムアンダーサンプリングは、データ量が非常に多く計算コストの削減が必要な場合や、予備実験の段階で手早く結果を得たい場合に適しています。ただし、最終的なモデル構築には、より洗練された手法を検討すべきでしょう。

3.1.2 情報損失を最小化するアンダーサンプリング

ランダムアンダーサンプリングの最大の欠点は情報損失です。これを軽減するための手法がいくつか提案されています:

Tomek Linksは、異なるクラスに属するサンプルペア間の関係に着目したアンダーサンプリング手法です。 Tomek Linkとは、異なるクラスに属する最近傍サンプルペア(x_i, x_j)で、他のどのサンプルx_kについてもd(x_i, x_j) \lt d(x_i, x_k) \text{ かつ } d(x_i, x_j) \lt d(x_j, x_k)を満たすものを指します。ここでd()はサンプル間の距離を表します。

TomekLinks = {(x_i, x_j) | y_i \neq y_j, \nexists x_k: d(x_i, x_j) > d(x_i, x_k) \text{ or } d(x_i, x_j) > d(x_j, x_k)}
この手法では、Tomek Linksのペアのうち、多数派クラスに属するサンプルを削除します。これにより、クラス境界付近のノイズや曖昧なサンプルを除去し、よりクリーンな決定境界を得ることができます。
概念的に説明すると、Tomek Linksは「敵対する陣営の最前線同士」を見つけ出し、多数派側の「前線の兵士」を取り除くイメージです。これにより、境界があいまいな領域をクリアにし、クラス間の分離をより明確にします。
Tomek Linksは、クラス境界が不明瞭で、境界付近のノイズが問題となっている場合に特に効果的です。例えば、テキスト分類や画像認識など、クラス間の境界が複雑な問題に適しています。

Condensed Nearest Neighbor Rule (CNN)

CNNは、多数派クラスから、分類に必要最小限のサンプルだけを選択する手法です。

CNNは以下のアルゴリズムで実装されます:

  1. 少数派サンプル全体 S_{min}と、多数派から1つのサンプル xをランダムに選び、初期サブセットS' = S_{min} \cup {x}を作る

  2. 残りの多数派サンプルx \in S_{maj} \setminus S'について、S'の最近傍サンプルによる分類が誤っている場合にxS'に追加する

  3. ステップ2を繰り返し、S'が変化しなくなるまで続ける これにより、多数派クラスの中から「代表的な」サンプルだけを選択し、冗長なサンプルを除去することができます。
    概念的に説明すると、CNNは「最小限の代表者だけを選ぶ」方法です。多数派の中から「これさえあれば他は要らない」という最小限の重要サンプルを選出します。例えば、学生100人の意見を聞くのではなく、代表的な意見を持つ10人だけを選んで話を聞くようなイメージです。
    CNNは、データに冗長性が高く、少数のサンプルで多数派クラスの特性を十分に表現できる場合に適しています。例えば、シンプルな決定境界を持つ問題や、多数派クラスの分布がまとまっている場合に効果的です。

One-Sided Selection (OSS)

OSSは、Tomek LinksとCNNを組み合わせた手法です。まずTomek Linksを適用してノイズを除去し、次にCNNを適用して冗長なサンプルを削除します。
概念的に説明すると、OSSは「まず境界をきれいにしてから代表者を選ぶ」方法です。境界付近のノイズを取り除いた後で、必要最小限の代表サンプルを選ぶことで、より信頼性の高い学習を実現します。
OSSは、ノイズと冗長性の両方が問題となる複雑なデータセットに適しています。特に、クラス境界が不明瞭でありながら、多数派クラス内の冗長性も高い場合に効果を発揮します。

3.2 オーバーサンプリング手法

オーバーサンプリングは、少数派クラスのサンプル数を増やすことでクラスバランスを改善する手法です。

3.2.1 ランダムオーバーサンプリング(ROS)

最も単純なオーバーサンプリング手法は、少数派クラスのサンプルをランダムに複製する方法です。

少数派クラスのサンプル集合S_{min}から、多数派クラスのサンプル数|S_{maj}|に等しくなるまで復元抽出を行い、新しい少数派サンプル集合S'_{min}を作ります:
S'_{min} = S_{min} \cup {x | x \in S_{min} \text{ sampled with replacement}} \text{ such that } |S'_{min}| = |S_{maj}|
この方法は実装が簡単ですが、既存のサンプルを単に複製するだけなので、モデルが過学習しやすくなるというデメリットがあります。
概念的に説明すると、ランダムオーバーサンプリングは「少数派の声をコピーして大きくする」ように考えられます。例えば、少数意見を持つ人の発言を録音して繰り返し再生するようなものです。同じサンプルを繰り返し使うため、過学習のリスクがあります。
ランダムオーバーサンプリングは、サンプル数が比較的多い(数百以上)少数派クラスや、シンプルなモデルを使用する場合に適しています。また、初期実験や、他の手法との比較ベースラインとしても役立ちます。

3.2.2 SMOTE (Synthetic Minority Over-sampling Technique)

SMOTEは、少数派クラスの既存サンプル間に新しい合成サンプルを生成する手法です。

SMOTEの手順は以下のとおりです:

  1. 少数派クラスの各サンプルx_iについて、そのk近傍N_k(x_i)を求める

  2. N_k(x_i)からランダムに近傍点x_jを選ぶ

  3. 新しい合成サンプルx_{new}を以下の式で生成する:

x_{new} = x_i + \lambda \cdot (x_j - x_i)
ここで、\lambda \in [0, 1]はランダムに選ばれる補間係数です。

この手法では、既存のサンプルをただ複製するのではなく、特徴空間内で線形補間することで新たなサンプルを作り出します。これにより、少数派クラスの表現力が向上し、過学習のリスクも軽減されます。 概念的に説明すると、SMOTEは「少数派の間を埋める新しいサンプルを作る」方法です。例えば、リンゴとミカンの中間的な特徴を持つ新しい果物を創造するようなイメージです(もちろん実際には特徴空間での操作なので、解釈可能性はケースバイケースですが)。 SMOTEは、少数派クラスのサンプル数が中程度(数十~数百)で、特徴空間がある程度連続的な場合に特に効果的です。例えば、画像認識や数値特徴を持つ多くの問題に適しています。

3.2.3 改良版SMOTE

SMOTEには以下のような改良版があります:

Borderline-SMOTE

Borderline-SMOTEは、全ての少数派サンプルに同等に適用するのではなく、クラス境界付近の少数派サンプルに焦点を当ててオーバーサンプリングを行う手法です。

Borderline-SMOTEでは、少数派サンプルx_iのm個の近傍中、多数派クラスに属するサンプルの数m'に基づいて以下のように分類します:

  • m' = m: x_iをノイズとみなす

  • m'/2 \leq m' \lt m: x_iを境界サンプルとみなす

  • 0 \leq m' \lt m/2: x_iを安全サンプルとみなす

そして、境界サンプルに対してのみSMOTEを適用します。
これにより、決定境界の形成に最も影響を与えるサンプルを増やすことで、分類性能を効率的に向上させることができます。
概念的に説明すると、Borderline-SMOTEは「最前線の兵士を強化する」方法です。境界付近の少数派サンプル(つまり、最も「危険」なエリアにいるサンプル)だけを増強することで、効率的に分類性能を向上させます。
Borderline-SMOTEは、クラス境界が複雑で、少数派クラスが多数派クラスに「囲まれている」ような状況に特に適しています。例えば、異常検知や非常に不均衡なデータセットに効果的です。

ADASYN (Adaptive Synthetic Sampling)

ADASYNは、少数派サンプルの「難しさ」に基づいて合成サンプルを生成する手法です。

ADASYNでは、各少数派サンプルx_iの難しさを、そのk近傍における多数派サンプルの割合r_iとして定義します:
r_i = \frac{\text{多数派サンプルの数}}{k}
次に、このr_iを正規化して、各サンプル周辺に生成すべき合成サンプルの数を決定します:
\hat{r}_i = \frac{r_i}{\sum_j r_j}
そして、生成すべき合成サンプルの総数G\hat{r}_iを掛けた数だけ、x_i周辺に新しいサンプルを生成します。
この手法では、多数派クラスのサンプルに囲まれた「難しい」少数派サンプルほど、より多くの合成サンプルが生成されます。これにより、分類が困難な領域により注目した学習が可能になります。
概念的に説明すると、ADASYNは「苦戦している場所ほど援軍を多く送る」方法です。多数派クラスに囲まれて「危険度が高い」サンプルほど、より多くの類似サンプルを生成することで補強します。例えば、敵に囲まれている前線に優先的に援軍を送るような戦略です。
ADASYNは、少数派クラスの中でも特に「難しい」サンプルが存在する場合に特に効果的です。例えば、少数派クラスが複数のクラスタに分かれており、一部のクラスタが多数派クラスと重なり合っているような状況で力を発揮します。

SMOTE-NC (SMOTE for Nominal and Continuous features)

SMOTE-NCは、カテゴリカル(名義的)特徴と連続的特徴の両方を含むデータセットに対応したSMOTEの拡張版です。

連続特徴については通常のSMOTEと同様に線形補間を行いますが、カテゴリカル特徴については多数決原理を用いてサンプルを生成します:
x_{new}^{cat} = \text{多数決}(x_i^{cat}, x_j^{cat}, \ldots)
ここで、x_i^{cat}x_j^{cat}はそれぞれ、元のサンプルとその近傍サンプルのカテゴリカル特徴値を表します。
概念的に説明すると、SMOTE-NCは「混合データ型に対応した中間サンプル生成」と言えます。数値データは平均を取り、カテゴリデータは多数決を取ることで、両方のタイプのデータに対応します。例えば、「年齢」という連続特徴は平均を取り、「職業」というカテゴリカル特徴は最も頻度の高いものを選ぶイメージです。
SMOTE-NCは、カテゴリカル特徴と連続特徴が混在する実世界のデータセットに適しています。例えば、人口統計データや顧客データなど、様々なタイプの特徴を含むデータセットで効果的です。

3.3 ハイブリッドサンプリング手法

ハイブリッドサンプリング手法は、オーバーサンプリングとアンダーサンプリングを組み合わせたアプローチです。これにより、両方の手法の利点を活かすことができます。

SMOTE-ENN

SMOTE-ENNは、まずSMOTEを適用して少数派クラスをオーバーサンプリングし、その後Edited Nearest Neighbors(ENN)を適用してノイズを除去する手法です。

ENNは以下のアルゴリズムに基づいています:

  1. 各サンプルx_iについて、そのk近傍を求める

  2. x_iのクラスと、k近傍の多数決によるクラスが異なる場合、x_iを削除する

この手法では、SMOTEによって新たに生成されたサンプルも含めて、クラス境界付近のノイズを除去することで、より明確な決定境界を得ることができます。
概念的に説明すると、SMOTE-ENNは「増強してから洗練する」方法です。まず少数派クラスを強化し(SMOTE)、次にその結果を洗練させて、ノイズとなる可能性のあるサンプルを除去します(ENN)。例えば、まず部隊を増強した後で、最前線の混乱した部分を整理するようなイメージです。
SMOTE-ENNは、不均衡が中程度から大きく、クラス境界付近にノイズが存在する問題に適しています。特に、多数派クラスと少数派クラスが部分的に重なり合っている場合に効果的です。

SMOTE-Tomek

SMOTE-Tomekは、SMOTEとTomek Linksを組み合わせた手法です。まずSMOTEを適用し、その後Tomek Linksを使用してクラス境界を明確にします。

この手法では、SMOTEによるオーバーサンプリング後のデータセットに対してTomek Linksを識別し、それらを構成するサンプルペアの両方を削除します:
D' = (D_{SMOTE} \setminus {x_i, x_j} | (x_i, x_j) \in TomekLinks(D_{SMOTE}))
この手法の特徴は、両方のクラスからサンプルを削除することで、クラス境界をより明確にすることです。
概念的に説明すると、SMOTE-Tomekは「増強してから境界を明確にする」方法です。少数派クラスを強化した後(SMOTE)、境界が曖昧な部分を取り除くことで(Tomek Links)、より明確なクラス分離を実現します。例えば、軍を増強した後で、両軍の前線が入り混じった地域を非武装地帯として設定するようなイメージです。
SMOTE-Tomekは、クラス境界が複雑で、SMOTEだけでは十分な分離が得られない問題に適しています。特に、少数派クラスが多数派クラスによって「囲まれている」ような複雑な構造を持つデータセットで効果を発揮します。

3.4 リサンプリングの考慮事項

リサンプリングは基本的にモデルに依存しない前処理ステップですが、変更されたデータ分布は後続のモデル学習に影響を与えるポイントに注意が必要です。SVMでは、マージンの定義やサポートベクターの選択に影響し得ますし、ロジスティック回帰では、確率推定のキャリブレーションが変わる可能性があります。ランダムフォレストや勾配ブースティングでは、各ツリーの分割基準やサンプルへの重みづけに影響を与えます。重要な点として、リサンプリングが常に精度向上につながるとは限らない点があります。これはリサンプリングが逆に精度を低下させる危険性があるということです(評価指標が何かにもよります)。これは、リサンプリング手法と後続の分類器との相互作用が複雑であり、ノイズの導入や有用な情報の削除が原因で性能が悪化しうることを頭に入れておく必要があります。よって、リサンプリングは、情報の損失、過剰適合、ノイズ導入のリスクを頭に入れて使用する必要があります。

4. アルゴリズムレベルの対処法

4.1 コスト敏感学習

コスト敏感学習は、異なるタイプの誤分類に異なるコスト(ペナルティ)を設定することで、不均衡データに対処する手法です。

4.1.1 コスト行列の定義

コスト敏感学習では、誤分類のコストを以下のようなコスト行列で表現します:

C = \begin{pmatrix} C(0,0) & C(0,1) \ C(1,0) & C(1,1) \end{pmatrix}
ここで、C(i,j)は真のクラスがiのときにjと予測した場合のコストを表します。通常、正しい分類のコストC(0,0)C(1,1)は0に設定され、誤分類のコストC(0,1)C(1,0)は問題に応じて調整されます。
不均衡データでは、少数派クラスの誤分類コストC(1,0)を多数派クラスの誤分類コストC(0,1)よりも高く設定することが一般的です。例えば、C(1,0) = 10C(0,1) = 1のように設定します。
コスト敏感学習に基づく最適な決定規則は以下のようになります:
\text{予測クラス} = \begin{cases} 1 & \text{if } P(y=1|x) > \frac{C(0,1)}{C(0,1) + C(1,0)} \ 0 & \text{otherwise} \end{cases}
この決定規則は、通常の閾値0.5ではなく、コストに基づいて調整された閾値を使用します。例えば、C(0,1) = 1C(1,0) = 10の場合、閾値\frac{1}{1+10} \approx 0.09となります。これにより、少数派クラスがより予測されやすくなります。 概念的に説明すると、コスト敏感学習は「より重大な誤りにより大きなペナルティを与える」方法です。例えば、病気の見落とし(偽陰性)は健康な人を病気と診断する誤り(偽陽性)よりも深刻な結果をもたらすことがあります。そのため、偽陰性により高いコストを設定することで、モデルはより慎重に陰性と判断するようになります。

4.1.2 クラス重み付け

多くの機械学習アルゴリズムは、クラスの重みを直接指定することでコスト敏感学習を実装しています。例えば、scikit-learnではclass_weightパラメータを使用して、各クラスの重要度を制御できます:

from sklearn.linear_model import LogisticRegression
# クラス0に重み1、クラス1に重み10を設定
clf = LogisticRegression(class_weight={0: 1, 1: 10})

あるいは、class_weight='balanced'と設定することで、クラスの出現頻度に反比例した重みを自動的に計算することもできます:

w_j = \frac{n}{k \cdot n_j}
ここで、nは総サンプル数、kはクラス数、n_jはクラスjのサンプル数です。
この設定により、少数派クラスのサンプルがより重視されるようになります。
概念的に説明すると、クラス重み付けは「少数派の声を増幅する」方法です。例えば、議会で少数派の投票権を重み付けして、その発言力を高めるようなイメージです。
クラス重み付けは、ほとんどの学習アルゴリズムで簡単に実装できるため、最初に試すべき手法の一つです。特に、ロジスティック回帰やSVM、決定木などのアルゴリズムで効果的です。

4.1.3 コスト敏感学習に関して

コスト敏感学習は、モデルの学習目的そのものに不均衡の影響を組み込むため、リサンプリングよりも統合された解決策を提供するように思えます。しかし、その有効性はコスト設定に大きく依存するわけですが、このコスト設定自体が依然として課題とされているようです。

4.2 アルゴリズム固有の調整

機械学習アルゴリズムには、不均衡データに対処するための固有の調整方法があります。

4.2.1 決定木の調整

決定木では、分割基準を調整することで不均衡データに対応できます。例えば、ジニ不純度やエントロピーの代わりに、クラス重みを考慮した分割基準を使用します:

\text{Weighted Gini} = 1 - \sum_{i=0}^{k-1} \left( \frac{w_i \cdot n_i}{\sum_j w_j \cdot n_j} \right)^2
ここで、w_iはクラスiの重み、n_iはクラスiのサンプル数です。
また、事前剪定(pre-pruning)のパラメータも調整できます。例えば、min_samples_leafパラメータを小さくすることで、少数派クラスのより細かいパターンを学習できるようになります。
概念的に説明すると、決定木の調整は「少数派の特徴をより細かく学習する」方法です。通常の決定木では「十分な数のサンプルがないと分割しない」というルールがありますが、これを緩和することで、少数派クラスの特徴をより詳細に捉えることができます。

4.2.2 SVMの調整

SVMでは、クラスごとに異なるペナルティパラメータC(正則化パラメータ)を設定することで、不均衡に対処できます:

\min_{w, b, \xi} \frac{1}{2} ||w||^2 + C^+ \sum_{i: y_i=1} \xi_i + C^- \sum_{i: y_i=-1} \xi_i
ここで、C^+は少数派クラスのペナルティ、C^-は多数派クラスのペナルティを表します。一般的に、C^+ > C^-と設定します。
また、SVMの決定関数を調整することも効果的です。通常のSVMでは、決定関数が0より大きければクラス1、そうでなければクラス-1と予測します。これを以下のように修正できます:
f(x) = \text{sign}(w \cdot x + b - \delta)
ここで、\deltaはバイアス調整パラメータです。\delta > 0とすることで、決定境界を多数派クラス側に移動させることができます。
概念的に説明すると、SVMの調整は「決定境界を少数派クラス側に有利になるよう移動させる」方法です。通常のSVMでは多数派クラスの「圧力」により境界が押されてしまいますが、これを調整することで、より公平な境界を得ることができます。

4.2.3 特化型ブースティングアルゴリズム

最近のブースティングアルゴリズムには、不均衡データに特化したパラメータが組み込まれています。

XGBoost for imbalanced data

XGBoostでは、scale_pos_weightパラメータを使用して、少数派クラスの重みを調整できます:

\text{scale_pos_weight} = \frac{\text{多数派クラスのサンプル数}}{\text{少数派クラスのサンプル数}}
このパラメータにより、少数派クラスの勾配が増幅され、より重視されるようになります。
また、max_delta_stepパラメータを設定することで、各木の予測値の最大変化量を制限できます。これにより、不均衡データにおける極端な予測を防ぐことができます。 概念的に説明すると、XGBoostの調整は「少数派の声をブーストする」方法です。通常のブースティングでは間違いを修正するという観点で学習が進みますが、少数派クラスの「間違い」をより重視することで、バランスの取れた学習が可能になります。

LightGBM

LightGBMでは、is_unbalanceパラメータをTrueに設定するか、scale_pos_weightパラメータを調整することで、不均衡データに対応できます。
また、LightGBMは「重み付き情報利得」(Weighted Information Gain)という独自の分割基準を採用しており、これが不均衡データに対して効果的に機能します:

\text{WIG} = \text{IG} \times \sum_{i \in \text{leaf}} w_i
ここで、\text{IG}は情報利得、w_iはサンプルiの重みを表します。
概念的に説明すると、LightGBMの特徴は「少数派でもサンプル数が十分あれば分割する」点です。通常の決定木では「この葉のサンプル数が少なすぎるから分割しない」という判断がありますが、LightGBMでは重みの合計を考慮するため、少数派クラスでも重み付けされればより細かく分割できます。

アンサンブル手法

アンサンブル手法は、複数のモデルを組み合わせることで予測性能を向上させるアプローチです。不均衡データに対しては、サンプリング技術とアンサンブル学習を組み合わせた手法が特に効果的です。

5.1 バギングベースの手法

バギング(Bootstrap Aggregating)は、元のデータセットから複数のブートストラップサンプルを生成し、各サンプルで独立したモデルを学習させ、それらの予測を集約する手法です。

BalancedBagging

BalancedBaggingは、各ブートストラップサンプルに対してランダムアンダーサンプリングを適用してから基本モデルを学習する手法です:

H(x) = \text{多数決}{h_1(x), h_2(x), \ldots, h_T(x)}
ここで、h_t(x)t番目の基本モデルの予測、H(x)は最終的な予測を表します。各h_tは、バランスの取れたブートストラップサンプルで学習されます。
概念的に説明すると、BalancedBaggingは「多様な視点から少数派を公平に評価する」方法です。様々なサブサンプルで学習した複数のモデルの意見を集約することで、より頑健な予測が可能になります。例えば、様々な専門家がそれぞれ偏りのないデータで独立に判断し、多数決で最終決定するようなイメージです。

BalancedRandomForest

BalancedRandomForestは、ランダムフォレストの各決定木をバランスの取れたブートストラップサンプルで学習させる手法です。通常のランダムフォレストに加えて、特徴の重要度を計算する機能も備えています:

\text{Importance}(x_j) = \frac{1}{T} \sum_{t=1}^{T} \sum_{n \in N_t} \text{improvement}(x_j, n)
ここで、Tは木の数、N_tt番目の木のノード集合、\text{improvement}(x_j, n)はノードnにおける特徴x_jによる不純度の改善を表します。
この特徴重要度は、不均衡データにおいても少数派クラスに重要な特徴を識別するのに役立ちます。
概念的に説明すると、BalancedRandomForestは「多様な視点と多様な特徴を組み合わせて少数派を公平に評価する」方法です。各決定木がランダムに選ばれた特徴の部分集合で学習するため、少数派クラスに重要だが単独では弱い特徴も、複数の木の組み合わせによって効果的に活用されます。

5.2 ブースティングベースの手法

ブースティングは、逐次的にモデルを学習し、前のモデルの誤りを修正するように次のモデルを調整する手法です。

SMOTEBoost

SMOTEBoostは、AdaBoostにSMOTEを組み合わせた手法です。各ブースティングラウンドで、現在の重み分布に基づいてSMOTEを適用してからモデルを学習します:

D_{t+1}(i) = \frac{D_t(i) \exp(-\alpha_t y_i h_t(x_i))}{Z_t}
ここで、D_t(i)tラウンドでのサンプルiの重み、\alpha_ttラウンドでのモデルの重み、Z_tは正規化係数を表します。
この重み更新に加えて、各ラウンドでSMOTEを適用することで、少数派クラスのサンプルを増やしながらブースティングを行います。
概念的に説明すると、SMOTEBoostは「間違えるたびに少数派を増強する」方法です。通常のブースティングでは間違ったサンプルの重みを増やしますが、SMOTEBoostではさらに少数派クラスの合成サンプルも生成します。これにより、少数派クラスの複雑なパターンをより効果的に学習できます。

RUSBoost (Random Under-Sampling Boost)

RUSBoostは、AdaBoostにランダムアンダーサンプリングを組み合わせた手法です。各ブースティングラウンドで、現在の重み分布に基づいてランダムアンダーサンプリングを適用してからモデルを学習します。

RUSBoostのアルゴリズムは以下のとおりです:

  1. 初期重みD_1(i) = 1/Nを設定する

  2. t = 1, 2, \ldots, Tの各ラウンドで:

    1. 重みD_tに基づいてランダムアンダーサンプリングを適用し、バランスの取れたサブセットS_tを作成する
    2. S_tを使って弱分類器h_tを学習する
    3. h_tの誤り率\epsilon_tを計算する
    4. h_tの重み\alpha_t = \frac{1}{2} \ln \left( \frac{1-\epsilon_t}{\epsilon_t} \right)を計算する
    5. 重みを更新する:D_{t+1}(i) = \frac{D_t(i) \exp(-\alpha_t y_i h_t(x_i))}{Z_t}
  3. 最終的な分類器:H(x) = \text{sign}\left( \sum_{t=1}^T \alpha_t h_t(x) \right)

RUSBoostはSMOTEBoostよりも計算効率が高く、大規模データセットに適しています。
概念的に説明すると、RUSBoostは「間違えるたびに多数派を減らす」方法です。SMOTEBoostが少数派を増やすアプローチなのに対し、RUSBoostは多数派を減らすアプローチを取ります。これにより、計算効率を保ちながら効果的なブースティングが可能になります。

5.3 特化型アンサンブル手法

不均衡データに特化した独自のアンサンブル手法もいくつか提案されています。

EasyEnsemble

EasyEnsembleは、多数派クラスから複数のサブセットをランダムに抽出し、各サブセットと少数派クラスの全サンプルを組み合わせて複数の分類器を学習させる手法です:

H(x) = \frac{1}{T} \sum_{t=1}^T h_t(x)
ここで、h_t(x)t番目のサブセットで学習した分類器の予測、H(x)は最終的な予測(確率値の平均)を表します。
EasyEnsembleの特徴は、多数派クラスの情報を効率的に活用しながら、バランスの取れた学習を実現する点です。
概念的に説明すると、EasyEnsembleは「多数派を小分けにして少数派と公平に対話させる」方法です。例えば、100人の多数派意見を持つ人を10人ずつの10グループに分け、各グループを10人の少数派意見を持つ人と対等に議論させるようなイメージです。

BalanceCascade

BalanceCascadeは、多数派クラスから段階的にサンプルを選択し、各段階で分類器を学習させる手法です:

BalanceCascadeのアルゴリズムは以下のとおりです:

  1. 少数派クラスの全サンプルS_{min}を保持する

  2. t = 1, 2, \ldots, Tの各段階で:

    1. 多数派クラスから少数派クラスと同数のサンプルをランダムに選択し、S_t^{maj}とする
    2. S_{min} \cup S_t^{maj}を使って分類器h_tを学習する
    3. h_tにより正しく分類された多数派サンプルをS^{maj}から除外する
  3. 最終的な分類器:H(x) = \frac{1}{T} \sum_{t=1}^T h_t(x) BalanceCascadeの特徴は、各段階で「簡単な」多数派サンプルを除外していくことで、より難しいサンプルに集中できる点です。
    概念的に説明すると、BalanceCascadeは「易しいものから順に解決していく」方法です。例えば、最初のテストで簡単な問題を解けた学生は次のテストを免除し、難しい問題だけに焦点を当てていくようなイメージです。これにより、計算効率を高めながら、難しい境界領域により注目することができます。

6. 評価指標と検証方法

不均衡データを扱う際は、適切な評価指標を選択することが極めて重要です。通常の正解率(Accuracy)は不均衡データでは誤解を招きやすいため、より適切な指標を使用する必要があります。

6.1 不均衡データに適した評価指標

混同行列(Confusion Matrix)

まず、評価指標の基礎となる混同行列を理解しましょう:

\begin{pmatrix}
\text{TN (True Negative)} & \text{FP (False Positive)} \
\text{FN (False Negative)} & \text{TP (True Positive)} \
\end{pmatrix}
各要素の意味は以下のとおりです:

  • TP(True Positive):少数派クラスを正しく少数派と予測

  • TN(True Negative):多数派クラスを正しく多数派と予測

  • FP(False Positive):多数派クラスを誤って少数派と予測

  • FN(False Negative):少数派クラスを誤って多数派と予測

不均衡データでは、単純な正解率(Accuracy)は多数派クラスの性能に大きく左右されるため、混同行列から導かれる他の指標が重要になります。

精度と再現率(Precision and Recall)

不均衡データでは、精度と再現率が特に重要です:

\text{Precision} = \frac{\text{TP}}{\text{TP + FP}}
\text{Recall} = \frac{\text{TP}}{\text{TP + FN}}

精度は「少数派と予測したもののうち、実際に少数派だった割合」を表し、再現率は「実際の少数派のうち、少数派と予測できた割合」を表します。
精度が低いモデルは多くの偽陽性(False Positive)を生成し、再現率が低いモデルは多くの少数派サンプルを見逃します。不均衡データでは特に再現率が重要になることが多いです。例えば、疾病スクリーニングでは、患者を見逃さないことが最優先事項です。
概念的に説明すると、精度は「少数派アラートの信頼性」、再現率は「少数派の検出能力」と考えることができます。例えば、クレジットカード詐欺検知では、高い精度がないと多くの正常取引が誤ってブロックされ、高い再現率がないと多くの詐欺が見逃されます。

F1スコア(F1-Score)

F1スコアは、精度と再現率の調和平均です:

\text{F1} = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}
F1スコアは精度と再現率のバランスを一つの指標で表したものであり、不均衡データの評価に広く用いられています。調和平均を使用するため、精度と再現率のどちらかが極端に低い場合、F1スコアも低くなります。
例えば、精度が0.9で再現率が0.1の場合、算術平均は0.5ですが、F1スコアは約0.18となり、再現率の低さがより強く反映されます。

AUC-ROC(Area Under the ROC Curve)

ROC(Receiver Operating Characteristic)曲線は、様々な分類閾値における真陽性率(TPR)と偽陽性率(FPR)をプロットしたものです:

\text{TPR} = \frac{\text{TP}}{\text{TP + FN}} = \text{Recall}
\text{FPR} = \frac{\text{FP}}{\text{FP + TN}}
AUC-ROCは、このROC曲線の下の面積を表します。値は0から1の範囲を取り、0.5はランダムな予測、1は完璧な予測を意味します。この指標は閾値に依存しないため、モデルの全体的な性能を評価するのに適しています。
しかし、不均衡データではAUC-ROCは楽観的な評価を与えることがあります。TN(True Negative)の数が多いと、FPR(偽陽性率)が低くなりやすく、そのためROC曲線が良く見えることがあります。

AUC-PR(Area Under the Precision-Recall Curve)

PR(Precision-Recall)曲線は、様々な分類閾値における精度と再現率をプロットしたものです。AUC-PRは、このPR曲線の下の面積を表します。
不均衡データでは、AUC-ROCよりもAUC-PRの方が敏感に性能の違いを反映することが多いです。特に少数派クラスの性能に焦点を当てたい場合に有用です。これは、PR曲線がTN(True Negative)を考慮しないため、多数派クラスの正確な予測による「見かけの良さ」に惑わされにくいからです。
ベースラインとしては、ランダム予測のAUC-PRは少数派クラスの比率に等しくなります。例えば、データの1%が少数派クラスの場合、ランダム予測のAUC-PRは約0.01です。これに対し、AUC-ROCのベースラインは常に0.5です。
概念的に説明すると、AUC-ROCは「全体的な分類能力」を表し、AUC-PRは「少数派クラスの検出能力」を特に強調した指標と考えることができます。

マシューズ相関係数(Matthews Correlation Coefficient, MCC)

MCCは、混同行列のすべての要素を考慮した評価指標です:

\text{MCC} = \frac{\text{TP} \times \text{TN} - \text{FP} \times \text{FN}}{\sqrt{(\text{TP} + \text{FP})(\text{TP} + \text{FN})(\text{TN} + \text{FP})(\text{TN} + \text{FN})}}
MCCは-1から1の範囲の値を取り、1が完璧な予測、0がランダム予測、-1が完全に逆の予測を表します。不均衡データにおいても、バランスの取れた評価が可能です。   MCCの魅力は、すべてのクラスの予測性能を均等に考慮する点です。多数派クラスの予測が良くても少数派クラスの予測が悪ければMCCの値は低くなり、逆も同様です。   概念的に説明すると、MCCは「両クラスの予測の相関性」を表す指標です。通常の正解率や他の指標とは異なり、多数派クラスの性能が良くても少数派クラスの性能が悪ければ値が下がるため、より厳格な評価が可能です。

バランス精度(Balanced Accuracy)

バランス精度は、各クラスの再現率(感度と特異度)の平均です:

\text{Balanced Accuracy} = \frac{1}{2} \left( \frac{\text{TP}}{\text{TP + FN}} + \frac{\text{TN}}{\text{TN + FP}} \right)
この指標は、各クラスに等しい重みを与えるため、不均衡データでも多数派クラスに偏ることなく全体的な性能を評価できます。例えば、少数派を全て見逃す(FN=少数派のサンプル数、TP=0)が多数派を全て正しく予測する(FP=0、TN=多数派のサンプル数)モデルのバランス精度は0.5となり、ランダム予測と同等と評価されます。

幾何平均スコア(G-mean)

G-meanは、感度と特異度の幾何平均です:

\text{G-mean} = \sqrt{\frac{\text{TP}}{\text{TP + FN}} \times \frac{\text{TN}}{\text{TN + FP}}}
幾何平均を使うことで、どちらかの値が極端に低い場合、G-meanも低くなります。これにより、両方のクラスで均等に良い性能を発揮するモデルが高く評価されます。
G-meanは特に、両クラスの分類性能のバランスが重要な場合に有用です。例えば、どちらのクラスも同程度に重要である医療診断や品質管理などの分野で用いられます。

クラス別評価

多くの場合、不均衡データでは少数派クラスの性能が特に重要です。このため、各クラス別に評価指標を計算し、特に少数派クラスの性能に注目することが有効です。
例えば、クラス別の精度、再現率、F1スコアなどを個別に計算し、少数派クラスの性能が許容範囲内かどうかを確認します。

# クラス別評価の例
from sklearn.metrics import classification_report

# クラス別の精度、再現率、F1スコアを計算
print(classification_report(y_true, y_pred))

この出力では、各クラスの精度、再現率、F1スコアが個別に表示されるため、少数派クラスの性能を詳細に評価できます。

ここ最近の不均衡データへの対処方法

最近の不均衡

最後に

不均衡データ対処法の総括

不均衡データを扱う場合、単一の「最善の」手法は存在せず、問題の性質や目標に応じて適切なアプローチを選択することが重要です。この記事では、様々な対処法とその理論的背景を紹介しました。
データレベルの手法(サンプリング)は直感的で実装が容易ですが、情報損失や過学習のリスクがあります。アルゴリズムレベルの手法は元のデータ分布を維持できる利点がありますが、アルゴリズム特有の調整が必要です。アンサンブル手法は両者の利点を組み合わせた強力なアプローチですが、計算コストが高くなる傾向があります。
あるプロジェクトでは、SMOTE+ランダムフォレスト(クラス重み付き)の組み合わせが最良の結果を示し、別のプロジェクトではBalancedRandomForestが最適というケースもあります。重要なのは、複数の手法を試し、適切な評価指標で比較検討することです。

本当に最後に

ここまで不均衡データの理論から実践的な対処法まで、幅広く解説してきました。正直なところ、この記事を書いている私自身も日々新しい手法や考え方に出会い、学び続けています。不均衡データへの対処は一筋縄ではいかないテーマですが、だからこそ面白いんですよね。
皆さんも自分のプロジェクトで様々な手法を試してみて、どれが効果的かを実験してみてください。SMOTE一本で済ませるのではなく、この記事で紹介した多様なアプローチを組み合わせることで、より良い結果が得られるかもしれません。また、最新の研究論文にも目を通しておくと、新しいアイデアが見つかるかもしれません。
もし具体的な質問や実装の悩みがあれば、コメント欄で質問してくださいね。皆さんの不均衡データへの挑戦が実を結ぶことを願っています!

変分ベイズ推定の理論

はじめに

お詫びはてなブログのはてなTeXの仕組みのせいで、一部数式が正しく表示できない問題が発生しています...色々試行錯誤して見たものの、修正ができませんでした。読みにくい部分が一部あります...
  
ベイズ統計学の世界では、複雑なモデルの事後分布を正確に計算することが長年の課題でした。高次元パラメータ空間における積分計算は解析的に解くことができず、統計的推論の大きな障壁となっています。この困難に立ち向かうために、様々な近似手法が開発されてきましたが、その中でも特に注目されているのが「変分ベイズ法」です。
変分ベイズ法は、事後分布を直接計算する代わりに、取り扱いやすい分布族の中から最も事後分布に近い分布を見つけるというアプローチをとります。このアイデアは物理学の変分原理に由来し、計算効率と近似精度のバランスを追求する方法として機械学習統計学で広く応用されています。
しかし、変分ベイズ法について「KLダイバージェンスを最小化すればいい」「平均場近似を使えばよい」といった断片的な知識は広まっているものの、その深い理論的背景や実践上の注意点、そしてMCMCとの比較における長所・短所について、包括的に理解している人は意外と少ないのではないでしょうか。
本稿では、変分ベイズ法の基礎理論から実装手法、MCMCとの比較、そして結果をMCMCに近づけるための最新テクニックまで、徹底的に解説します。複雑な数式も直感的な例えと共に説明することで、初学者から実務者まで、すべての読者に深い理解をもたらすことを目指します。
変分ベイズ法の世界に足を踏み入れ、その美しさと実用性を一緒に探求していきましょう。

1. ベイズ推論と計算の課題

1.1 ベイズ推論の基本

ベイズ推論は、データから学習する際の不確実性を確率的に表現し、新しい証拠が得られるたびに信念を更新する体系的なフレームワークです。その中心にあるのが、18世紀の数学者トーマス・ベイズにちなんで名付けられたベイズの定理です:

P(\theta|D) = \frac{P(D|\theta)P(\theta)}{P(D)}

この式の各要素には明確な解釈があります:

P(\theta|D)は事後分布(posterior distribution)と呼ばれ、データDを観測した後のパラメータ\thetaに関する確率分布を表します。これがベイズ推論の最終的な目標物です。
P(D|\theta)は尤度(likelihood)と呼ばれ、パラメータ\thetaが与えられたときにデータDが観測される確率を表します。この項はデータがモデルにどれだけ適合しているかを示します。
P(\theta)は事前分布(prior distribution)と呼ばれ、データを観測する前のパラメータ\thetaに関する確率分布、つまり事前知識や信念を表します。
P(D)は周辺尤度(marginal likelihood)または証拠(evidence)と呼ばれ、すべての可能なパラメータ値について尤度と事前分布を積分したものです:P(D) = \int P(D|\theta)P(\theta)d\theta。これは正規化定数としての役割を果たします。

ベイズ推論のプロセスを直感的に説明すると、「事前の信念(事前分布)を持って観測を始め、データ(尤度)を通じて学習することで、より洗練された信念(事後分布)に更新する」ということになります。例えば、コインの公平さについての信念を考えてみましょう。最初は公平だと思っていても(事前分布)、何度も表が出続ければ(データと尤度)、そのコインは偏りがあるという信念(事後分布)に更新されます。
この枠組みは、「学習」と「不確実性の定量化」を自然に統合できる点で非常に強力です。パラメータの点推定だけでなく、その不確実性の程度も含めた完全な確率分布として推論結果を得られるのです。

1.2 計算の課題:積分の壁

ベイズ推論の理論的な美しさとは裏腹に、実際の計算は非常に難しい場合が多いです。その最大の原因は、事後分布を求める際に必要となる周辺尤度(エビデンス)の計算です:

P(D) = \int P(D|\theta)P(\theta)d\theta

この積分は、多くの実用的なモデルでは解析的に計算できません。特に、パラメータ空間の次元が高い場合や、尤度関数と事前分布の組み合わせが複雑な場合には、この積分は「計算不可能」な領域に入ってしまいます。これは「積分の壁」とも呼ばれる問題です。
例えば、ごく単純なケースとして、ガウス分布の平均と精度(分散の逆数)をベイズ推論する場合を考えましょう。事前分布としてガウス分布とガンマ分布を使用する「共役事前分布」を選べば、事後分布は解析的に求められます。しかし、ニューラルネットワークのような数万、数百万のパラメータを持つモデルでは、各パラメータの複雑な相互作用により、解析的な解を得ることはほぼ不可能になります。
この計算上の課題を解決するために、大きく分けて二つのアプローチが発展してきました:

  1. サンプリング法:事後分布からサンプルを生成し、そのサンプルを用いて事後分布の特性(期待値や分散など)を推定するアプローチ。最も代表的なのがマルコフ連鎖モンテカルロ法(MCMC)です。

  2. 近似法:事後分布そのものを、扱いやすい分布族で近似するアプローチ。変分ベイズ法(VB)がこれに当たります。

これらのアプローチはそれぞれ長所と短所を持ちます。MCMCは理論上、十分な時間をかければ真の事後分布に収束するという保証がありますが、計算コストが高く、特に大規模データや複雑なモデルでは実用的でない場合があります。一方、変分ベイズ法は計算効率が良い反面、選択した分布族による表現力の制限から、真の事後分布を完全に捉えられない可能性があります。
これから詳しく見ていくように、変分ベイズ法の本質は「計算不可能な事後分布を、計算可能な分布で最もよく近似する」という点にあります。それは「精密な解を得ることを諦め、近似解を効率的に求める」という妥協の産物ですが、多くの実用的な問題では、この妥協が非常に価値のある選択肢となるのです。

2. 変分ベイズ法の基礎理論

2.1 変分ベイズ法の基本的考え方

変分ベイズ法の根本的なアイデアは、「計算が困難な事後分布  p(\theta|D) を、扱いやすい近似分布  q(\theta) で代用しよう」というものです。これは「最適な解を求めるのが難しい問題を、制約された条件の中での最適化問題に置き換える」という変分法の一般的な考え方に基づいています。
具体的には、パラメータ空間上で定義される真の事後分布  p(\theta|D) を、ある関数族(変分族と呼ばれる)  \mathcal{Q} の中から選ばれた分布  q(\theta) \in \mathcal{Q} で近似します。

この近似の「良さ」を測る指標として、変分ベイズ法では通常、カルバック・ライブラー(KL)ダイバージェンスが使用されます:

 KL(q(\theta) \| p(\theta|D)) = \int q(\theta) \log \frac{q(\theta)}{p(\theta|D)} d\theta

KLダイバージェンスは二つの確率分布間の「距離」を測る尺度です。ただし、通常の距離とは異なり非対称であり、  KL(p | q) \neq KL(q | p) です。KLダイバージェンスは常に非負で、二つの分布が同じときのみゼロになります。

変分ベイズ法の目標は、このKLダイバージェンスを最小化する  q(\theta) を見つけることです:

 q^*(\theta) = \arg\min_{q \in \mathcal{Q}} KL(q(\theta) \| p(\theta|D))

これを概念的に説明すると、変分ベイズ法は「複雑な地形図(事後分布)を、単純な形状(近似分布)でどれだけうまく近似できるか」という問題に取り組んでいるわけです。例えば、複雑な山岳地帯を、いくつかのなだらかな丘の組み合わせで表現しようとしているイメージです。

ここで重要なのは選択する関数族  \mathcal{Q} です。この選択によって、計算の難しさと近似の精度のトレードオフが決まります。例えば:

  • ガウス分布:計算が比較的容易で、単峰性の事後分布に対しては良い近似を与えますが、多峰性や歪んだ分布の表現能力は限られます。

  • より複雑な分布族(混合ガウス分布など):より広範な形状の事後分布を近似できますが、計算コストが増加します。

変分ベイズ法の美しさは、「複雑な積分計算」を「最適化問題」に置き換えることで、計算不可能に見えた問題を扱える形に変換する点にあります。しかし、選んだ関数族に真の事後分布が含まれていない場合、完全な近似は原理的に不可能であることに注意が必要です。これが変分ベイズ法の根本的な限界でもあります。

2.2 変分下界(ELBO)の導出

KLダイバージェンス  KL(q(\theta) | p(\theta|D)) を直接最小化するのは依然として困難です。なぜなら、真の事後分布  p(\theta|D) を計算するには、最初からの課題であった周辺尤度  p(D) が必要だからです。この問題を回避するために、変分ベイズ法では「変分下界」(Evidence Lower Bound、ELBO)と呼ばれる等価な目的関数を最大化します。

ELBOの導出は以下の通りです。まず、周辺尤度(エビデンス)の対数をとり、観察します:

 \log p(D) = \log \int p(D, \theta) d\theta

ここに変分分布  q(\theta) を導入します:

 \log p(D) = \log \int q(\theta) \frac{p(D, \theta)}{q(\theta)} d\theta
ここで、ジェンセンの不等式を適用します。ジェンセンの不等式は、凹関数(対数関数はその一例)と確率分布に対して、  f(\mathbb{E}[X]) \geq \mathbb{E}[f(X)] が成り立つという定理です。この不等式を適用すると:
 \log p(D) = \log \mathbb{E}_{q(\theta)}\left[\frac{p(D, \theta)}{q(\theta)}\right] \geq \mathbb{E}_{q(\theta)}\left[\log \frac{p(D, \theta)}{q(\theta)}\right]

右辺を展開すると:

 \mathbb{E}_{q(\theta)}\left[\log \frac{p(D, \theta)}{q(\theta)}\right] = \int q(\theta) \log \frac{p(D, \theta)}{q(\theta)} d\theta \
 = \int q(\theta) \log p(D, \theta) d\theta - \int q(\theta) \log q(\theta) d\theta
 = \mathbb{E}_{q(\theta)}[\log p(D, \theta)] + H[q(\theta)]
ここで  H[q(\theta)] = -\int q(\theta) \log q(\theta) d\theta  q(\theta) エントロピーを表します。この右辺が変分下界(ELBO)です:
 \text{ELBO}(q) = \mathbb{E}_{q(\theta)}[\log p(D, \theta)] + H[q(\theta)]
さらに、  p(D, \theta) = p(D|\theta) p(\theta) を使うと:
 \text{ELBO}(q) = \mathbb{E}_{q(\theta)}[\log p(D|\theta)] + \mathbb{E}_{q(\theta)}[\log p(\theta)] + H[q(\theta)]

この式から、ELBOは以下の3つの要素から構成されていることがわかります:

  • 尤度の期待値  \mathbb{E}_{q(\theta)}[\log p(D|\theta) ]:データがモデルにどれだけ適合しているかを表す項

  • 事前分布と変分分布の類似度  \mathbb{E}_{q(\theta)}[\log p(\theta) ]:変分分布が事前分布からどれだけ離れているかを表す項

  • 変分分布のエントロピー  H[q(\theta) ]:変分分布の不確実性や広がりを表す項

さらに、KLダイバージェンスとELBOの関係を導くと:

 \log p(D) - \text{ELBO}(q) = KL(q(\theta) \| p(\theta|D))
つまり、ELBOを最大化することは、KLダイバージェンスを最小化することと等価です。周辺尤度  \log p(D)  q(\theta) に依存しない定数なので、  \text{ELBO}(q) を最大化することで  KL(q(\theta) | p(\theta|D)) が最小化されるのです。

概念的に説明すると、ELBOは「データの説明のしやすさ」と「近似分布の単純さ」のトレードオフを表しています。第一項と第二項は「データと事前分布をどれだけ説明できるか」を表し、第三項は「近似分布がどれだけ幅広く(不確実性を保持して)柔軟か」を表します。これは「データに適合しながらも、過度に自信を持ちすぎない(不確実性を保持する)」バランスを取ろうとしていると解釈できます。

2.3 平均場近似

変分ベイズ法において、近似分布  q(\theta) の構造をどう選ぶかは重要な問題です。最も一般的なアプローチの一つが「平均場近似」(Mean Field Approximation)です。
平均場近似の核心は、パラメータベクトル  \theta を複数の成分  \theta = (\theta_1, \theta_2, \ldots, \theta_M) に分解し、これらの成分が互いに独立であると仮定することです:
 q(\theta) = \prod_{i=1}^{M} q_i(\theta_i)
この仮定により、最適化問題が大幅に簡単になります。各成分の最適な分布  q_i^*(\theta_i) は以下の式で与えられます:
 q_i^*(\theta_i) \propto \exp\left( \mathbb{E}_{j \neq i}\left[\log p(D, \theta)\right] \right)
ここで  \mathbb{E}_{j \neq i}  \theta_i 以外の全てのパラメータに関する期待値を表します。この期待値は、他のすべての成分  \theta_j \quad (j \neq i) に関して計算されます。

この更新式は、座標降下法(coordinate descent)のように、各成分を順番に最適化していくことを示唆しています。つまり、一つの成分について最適化を行い、次に別の成分について最適化を行う、というプロセスを収束するまで繰り返します。

平均場近似の導出を詳しく見てみましょう。まず、ELBOを  \theta_i に関して表現します:

 \text{ELBO}(q) = \int \prod_{j=1}^M q_j(\theta_j) \log p(D, \theta) \, d\theta - \sum_{j=1}^M \int q_j(\theta_j) \log q_j(\theta_j) \, d\theta_j
これを  \theta_i について最適化するために、他のすべての  \theta_j \quad (j \neq i) を固定して考えます。ラグランジュ乗数法を使い、  \int q_i(\theta_i) d\theta_i = 1 という制約条件の下でELBOを最大化します。
最適化の結果、最適な  q_i^*(\theta_i) は以下の形になります:
 q_i^*(\theta_i) \propto \exp\left( \mathbb{E}_{j \neq i}\left[\log p(D, \theta)\right] \right)
 = \exp\left( \int \prod_{j \neq i} q_j(\theta_j) \log p(D, \theta) \prod_{j \neq i} d\theta_j \right)
この更新式は直感的に理解できます。  q_i^*(\theta_i) は、他のパラメータの期待値を考慮した上での、  \theta_i に関する「有効な」事後分布と解釈できます。

平均場近似の大きな利点は、共役事前分布を使用した場合に更新式が解析的に解けることが多い点です。例えば、線形回帰モデルでガウス・ガンマ共役事前分布を使うと、更新式が閉形式で表現できます。
しかし、平均場近似にはいくつかの重要な限界があります:

  • パラメータ間の相関を無視する
    最大の欠点は、パラメータ間の依存関係を無視することです。実際の事後分布では強い相関があるパラメータでも、独立として扱われるため、事後分布の構造が正確に捉えられません。

  • 分散の過小評価
    平均場近似は、事後分布の分散(不確実性)を過小評価する傾向があります。これは、パラメータ間の相関を無視することに起因します。

  • モードの集中
    複数のモード(峰)を持つ事後分布に対して、平均場近似は通常、単一のモード周辺に集中します。

概念的に説明すると、平均場近似は「複雑な山岳地帯を、互いに独立した単純な丘の集まりとして近似する」ようなものです。実際の山が互いに連なっていて相関があるのに対し、平均場近似ではそれぞれの山を別々に扱ってしまいます。これはちょうど、複雑な多変量確率分布を、各次元の周辺分布の積として近似するようなものです。

この制約にもかかわらず、平均場近似は多くの実用的な問題で効果的に機能し、計算効率と近似精度のバランスが取れた方法として広く使用されています。

3. MCMCと変分ベイズ法の比較

3.1 MCMCの基本的考え方

MCMCマルコフ連鎖モンテカルロ法)は、直接サンプリングが難しい確率分布からサンプルを生成するための強力な手法です。MCMCの中心的なアイデアは、目標とする確率分布(この場合は事後分布  p(\theta|D) )を定常分布とするマルコフ連鎖を構築し、そのマルコフ連鎖を長時間実行することでサンプルを得るというものです。
MCMCのプロセスを詳しく見てみましょう。マルコフ連鎖は、現在の状態  \theta^{(t)} から次の状態  \theta^{(t+1)} への遷移が、過去の履歴ではなく現在の状態のみに依存するような確率過程です。MCMCでは、この遷移確率  T(\theta^{(t+1)}|\theta^{(t)}) を、連鎖の定常分布が目標分布  p(\theta|D) になるように設計します。

具体的には、「詳細釣り合い条件」(detailed balance)を満たすように遷移確率を設計します:

 p(\theta|D)T(\theta'|\theta) = p(\theta'|D)T(\theta|\theta')
この条件が満たされると、マルコフ連鎖の定常分布は  p(\theta|D) になることが保証されます。

MCMCの代表的なアルゴリズムを見てみましょう:

メトロポリスヘイスティングス(Metropolis-Hastings)アルゴリズム

  • 現在の状態  \theta^{(t)} から提案分布  q(\theta'|\theta^{(t)}) を使って新しい状態  \theta' を提案する

  • 受容率  \alpha = \min\left(1, \frac{p(\theta'|D)q(\theta^{(t)}|\theta')}{p(\theta^{(t)}|D)q(\theta'|\theta^{(t)})}\right) を計算する

  • 確率  \alpha で新しい状態  \theta' を受け入れ、 \theta^{(t+1)} = \theta' とする。確率  1-\alpha で棄却し、 \theta^{(t+1)} = \theta^{(t)} とする

ギブスサンプリング(Gibbs Sampling)
ギブスサンプリングは、パラメータを成分ごとに更新するMCMCの特殊ケースです:

  • 現在の状態を  \theta^{(t)} = (\theta_1^{(t)}, \theta_2^{(t)}, \ldots, \theta_d^{(t)}) とする

  • 各成分について、他の全ての成分を固定した条件付き分布からサンプリングする:

 \theta_i^{(t+1)} \sim p(\theta_i | \theta_1^{(t+1)}, \ldots, \theta_{i-1}^{(t+1)}, \theta_{i+1}^{(t)}, \ldots, \theta_d^{(t)}, D)

ギブスサンプリングの利点は、提案分布が条件付き事後分布そのものであるため、常に受け入れられる(受容率が1)点です。しかし、これらの条件付き分布から効率的にサンプリングできることが前提となります。

ハミルトニアンモンテカルロ(Hamiltonian Monte Carlo, HMC)
HMCは、物理学のハミルトン動力学を利用して、より効率的なサンプリングを実現します:

  • 各パラメータ  \theta_i に対応する「運動量」変数を導入する

  • ハミルトニアン  H(\theta, p) = U(\theta) + K(p) を定義する

 U(\theta) = -\log p(\theta|D) は「ポテンシャルエネルギー」、 K(p) = \frac{1}{2}p^Tp は「運動エネルギー」)

HMCの大きな利点は、勾配情報を利用して効率的に状態空間を探索できる点です。特に高次元のパラメータ空間で効果を発揮します。
  
MCMCは強力な方法ですが、以下のような課題があります:

  • 計算コストが高い:収束するまでに多数のサンプルが必要で、特に高次元パラメータ空間や大規模データセットでは計算負荷が大きい

  • 収束判定が難しい:マルコフ連鎖が目標分布に収束したかどうかを厳密に判断するのは困難

  • 連続的なサンプル間の自己相関:生成されたサンプルは独立ではなく、効果的なサンプル数は実際のサンプル数よりも少なくなる

これらの課題にもかかわらず、MCMCは理論的に十分な反復回数を重ねれば真の事後分布に収束することが保証されている点で、非常に価値のある手法です。

3.2 変分ベイズ法とMCMCの違い

変分ベイズ法とMCMCは、ベイズ推論における計算の困難さに対処するための二つの主要なアプローチですが、その根本的な発想と特性は大きく異なります。ここではその違いを多角的に分析します。

1. 基本的なアプローチ

MCMC
MCMCは「サンプリング法」に分類されます。その目標は、事後分布からの代表的なサンプルを生成することです。これらのサンプルを使って、期待値や分位数などの事後分布の特性を推定します。MCMCは事後分布の形状に関する仮定をほとんど置かず、理論上は任意の複雑な分布をサンプリングできます。
  
変分ベイズ法:
変分ベイズ法は「近似法」に分類されます。その目標は、事後分布を解析的に扱いやすい分布族で近似することです。変分ベイズ法は、KLダイバージェンスを最小化する(またはELBOを最大化する)という最適化問題に帰着させて解を求めます。この方法は計算効率が良い反面、選択した分布族に真の事後分布が含まれていない場合、完全な近似は原理的に不可能です。

2. 計算効率と精度のトレードオフ

MCMC
MCMCは一般に計算コストが高く、特に高次元パラメータ空間や大規模データセットでは収束に時間がかかります。しかし、十分な時間をかければ理論上は真の事後分布に収束することが保証されています。MCMCは「正確だが遅い」方法と言えます。
  
変分ベイズ
変分ベイズ法は計算効率が非常に良く、大規模データや複雑なモデルにも適用可能です。しかし、選択した近似分布族の制約内でしか最適化できないため、真の事後分布を完全に捉えられない場合があります。変分ベイズ法は「近似的だが速い」方法と言えます。

3. 出力形式

MCMC
MCMCの出力は事後分布からのサンプル集合です。これらのサンプルを使って、ヒストグラムや密度推定によって事後分布の形状を可視化したり、様々な統計量(平均、分散、分位数など)を計算したりできます。
  
変分ベイズ
変分ベイズ法の出力は、事後分布の近似として解析的な関数形(例:ガウス分布のパラメータ)です。この関数形から直接、期待値や分散などの統計量を計算できます。また、近似分布からサンプリングすることも可能です。

4. 不確実性の捉え方

MCMC
MCMCは事後分布の形状に制約をほとんど課さないため、多峰性(マルチモーダル)分布や複雑な相関構造を持つ分布も正確に捉えることができます。これにより、パラメータの不確実性をより正確に表現できます。
  
変分ベイズ
変分ベイズ法は、選択した近似分布族(例:平均場近似を使った独立分布の積)の制約により、複雑な分布構造を完全に捉えられないことがあります。特に、パラメータ間の相関や多峰性分布の表現が難しいという制約があります。

5. 適用シナリオ

MCMC
MCMCは以下のようなシナリオに適しています:

  • 事後分布の正確な特性化が重要な場合

  • 計算時間よりも精度が優先される場合

  • モデルが複雑で、事後分布が多峰性や強い相関構造を持つ可能性がある場合

  • データセットのサイズが比較的小さい、または並列計算リソースが豊富にある場合

  
変分ベイズ
変分ベイズ法は以下のようなシナリオに適しています:

  • 大規模データセットや複雑なモデル(深層ニューラルネットワークなど)に対するベイズ推論

  • リアルタイムに近い応答が必要な場合

  • 近似解でも十分な場合(例:予測性能が主な関心事の場合)

  • オンライン学習や逐次的更新が必要な場合

概念的に説明すると、MCMCは「実際に地形をあちこち歩き回ってサンプルを集める」アプローチであり、変分ベイズ法は「地形を単純な数学的関数で近似する」アプローチです。MCMCは時間をかければより正確な描写ができますが、変分ベイズ法は素早く全体像の「スケッチ」を提供します。
両者は相互に排他的ではなく、相補的な手法として、問題の性質や計算リソースに応じて適切に選択することが重要です。また、両者を組み合わせたハイブリッドアプローチも研究されています。

3.3 変分ベイズの推定値がMCMCと異なる原因

変分ベイズ法による推定値がMCMCの結果と異なる場合がしばしばあります。ここでは、その主な原因を詳細に分析します。

1. 近似分布の表現力不足

ガウス分布族の制約
変分ベイズ法でよく使用されるガウス分布は、単峰性で対称な分布です。しかし、実際の事後分布は:

  • 多峰性(複数のモードを持つ)かもしれません

  • 歪んでいるかもしれません

  • 特異点や不連続点を持つかもしれません

  • 重い裾(heavy tail)を持つかもしれません

これらの特性は単一のガウス分布では捉えられません。例えば、混合モデルのパラメータは典型的に多峰性の事後分布を持ちますが、ガウス変分分布はこれを単一のモードとして近似してしまいます。
  
平均場近似の制約

平均場近似(\theta = \prod_i q_i(\theta_i))を用いると、パラメータ間の依存関係が完全に無視されます。しかし実際の事後分布では、パラメータ間に強い相関がある場合が多いです。例えば、線形回帰モデルでの係数間の相関や、ニューラルネットワークの重みパラメータ間の複雑な依存関係などです。
具体例として、二つのパラメータ \theta_1\theta_2 が強い負の相関を持つ事後分布を考えてみましょう。MCMCサンプルはこの相関構造を正確に捉えますが、平均場近似を用いた変分ベイズ法では q(\theta_1)q(\theta_2) が独立となるため、この相関を完全に無視してしまいます。

2. KLダイバージェンスの非対称性

変分ベイズ法で最小化するKLダイバージェンス KL(q(\theta) || p(\theta|D))フォワードKL)は非対称です。この順序のKLダイバージェンスの特性を理解することが重要です:
KL(q || p) = \int q(\theta) \log \frac{q(\theta)}{p(\theta|D)} d\theta
この式からわかるように、q(\theta) がゼロの領域では、たとえ p(\theta|D) が大きな値を持っていても、積分への寄与はゼロになります。しかし、p(\theta|D) がゼロに近いのに q(\theta) が大きな値を持つ領域では、\log \frac{q(\theta)}{p(\theta|D)} は非常に大きくなり、KLダイバージェンスに大きく寄与します。
これは、フォワードKLが「ゼロ回避型」(zero-avoiding)と呼ばれる性質を持つことを意味します。変分分布 q(\theta) は、事後分布 p(\theta|D) がゼロに近い領域をカバーしないようにする(ゼロを避ける)傾向があります。

その結果、変分ベイズ法は事後分布のモードを捉えつつも、その広がり(分散)を過小評価する傾向があります。つまり、変分分布は事後分布よりも「尖った」(より確信的な)形状になりがちです。

3. 平均場近似によるパラメータ間の独立性の仮定

平均場近似はパラメータ間の独立性を仮定しますが、この仮定が実際の事後分布と大きく異なる場合、推定値に重大な影響を与えます:

  • 分散の過小評価:パラメータ間の正の相関がある場合、平均場近似はこれを無視するため、各パラメータの分散を過小評価します。

  • 条件付き平均のシフト:パラメータ間に相関がある場合、一方のパラメータの条件付き期待値は他方の値に依存します。平均場近似ではこれを捉えられず、推定された平均値が真の事後平均からシフトすることがあります。

4. 最適化の局所解

変分ベイズ法はELBOの最大化という最適化問題を解きますが、これが局所解に陥る場合があります:

  • 凸最適化問題:複雑なモデルでは、ELBO最大化が非凸最適化問題になります。

  • 確率的最適化の課題:大規模データセットでは、確率的勾配法などの使用によって収束解にバラツキが出ます。

一方、MCMCは(理論上は)局所解問題に悩まされず、十分な実行時間があれば真の事後分布全体を探索できます。

5. 具体例:バイモーダル分布

バイモーダル(二峰性)の事後分布を考えてみましょう。例えば、次のような混合ガウスモデルの事後分布:

p(\theta|D) \approx 0.5 \times \mathcal{N}(\theta|-3, 1) + 0.5 \times \mathcal{N}(\theta|3, 1)

MCMCはこの二つのモード両方からサンプリングでき、ヒストグラムは二つのピークを持ちます。結果として事後平均は約0になります。
しかし、単一のガウス分布で近似する変分ベイズ法の場合:

  • q(\theta) = \mathcal{N}(\theta|\mu_q, \sigma_q^2) を仮定

  • KLダイバージェンス最小化の結果、一方のモードに集中するか、または両モードの間に大きな分散で位置する可能性

どちらの場合も、真の事後分布の重要な構造を捉えられていません。

4. 変分ベイズ法の実装手法

4.1 平均場変分ベイズ(MFVB)

平均場変分ベイズ(Mean Field Variational Bayes, MFVB)は、前述の平均場近似に基づく最も基本的な変分ベイズの実装です。MFVBの核心は、パラメータ\thetaを複数の成分\theta_1, \theta_2, \ldots, \theta_Mに分解し、これらのパラメータが互いに独立であると仮定することです:
q(\theta) = \prod_{i=1}^{M} q_i(\theta_i)
この仮定の下で、各成分の最適な変分分布q_i^(\theta_i)は以下の更新式で与えられます:
q_i^(\theta_i) \propto \exp(\mathbb{E}{j \neq i}[\log p(D, \theta)])
ここで\mathbb{E}{j \neq i}\theta_i以外の全てのパラメータに関する期待値を表します。

MFVBのアルゴリズムは以下の通りです:

  1. \theta_iを適当な分布で初期化します。

  2. 収束するまで以下を繰り返します:
     a. 各\theta_iについて、以下の更新を行います:
     q_i^{new}(\theta_i) \propto \exp(\mathbb{E}_{j \neq i}[\log p(D, \theta))]
     b. 収束判定を行います(例:ELBO増加率が閾値以下になるか、あるいは最大反復回数に達するまで)。最終的な近似事後分布

q^(\theta) = \prod_i q_i^(\theta_i)

を出力します。

共役事前分布の場合

MFVBの最大の利点は、共役事前分布を使用した場合に更新式が解析的に解けることが多い点です。例えば、一般化線形モデルの多くは、適切な共役事前分布を選ぶことで閉形式の更新式が導出できます。
具体的な例として、単純な線形回帰モデルを考えてみましょう:

y = X\beta + \epsilon, \quad \epsilon \sim \mathcal{N}(0, \sigma^2 I)
ここで\betaは回帰係数、\sigma^2は誤差分散です。これらのパラメータに対して以下の共役事前分布を設定します:
\beta \sim \mathcal{N}(\beta_0, \Sigma_0)
\sigma^2 \sim \text{InvGamma}(a_0, b_0)
平均場近似では、\beta, \sigma^2 = q(\beta)q(\sigma^2)と仮定します。このとき、最適な変分分布は以下の形をとります:
q^(\beta) = \mathcal{N}(\beta | \mu_\beta, \Sigma_\beta)
q^(\sigma^2) = \text{InvGamma}(\sigma^2 | a, b)

これらのパラメータは以下の閉形式の更新式で計算できます:

\Sigma_\beta = (\Sigma_0^{-1} + \mathbb{E}[1/\sigma^2]X^TX)^{-1}
\mu_\beta = \Sigma_\beta(\Sigma_0^{-1}\beta_0 + \mathbb{E}[1/\sigma^2]X^Ty)
a = a_0 + n/2
b = b_0 + \frac{1}{2}\mathbb{E}[(y - X\beta)^T(y - X\beta)]
\mathbb{E}[1/\sigma^2] = a/b
\mathbb{E}[(y - X\beta)^T(y - X\beta)] = ||y - X\mu_\beta||^2 + \text{Tr}(X^TX\Sigma_\beta)

これらの更新式を収束するまで繰り返すことで、近似事後分布を得ることができます。
  

MFVBの長所と短所

長所

  • 共役事前分布を使用した場合、解析的な更新式が得られる

  • 計算効率が良く、低次元から中程度の次元のモデルに適している

  • 実装が比較的容易

  • 各パラメータ成分の更新を並列化できる可能性がある

短所

  • パラメータ間の相関を無視するため、事後分布の構造を正確に捉えられない

  • 事後分布の分散(不確実性)を過小評価する傾向がある

  • 非共役モデルでは更新式が解析的に解けないことが多い

  • 確率変数が多い複雑なモデルでは、全ての変数に対して更新式を導出する必要があり、実装が煩雑になる

MFVBは、比較的単純なモデルや、パラメータ間の相関があまり重要でない問題に適しています。また、初期の探索的分析や、より複雑な方法の初期値を提供するためにも有用です。

4.2 固定形変分ベイズ(FFVB)

固定形変分ベイズ(Fixed-Form Variational Bayes, FFVB)では、近似分布q(\theta)の関数形を予め指定し、そのパラメータを最適化します。最も一般的なのがガウス分布を使用する方法です:
q(\theta) = \mathcal{N}(\theta | \mu, \Sigma)
ここで\muは平均ベクトル、\Sigmaは共分散行列です。ELBOを\mu\Sigmaに関して最大化することで、最適な近似分布を求めます。

共分散行列の表現

完全な共分散行列を使うとパラメータ数がd^2dはパラメータの次元数)と増加するため、計算コストが高くなります。そこで、以下のような様々な共分散構造が考えられます:

  
対角共分散行列

\Sigma = \text{diag}(\sigma_1^2, \sigma_2^2, \ldots, \sigma_d^2)

この場合、パラメータ数はdに削減されますが、パラメータ間の相関を全く捉えられません。
  
因子分析型共分散

\Sigma = \text{diag}(\sigma_1^2, \sigma_2^2, \ldots, \sigma_d^2) + VV^T
ここでVd \times k行列(k \ll d)です。これにより、dkのパラメータで主要な相関構造を捉えることができます。

  
コレスキー分解

\Sigma = LL^T
ここでLは下三角行列です。この表現は共分散行列の正定値性を保証しますが、パラメータ数はd^2です。

  

最適化手法

固定形変分ベイズでは、通常の勾配ベースの最適化アルゴリズム(勾配降下法、L-BFGS、Adamなど)を使ってELBOを最大化します。ELBOの勾配は以下のように計算できます:

\nabla_\lambda \text{ELBO} = \nabla_\lambda \mathbb{E}{q(\theta|\lambda)}[\log p(D, \theta) - \log q(\theta|\lambda)]
ここで\lambdaは変分分布のパラメータ(例:\mu\Sigmaの要素)を表します。

この期待値の勾配を直接計算するのは難しいですが、以下の二つの主要なアプローチがあります:   
スコア関数勾配(Score Function Gradient)

\nabla\lambda \text{ELBO} = \mathbb{E}{q(\theta|\lambda)}[(\log p(D, \theta) - \log q(\theta|\lambda)) \nabla\lambda \log q(\theta|\lambda)]

この方法はブラックボックス変分推論(後述)の基礎にもなっています。   
リパラメトリゼーション勾配(Reparameterization Gradient)

変数変換\theta = g(\epsilon, \lambda)\epsilonは標準分布からのサンプル)を使って:
\nabla_\lambda \text{ELBO} = \mathbb{E}{p(\epsilon)}[\nabla\lambda \log p(D, g(\epsilon, \lambda)) - \nabla_\lambda \log q(g(\epsilon, \lambda)|\lambda)]
例えば、ガウス分布の場合は\theta = \mu + L\epsilon\epsilon \sim \mathcal{N}(0, I))とできます。

FFVBの長所と短所

長所

  • 適切な共分散構造を使えばパラメータ間の相関を捉えられる

  • 一般的な最適化アルゴリズムを使用できる

  • 平均場近似よりも事後分布の構造をより正確に近似できる可能性がある

  • モデル固有の更新式を導出する必要がなく、汎用的なアプローチとして使える

短所

  • 選択した関数形(例:ガウス分布)が真の事後分布と大きく異なる場合、近似精度が低下する

  • 高次元パラメータの場合、共分散行列の表現と最適化が計算上の課題になる

  • 勾配計算のためのサンプリングが必要で、計算コストが増加する可能性がある

FFVBは、パラメータ間の相関が重要で、なおかつ真の事後分布がガウス分布などの標準的な分布で良く近似できる問題に適しています。特に、事後分布が単峰性で比較的対称な場合に効果的です。

4.3 ブラックボックス変分推論(BBVI)

上記の手法はモデルごとに導出や実装が必要でしたが、ブラックボックス変分推論(Black-Box Variational Inference, BBVI)は汎用的なアプローチを提供します。BBVIはモンテカルロサンプリングと確率的勾配降下法を用いて、モデルの詳細に関わらずELBOを最適化します。
BBVIのキーアイデアは、ELBOの勾配をサンプリングによって近似することです:

 \nabla_\lambda \text{ELBO} = \mathbb{E}{q(\theta|\lambda)}[(\log p(D, \theta) - \log q(\theta|\lambda)) \nabla\lambda \log q(\theta|\lambda)]

モンテカルロ近似を用いると:

 \nabla_\lambda \text{ELBO} \approx \frac{1}{S} \sum_{s=1}^{S} (\log p(D, \theta^s) - \log q(\theta^s | \lambda)) \nabla_\lambda \log q(\theta^s | \lambda)
ここで \theta^s \sim q(\theta | \lambda)は変分分布からのサンプルです。 \nabla_\lambda \log q(\theta | \lambda)はスコア関数(score function)と呼ばれ、多くの標準的な分布で解析的に計算できます。

勾配分散低減

上記の勾配推定は分散が大きく、収束が遅い原因になります。そこで、分散を低減するための様々なテクニックが提案されています:

制御変量(Control Variates): 期待値は変わらずに分散を減らす関数 h(\theta)を導入します:

 \nabla_\lambda \text{ELBO} \approx \frac{1}{S} \sum_{s=1}^{S} (f(\theta^s) - a \cdot h(\theta^s)) \nabla_\lambda \log q(\theta^s | \lambda)
ここで f(\theta) = \log p(D, \theta) - \log q(\theta | \lambda) aは分散を最小化する係数です。よく使われる制御変量としては、 h(\theta) = \nabla_\lambda \log q(\theta | \lambda)などがあります。

Rao-Blackwellization
条件付き期待値を取ることで分散を減らします:

 \nabla_{\lambda_i} \text{ELBO} \approx \frac{1}{S} \sum_{s=1}^{S} \mathbb{E}{q(\theta{-i}|\theta_i^s, \lambda)}[f(\theta)] \nabla_{\lambda_i} \log q(\theta_i^s | \lambda_i)
ここで \theta_{-i} \theta_i以外の全てのパラメータを表します。

BBVIのアルゴリズム

BBVIのアルゴリズムは以下の通りです:

  1. 変分パラメータ \lambdaを初期化します。

  2. 収束するまで以下を繰り返します:

 a.  q(\theta | \lambda)から S個のサンプル \theta^1, \ldots, \theta^Sを生成します。
 b. 各サンプルについて f(\theta^s) = \log p(D, \theta^s) - \log q(\theta^s | \lambda)とスコア関数 \nabla_\lambda \log q(\theta^s | \lambda)を計算します。

 c. ELBOの勾配を近似します:

 \nabla_\lambda \text{ELBO} \approx \frac{1}{S} \sum_{s=1}^{S} f(\theta^s) \nabla_\lambda \log q(\theta^s | \lambda)

 d. 確率的勾配降下法 \lambdaを更新します:

 \lambda \leftarrow \lambda + \rho \nabla_\lambda \text{ELBO}

 \rhoは学習率)

 e. 必要に応じて学習率 \rhoを調整します。

  1. 最終的な近似事後分布 q(\theta | \lambda^*)を出力します。

BBVIの長所と短所

長所

  • モデルに対して汎用的:尤度関数と事前分布が計算できれば適用可能

  • モデル固有の導出が不要で、「ブラックボックス」として使用可能

  • 様々な変分分布(ガウス分布、混合分布など)に適用可能

  • 自動微分と組み合わせることで、実装が容易になる

短所

  • サンプリングに基づく勾配推定の分散が大きく、収束が遅い場合がある

  • 分散低減テクニックが必要で、実装が複雑になる可能性がある

  • 勾配計算のためのサンプリング数 Sの選択が結果に影響する

  • リパラメトリゼーショントリックを使わない場合、連続パラメータに対する勾配推定の効率が悪い

BBVIは、特に既製のソフトウェアパッケージを使用する場合や、カスタムモデルを迅速に開発する必要がある場合に、非常に魅力的なアプローチです。モデルに特化した導出をせずに変分ベイズ法を適用できる柔軟性は、実践的な観点から大きな利点です。

4.4 自動微分変分推論(ADVI)

自動微分変分推論(Automatic Differentiation Variational Inference, ADVI)は、BBVIをさらに発展させ、自動微分を活用して効率的に勾配を計算する手法です。ADVIの主な特徴は以下の2点です:

  1. 制約のある変数の変換: 制約のあるパラメータ空間(例:正の値のみ、[0,1]の範囲など)を、制約のない実数空間に変換します。

  2. リパラメトリゼーショントリック: サンプリングの分散を低減するために、リパラメトリゼーションを用います。

変数変換

ADVIでは、以下のような変換を使って制約のあるパラメータを制約のない空間に変換します:

  • 正の値( \theta > 0):対数変換  \zeta = \log(\theta)

  • 区間 \theta \in (a,b)):ロジット変換  \zeta = \log\left(\frac{\theta-a}{b-\theta}\right)

  • シンプレックス \theta \in \Delta^{K-1}):スティック破り変換とロジット変換の組み合わせ

  • 相関行列:コレスキー因子と対角成分の変換

これらの変換により、あらゆるパラメータを制約のない空間で扱えるようになり、単一のガウス変分分布を適用できます。

変換されたパラメータ \zetaに対して、変分分布を以下のように設定します:
 q(\zeta | \lambda) = \mathcal{N}(\zeta | \mu, \Sigma)
ここで \lambda = {\mu, \Sigma}は変分パラメータです。

リパラメトリゼーショントリック

ADVIでは、リパラメトリゼーショントリックを用いて勾配の低分散推定を行います:

 \zeta = \mu + L\epsilon, \quad \epsilon \sim \mathcal{N}(0, I)
ここで L \Sigma = LL^Tを満たす行列(例:コレスキー因子)です。このトリックにより、期待値の勾配が以下のように表現できます:
 \nabla_\mu \text{ELBO} = \mathbb{E}{\epsilon \sim \mathcal{N}(0, I)}[\nabla\zeta \log p(D, T^{-1}(\zeta)) - \nabla_\zeta \log q(\zeta | \lambda)]
 \nabla_L \text{ELBO} = \mathbb{E}{\epsilon \sim \mathcal{N}(0, I)}[(\nabla\zeta \log p(D, T^{-1}(\zeta)) - \nabla_\zeta \log q(\zeta | \lambda)) \epsilon^T + \nabla_L H[q(\zeta | \lambda)]]
ここで T^{-1}は変換の逆関数です。

ADVIのアルゴリズム

ADVIのアルゴリズムは以下の通りです:

  1. 制約のあるパラメータ \thetaを制約のない変数 \zetaに変換します。

  2. 変分パラメータ \lambda = {\mu, L}を初期化します。

  3. 収束するまで以下を繰り返します:

 a. 標準正規分布から S個のサンプル \epsilon^1, \ldots, \epsilon^Sを生成します。
 b. 各サンプルについて \zeta^s = \mu + L\epsilon^sを計算し、さらに \theta^s = T^{-1}(\zeta^s)を計算します。
 c. 各サンプルについて \nabla_\zeta \log p(D, \theta^s) \nabla_\zeta \log q(\zeta^s | \lambda)を計算します。
 d. ELBOの勾配を近似し、 \lambdaを更新します。
4. 最終的な近似事後分布を q(\theta | \lambda^*)(元のパラメータ空間)として出力します。

ADVIの長所と短所

長所

  • 制約のあるパラメータも扱える汎用的な手法

  • リパラメトリゼーショントリックによる効率的な勾配推定

  • 自動微分と組み合わせることで、実装が容易になる

  • 様々なモデルに対して統一的なアプローチが可能

短所

  • 単一のガウス分布を使用するため、複雑な事後分布(多峰性や歪んだ分布)の近似には限界がある

  • 変数変換によるヤコビアン補正が必要で、計算コストが増加する

  • 高次元パラメータの場合、共分散行列の表現が計算上の課題になる

ADVIは特に、制約のあるパラメータを含むモデル(例:階層モデル、ベイズ非負行列分解など)に対して効果的です。また、Stan、PyMC、TensorFlowなどのソフトウェアパッケージに実装されており、実用的なベイズ推論のデファクトスタンダードとなりつつあります。

4.5 確率的変分推論(SVI)

確率的変分推論(Stochastic Variational Inference, SVI)は、大規模データセットに対する変分ベイズ法の計算効率を向上させるために開発されました。SVIの核心は、データのミニバッチを使ってELBOの勾配を確率的に推定することです。

ELBOのデータ分解

データ D = {x_1, \ldots, x_N}に対するELBOは以下のように分解できます:
 \text{ELBO} = \mathbb{E}{q(\theta)}[\log p(\theta)] - \mathbb{E}{q(\theta)}[\log q(\theta)] + \sum_{i=1}^{N} \mathbb{E}_{q(\theta)}[\log p(x_i | \theta)]
データ項 \sum_{i=1}^{N} \mathbb{E}_{q(\theta)}[\log p(x_i | \theta)]は、各データポイントの寄与の合計です。大規模データセットでは、この項の計算が時間的にボトルネックになります。

ミニバッチ勾配

SVIでは、ミニバッチ \mathcal{B} \subset {1, \ldots, N}を使って、データ項を近似します:
 \sum_{i=1}^{N} \mathbb{E}{q(\theta)}[\log p(x_i | \theta)] \approx \frac{N}{|\mathcal{B}|} \sum{i \in \mathcal{B}} \mathbb{E}_{q(\theta)}[\log p(x_i | \theta)]
ここで |\mathcal{B}|はミニバッチのサイズです。この近似により、計算コストを O(N)から O(|\mathcal{B}|)に削減できます。

ナチュラル勾配

SVIではしばしば、ELBOの通常の勾配ではなく、ナチュラル勾配を使用します。ナチュラル勾配は、変分分布のパラメータ空間における情報幾何学的な構造を考慮した勾配です。
指数型分布族(ガウス分布、ベルヌーイ分布など多くの標準的な分布はこれに含まれる)の場合、ナチュラル勾配は以下のように表現できます:

 \hat{\nabla}\lambda \text{ELBO} = G(\lambda)^{-1} \nabla\lambda \text{ELBO}
ここで G(\lambda)はフィッシャー情報行列です。例えば、平均場近似で各変分分布が指数型分布族に属する場合、ナチュラル勾配を用いた更新式は特に簡潔になります。

SVIのアルゴリズム

SVIのアルゴリズムは以下の通りです:

  1. 変分パラメータ \lambdaを初期化します。

  2. 収束するまで以下を繰り返します:

 a. データからミニバッチ \mathcal{B}をランダムに選択します。

 b. ミニバッチを使ってELBOの勾配(またはナチュラル勾配)を近似します:

 c. 確率的勾配降下法 \lambdaを更新します:

 \lambda \leftarrow \lambda + \rho_t \nabla\lambda \text{ELBO}_{\mathcal{B}}

 \rho_tはステップ tでの学習率)

  1. 最終的な近似事後分布 q(\theta | \lambda^*)を出力します。

学習率スケジューリング

SVIの収束には適切な学習率スケジューリングが重要です。通常、以下のようなスケジュールが使われます:

 \rho_t = (t_0 + t)^{-\kappa}
ここで t_0 > 0 \kappa \in (0.5, 1]はハイパーパラメータです。このスケジュールは確率的近似の理論に基づいており、適切な条件下での収束を保証します。

SVIの長所と短所

長所

  • 大規模データセットに対する計算効率の良さ

  • オンライン学習や逐次的更新が自然に可能

  • 様々な変分ベイズ法(MFVB、FFVB、BBVI、ADVIなど)と組み合わせて使用できる

  • 現代の分散計算フレームワークで並列処理が容易

短所

  • ミニバッチによる勾配推定の分散が大きく、収束に時間がかかる場合がある

  • 学習率やミニバッチサイズなどのハイパーパラメータの選択が結果に影響する

  • 限られたミニバッチでは、完全なデータセットの情報を捉えきれない場合がある

SVIは特に、大規模データセットを扱うベイズモデル(トピックモデル、ベイズニューラルネットワーク、大規模階層モデルなど)に適しています。現代の機械学習において、データサイズの増大とともにその重要性はますます高まっています。

5. 変分ベイズ法の結果をMCMCに近づける方法

変分ベイズ法の結果をMCMCの結果に近づけるために、様々な方法が提案されています。ここでは、主要なアプローチを詳しく解説します。

5.1 より表現力のある変分族の使用

変分ベイズ法の近似精度を向上させる最も直接的な方法は、より表現力のある変分分布族を使用することです。

5.1.1 フルランク共分散行列

最も基本的なアプローチは、ガウス変分分布で対角共分散行列ではなく、フルランク共分散行列を使用することです:

 q(\theta) = \mathcal{N}(\theta | \mu, \Sigma)

ルランク共分散行列を使用すると、パラメータ間の相関関係を捉えることができます。これにより、平均場近似の主要な制約であるパラメータ独立性の仮定を緩和できます。
例えば、線形回帰モデルでは係数間に強い相関がありますが、フルランク共分散行列を使えばこの相関構造を適切に表現できます。

ただし、パラメータ数が O(d^2) dはパラメータの次元数)に増加するため、高次元の場合は計算コストが高くなるという欠点があります。このトレードオフに対処するために、以下のような中間的なアプローチも考えられます:
  • 低ランク近似
 \Sigma = \text{diag}(\sigma^2) + VV^T

ここで V d \times k行列( k \ll d)です。これにより、 O(dk)のパラメータで主要な相関構造を捉えることができます。

  • スパース近似 \Sigmaの多くの要素をゼロと仮定し、重要な相関のみを表現する方法です。グラフィカルモデルの構造を利用して、条件付き独立関係を特定できる場合に特に有効です。

フルランク共分散行列の使用は、パラメータ次元が中程度(数十~数百)で、パラメータ間の相関が重要な問題に特に効果的です。

5.1.2 ノーマライジングフロー

ノーマライジングフローは、単純な分布(例:標準ガウス分布)を一連の可逆変換を通じて複雑な分布に変換する手法です:

 z_0 \sim q_0(z_0), \quad z_K = f_K \circ f_{K-1} \circ \cdots \circ f_1(z_0)
ここで f_1, \ldots, f_Kは可逆な変換関数です。最終的な変分分布は以下のようになります:
 q_K(z_K) = q_0(z_0) \prod_{k=1}^{K} \left| \det \frac{\partial f_k^{-1}}{\partial z_k} \right|

この式は変数変換の公式に基づいており、ヤコビアン行列式の絶対値の積が分布の変換に対する「補正項」となっています。

ノーマライジングフローの鍵は、以下の条件を満たす変換関数 f_kの設計です:

主要なノーマライジングフローの例としては以下があります:

 f(z) = z + u h(w^T z + b)
ここで hは活性化関数(例:tanh)、 u, wはベクトル、 bスカラーパラメータです。
  • 放射状フロー(Radial Flow)
 f(z) = z + \beta h(\alpha, r)(z - z_0)
ここで r = |z - z_0| h(\alpha, r) = \frac{1}{\alpha + r} \alpha, \beta, z_0はパラメータです。
  • アフィンカップリングフロー(Affine Coupling Flow)
 zを二つの部分 z_1, z_2に分割し、
 f(z_1, z_2) = (z_1, z_2 \odot \exp(s(z_1)) + t(z_1))
ここで s, tニューラルネットワークで表現される関数、 \odotは要素ごとの積です。

これらの変換を複数層重ねることで、非常に複雑な分布も表現可能になります。ノーマライジングフローは、特に多峰性や歪んだ事後分布の近似に有効です。 ノーマライジングフローの利点は、十分な変換層を使えば非常に複雑な分布(マルチモーダルや非対称な分布)も表現できる点です。欠点は、計算コストが高く、適切な変換関数の設計が難しい点です。

5.1.3 混合ガウス分布

複数のガウス分布の混合を変分分布として使用する方法も効果的です:

 q(\theta) = \sum_{i=1}^{K} \pi_i \mathcal{N}(\theta | \mu_i, \Sigma_i)
ここで \pi_iは混合重み( \sum_i \pi_i = 1)、 \mu_i \Sigma_iはそれぞれ i番目の成分の平均と共分散です。混合ガウス分布を用いた変分ベイズ法では、各ガウス成分のパラメータに加えて混合重みも最適化パラメータとなります。ELBOの計算は複雑になりますが、以下のようなアプローチがあります:
  • モンテカルロ近似: サンプルを生成して期待値を近似する方法です。各サンプルは、まず混合成分 iを確率 \pi_iで選び、次にその成分からサンプリングします。

  • 変分下界のさらなる近似: 混合分布の対数の期待値は解析的に計算できないため、ジェンセンの不等式などを用いてさらに近似することもあります。

混合ガウス分布は、異なるモードを持つマルチモーダルな事後分布を捉えるのに適しています。例えば、混合モデルのパラメータや、複数の局所解を持つ非線形モデルの事後分布などに効果的です。
ただし、混合成分数 Kの選択や、各成分のパラメータ最適化が難しくなります。また、成分数に比例して計算コストが増加する点も考慮する必要があります。

5.2 改良されたKLダイバージェンス

5.2.1 リバースKLダイバージェンス

変分ベイズ法では通常、 KL(q(\theta) || p(\theta|D))フォワードKL)を最小化しますが、これを KL(p(\theta|D) || q(\theta))(リバースKL)に変更する手法もあります。フォワードKLとリバースKLの振る舞いの違いを理解することが重要です:

フォワードKL: KL(q || p)

  •  q(\theta) p(\theta|D)を「カバー」しようとする(zero-avoiding)

  •  p(\theta|D)がゼロの領域で q(\theta)もゼロになることを強制する

  • 事後分布の単一のモードに集中しがちで、分散を過小評価する傾向がある

リバースKL: KL(p || q)

  •  q(\theta) p(\theta|D)の高密度領域に「一致」しようとする(zero-forcing)

  •  p(\theta|D)の複数のモードがある場合、 q(\theta)はそのいずれかに集中しがち

  • 事後分布の単一のモードをより正確に捉える傾向がある

リバースKLの課題は、事後分布 p(\theta|D)を直接計算できない場合、これを最小化することが困難である点です。そこで、事後分布のサンプルを使って近似的に最小化する方法が提案されています。例えば、MCMCやその他のサンプリング法で事後分布からサンプル {\theta^s}_{s=1}^Sを生成し、以下の目的関数を最小化します:
 \hat{KL}(p || q) \approx \frac{1}{S} \sum_{s=1}^S (-\log q(\theta^s | \lambda)) + \text{const.}

これは、サンプルの対数尤度を最大化することに相当します。MCMC-VAEなどのモデルでは、この考え方が応用されています。
リバースKLアプローチの利点は、事後分布のモードをすべて捉える傾向があることです。欠点は、事後分布からのサンプリングが必要であり、計算コストが高くなることです。

5.2.2 アルファダイバージェンス

KLダイバージェンスを一般化したアルファダイバージェンスを使用する方法もあります:

 D_\alpha(p || q) = \frac{4}{1-\alpha^2} \left(1 - \int p(x)^{\frac{1+\alpha}{2}} q(x)^{\frac{1-\alpha}{2}} dx \right)
パラメータ \alpha \in [-1, 1]を変化させることで、様々な特性を持つダイバージェンスを得ることができます:
  •  \alpha \to 1のとき、フォワードKL: KL(p || q)

  •  \alpha \to -1のとき、リバースKL: KL(q || p)

  •  \alpha = 0のとき、ヘリンジャー距離(Hellinger distance)

アルファダイバージェンスを用いた変分推論(Variational Inference with α-divergence, VI-α)では、一般化された変分下界を最大化します:

 L_\alpha(\lambda) = -\frac{1}{\alpha} \log \mathbb{E}_{q(\theta | \lambda)} \left[ \left( \frac{p(D, \theta)}{q(\theta | \lambda)} \right)^\alpha \right]
VI-αの実装には、重点サンプリング(importance sampling)などの技術が用いられます。アルファダイバージェンスの利点は、 \alphaを調整することで、近似の特性(モードを捉える vs. 広がりを捉える)をコントロールできる点です。

5.2.3 最大平均乖離推定(MMD

カーネル平均埋め込みに基づく最大平均乖離(Maximum Mean Discrepancy, MMD)を使用する方法もあります。MMDは二つの分布間の距離を、再生核ヒルベルト空間(RKHS)における平均埋め込みの距離として定義します:

 \text{MMD}(p, q) = ||\mu_p - \mu_q||_{\mathcal{H}}^2
ここで \mu_p = \mathbb{E}{p(x)}[k(x, \cdot)] \mu_q = \mathbb{E}{q(x)}[k(x, \cdot)]はそれぞれの分布のカーネル平均埋め込みで、 k(\cdot, \cdot)は正定値カーネル(例:ガウスカーネル)です。サンプル {x_i}{i=1}^m \sim p {y_j}{j=1}^n \sim qを用いて、MMDは以下のように推定できます:
 \widehat{\text{MMD}}(p, q) = \frac{1}{m^2} \sum_{i,i'} k(x_i, x_{i'}) - \frac{2}{mn} \sum_{i,j} k(x_i, y_j) + \frac{1}{n^2} \sum_{j,j'} k(y_j, y_{j'})

MMDを用いた変分推論では、カーネルパラメータの選択が重要になります。適切なカーネルを使えば、KLダイバージェンスでは捉えられない分布の特性を考慮できる可能性があります。 MMDの利点は、パラメトリックな分布族の制約を受けず、より柔軟な分布の比較が可能な点です。欠点は、カーネルの選択や計算コストの高さが挙げられます。

5.3 変分推論の後処理

変分推論の結果を後処理することで、近似の質を向上させる方法もあります。

5.3.1 重点サンプリング(Importance Sampling)

変分分布 q(\theta | \lambda)からサンプル {\theta^s}_{s=1}^Sを生成し、重み w_s = \frac{p(D, \theta^s)}{q(\theta^s | \lambda)}を計算します。これらの重み付きサンプルを使って、期待値などの統計量をより正確に推定できます:
 \mathbb{E}{p(\theta | D)}[f(\theta)] \approx \frac{\sum{s=1}^S w_s f(\theta^s)}{\sum_{s=1}^S w_s}
重点サンプリングは特に、予測分布の計算などに有効です。変分推論自体の目的である「近似事後分布 q(\theta | \lambda)の最適化」はそのままに、その結果を用いた推論をより正確にするアプローチです。この方法は、変分近似で捉えられなかった事後分布の特性を、ある程度補正できる可能性があります。ただし、変分分布と真の事後分布の乖離が大きい場合、重みの分散が大きくなり効果が限定的になることがあります。

5.3.2 マルコフ連鎖変分推論(MCVI)

変分分布 q(\theta | \lambda)を初期分布として、短いマルコフ連鎖を走らせる方法もあります。具体的には:
  1. 変分ベイズ法で近似事後分布 q(\theta | \lambda)を得る

  2.  q(\theta | \lambda)からサンプル \theta^{(0)}を生成

  3. このサンプルを初期値として、短いMCMCチェーン(例:メトロポリスヘイスティングス法)を実行し、 \theta^{(1)}, \ldots, \theta^{(T)}を得る

  4. 最終的なサンプル \theta^{(T)}(またはburn-in後のサンプル)を使用

このアプローチは、変分分布が真の事後分布の高密度領域に近い場合に特に効果的です。MCMCの収束を加速しつつ、真の事後分布からのサンプルを得られる可能性があります。

5.3.3 多変量デルタ法(Multivariate Delta Method)

変分分布の平均と分散を用いて、非線形変換された量の期待値や分散を近似する方法もあります。例えば、関数 g(\theta)の期待値は以下のように近似できます:

 \mathbb{E}{p(\theta | D)}[g(\theta)] \approx g(\mathbb{E}{q(\theta | \lambda)}[\theta]) + \frac{1}{2} \text{Tr}(\nabla^2 g(\mathbb{E}{q(\theta | \lambda)}[\theta]) \cdot \text{Var}{q(\theta | \lambda)}[\theta])

この方法は、特に予測分布のモーメント(平均、分散など)を計算する際に有用です。ただし、関数 g(\theta)が非常に非線形で、変分分布と真の事後分布の乖離が大きい場合には、近似精度が低下する可能性があります。

5.4 実践的なヒント:変分ベイズ法とMCMCの併用

実践的な観点から、変分ベイズ法とMCMCを相補的に使用することが有効な場合があります:

5.4.1 変分ベイズ法による初期化

MCMCの収束を加速するために、変分ベイズ法の結果を初期値として使用する方法があります:

  1. 変分ベイズ法で近似事後分布 q(\theta | \lambda)を得る

  2. この分布からサンプル \theta^{(0)}を生成し、MCMCの初期値として使用

  3. MCMCを実行して事後分布からのサンプルを得る

この方法は、変分分布が真の事後分布の高密度領域に近い場合、MCMCの混合時間を大幅に短縮できる可能性があります。

5.4.2 モデル選択のための変分ベイズ

複数のモデルを比較する場合、変分ベイズ法で各モデルの周辺尤度(の下界)を迅速に計算し、有望なモデルを選択した後で、そのモデルに対してのみMCMCを適用するアプローチも有効です:

  1. 候補モデル M_1, M_2, \ldots, M_Kに対して変分ベイズ法を適用し、各ELBOを計算

  2. 最も高いELBOを持つモデル(または上位数モデル)を選択

  3. 選択したモデルに対してMCMCを適用し、より正確な事後分布を得る

このアプローチにより、計算リソースを効率的に使いながら、モデル選択と事後推論の両方を行うことができます。

5.4.3 分割統治アプローチ

大規模モデルでは、パラメータを複数のブロックに分割し、一部のブロックには変分ベイズ法を、他のブロックにはMCMCを適用するハイブリッドアプローチも考えられます:

  1. パラメータ \theta \theta_1 \theta_2に分割

  2.  \theta_1に対しては変分近似 q(\theta_1)を使用

  3.  \theta_2に対しては、 \theta_1を固定した条件付き分布 p(\theta_2 | \theta_1, D)からのMCMCサンプリングを行う

  4. 両者を交互に更新

この方法は、モデルの一部が解析的に扱いやすく、別の部分が複雑な構造を持つ場合に特に有効です。

6. 変分ベイズ法の応用例

変分ベイズ法は多くの実用的な問題に応用されています。ここでは主要な応用例を紹介します。

6.1 トピックモデリング

潜在ディリクレ配分法(Latent Dirichlet Allocation, LDA)などのトピックモデルは、変分ベイズ法の初期の成功例の一つです。LDAでは、文書はトピックの混合として、トピックは単語の分布として表現されます。
変分ベイズ法を用いたLDAでは、潜在変数(各単語のトピック割り当てなど)に対して平均場近似を適用します:

 q(\beta, \theta, z) = q(\beta)q(\theta)\prod_{d,n} q(z_{d,n})
ここで \betaはトピック-単語分布、 \thetaは文書-トピック分布、 z_{d,n}はトピック割り当てです。大規模テキストコーパスに対しても効率的に適用できるため、トピックモデリングでは変分ベイズ法が標準的なアプローチとなっています。確率的変分推論(SVI)を用いることで、オンライン学習も可能です。

6.2 ベイズニューラルネットワーク

ニューラルネットワークのパラメータ(重みとバイアス)に事前分布を設定し、事後分布を推論するベイズニューラルネットワークでも、変分ベイズ法が広く使われています。
一般的なアプローチでは、各パラメータに対してガウス変分分布を使用します:

 q(w_{ij}) = \mathcal{N}(w_{ij} | \mu_{ij}, \sigma_{ij}^2)

これにより、パラメータの不確実性を考慮した予測が可能になります。
自動微分変分推論(ADVI)やブラックボックス変分推論(BBVI)は、ベイズニューラルネットワークの学習に特に適しています。また、ドロップアウトガウス変分推論の特殊ケースとみなせることも示されています(MC Dropout)。

6.3 状態空間モデル

時系列データの解析に使われる状態空間モデル(隠れマルコフモデルやカルマンフィルタなど)にも、変分ベイズ法が適用されています。
例えば、線形ガウス状態空間モデルでは:

 z_t = Az_{t-1} + \epsilon_t, \quad \epsilon_t \sim \mathcal{N}(0, Q)
 y_t = Bz_t + \delta_t, \quad \delta_t \sim \mathcal{N}(0, R)
潜在状態 z_tと遷移パラメータ A, B, Q, Rの事後分布を変分ベイズ法で近似します。変分状態空間モデルは、平均場近似の限界を克服するために構造化変分推論(SVI)やノーマライジングフローなどの高度な手法が使われることが多いです。

最後に

変分ベイズ法は近似ベイズ推論の主要なアプローチとして、理論・アルゴリズム・応用の各面で急速に発展しています。特に、深層学習と組み合わせた変分推論の可能性はまだ十分に探求されていない領域です。
一方で、変分ベイズ法にはまだ多くの課題があることも事実です。真の事後分布との乖離をより正確に評価する方法、近似分布族の選択の体系化、高次元モデルにおける計算効率のさらなる向上、KLダイバージェンス以外の目的関数の探求など、理論的・実践的な研究課題が残されています。
また、MCMCと変分ベイズ法のハイブリッドアプローチや、変分ベイズ法をベースとした新たな近似手法の開発など、計算ベイズ推論の分野には多くの可能性があります。
変分ベイズ法は、ベイズ推論の計算的課題と実用的応用のバランスを取る上で、今後も中心的な役割を果たしていくでしょう。その理論的基盤の美しさと実践的有用性の両面から、統計学機械学習の交差点に位置する魅力的な研究分野であり続けます。
この記事が、変分ベイズ法の背後にある考え方と具体的な実装手法の理解の一助となれば幸いです。実際の問題に適用する際には、選択した近似手法の仮定と制約を常に念頭に置き、結果を慎重に解釈することが重要です。状況に応じて、変分ベイズ法、MCMC、あるいはその他の手法を適切に選択・組み合わせることで、より強力なベイズ推論が可能になるでしょう。
最後までお読みいただきありがとうございました。とにかく書き上げるのが本当に大変でしたし、何もすることが無かったので良かったのですが、ゴールデンウイークがいつの間にか終わっていました...
  
本当に最後にお詫びなのですが、はてなブログのはてなTeXの仕組みのせいで、一部数式が正しく表示できない問題が発生しています...色々試行錯誤して見たものの、修正ができませんでした。読みにくい中お読みいただきありがとうございました。

微分可能因果探索とNOTEARSの理論

はじめに

因果関係の探索、特に有向非巡回グラフ(DAG: Directed Acyclic Graph)の推定は、機械学習統計学における重要な課題です。DAGは変数間の因果関係を矢印で表現するグラフであり、Bayesianネットワークとも呼ばれています。従来、DAGの学習は組合せ最適化問題として定式化され、非巡回性(acyclicity)の制約を満たすグラフ構造を探索するという非常に難しい問題でした。
なぜ難しいのでしょうか?それは、変数の数が増えるにつれてDAGの可能な構造の数が超指数関数的に増加するためです。例えば、10個の変数だけでも可能なDAG構造は約1018個あります。また、グラフの非巡回性という制約は組合せ的な性質を持ち、連続最適化の枠組みで扱うことが困難でした。
しかし、2018年にZhengらによって提案されたNOTEARS(Non-combinatorial Optimization via Trace Exponential and Augmented lagRangian for Structure learning)は、この難問に革命的なアプローチをもたらしました。NOTEARSの最大の革新点は、離散的な非巡回性制約を連続的な制約に変換したことにあります。これにより、DAG学習問題を標準的な連続最適化問題として解けるようになりました。
本記事では、微分可能因果探索の基本的な考え方から始め、NOTEARSアルゴリズムの理論と実装について詳しく解説します。さらに、NOTEARSから派生した最新の研究動向についても紹介します。

因果探索の伝統的アプローチとその限界

従来の因果グラフ探索は、以下のような離散的な最適化問題として定式化されていました:

\min_{G} Q(G) \quad \text{subject to} \quad G \in \mathcal{D}
ここで、Gはグラフ構造、Q(G)はスコア関数(BIC、MDLなど)、\mathcal{D}はDAGの集合を表します。この問題は複数の理由から解くのが非常に困難です。まず、DAGの空間が離散的で組合せ的であること、次に可能なDAG構造の数が変数の数に対して超指数関数的に増加すること、そして非巡回性制約が扱いにくいことが挙げられます。

これらの課題に対処するため、様々なアルゴリズムが開発されてきました。順序ベースの手法では変数の順序付けを探索し、その順序に基づいてDAGを構築します。貪欲探索法では局所的な改善を繰り返し行います(例:Greedy Equivalence Search)。またスコアベースの手法ではスコア関数を最適化するグラフ構造を探索します。
これらの手法は一定の成功を収めていますが、高次元データや複雑なグラフ構造では依然として計算効率や精度の面で課題がありました。

連続最適化としての因果探索:発想の転換

NOTEARSの革新的なアイデアは、離散的なDAG探索問題を連続最適化問題に変換することです。この転換の鍵となるのは、グラフの隣接行列とその性質です。

構造方程式モデル(SEM)と隣接行列

NOTEARSは線形構造方程式モデル(SEM)を前提としています:

X_j = \sum_{i=1}^{d} W_{ij} X_i + \varepsilon_j
ここで、X = (X_1, \ldots, X_d)は観測変数のベクトル、W \in \mathbb{R}^{d \times d}は重み行列(隣接行列)、\varepsilon_jはノイズ項です。W_{ij} \neq 0は変数iから変数jへの直接の因果関係があることを示します。
この重み行列WがDAGを表現するためには、非巡回性の条件を満たす必要があります。従来の手法では、この非巡回性を保証するために、グラフに新しいエッジを追加するたびに巡回がないかを明示的にチェックする必要がありました。これは計算効率の面で大きなボトルネックとなっていました。

問題の再定式化

NOTEARSは、DAG学習問題を以下のように再定式化します:

\min_{W \in \mathbb{R}^{d \times d}} F(W) \quad \text{subject to} \quad G(W) \in \mathcal{D}
ここで、F(W)はデータに対する適合度とスパース性を評価するスコア関数、G(W)Wから導かれるグラフ、\mathcal{D}はDAGの集合です。典型的には、F(W)は二乗誤差損失と正則化項の組み合わせになります:
F(W) = \frac{1}{2n} \|X - XW\|_F^2 + \lambda \|W\|_1
ここで、X \in \mathbb{R}^{n \times d}n個のサンプルからなるデータ行列、\|\cdot\|_Fはフロベニウスノルム、\|\cdot\|_1L_1ノルム(スパース性を促進)、\lambda正則化パラメータです。
しかし、制約G(W) \in \mathcal{D}は依然として離散的で扱いにくいものです。NOTEARSの最大の貢献は、この離散的な制約を連続的な等式制約に置き換えたことにあります。

NOTEARSの理論:非巡回性の微分可能な特性付け

NOTEARSの中核となるアイデアは、グラフの非巡回性を表現する滑らかな関数h(W)を構築することです。理想的には、この関数は以下の性質を持つべきです。まず、h(W) = 0当且つ当にWが非巡回的(DAG)であること、次にh(W)の値がグラフの「DAG性」を定量化すること、さらにh(W)が滑らか(微分可能)であること、そしてh(W)とその導関数が計算容易であることが挙げられます。

Zhengらは、以下の関数がこれらの条件を満たすことを示しました:

h(W) = \text{tr}(e^{W \circ W}) - d
ここで、\circアダマール積(要素ごとの積)、e^{W \circ W}は行列W \circ Wの行列指数関数、\text{tr}はトレース(対角和)、dは変数の数です。

この関数が非巡回性をどのように特徴付けるのか、直観的に理解してみましょう。

非巡回性の連続的表現:直観的理解

行列S = W \circ Wを考えます。この行列はWのスパース構造を保ちながら、全ての要素を非負にします。任意の正の整数kに対して、S^kの要素(S^k)_{ij}は、ノードiからノードjへのすべての長さkのパスの重みの積の和を表します。
グラフが非巡回的であるとき、ある長さ以上のパスはすべて存在しなくなります。具体的には、d個のノードを持つDAGでは、長さd以上のパスは存在できません。これは、行列S^kk \geq d)のすべての対角要素が0になることを意味します。

行列指数関数の定義から:

e^S = I + S + \frac{1}{2!}S^2 + \frac{1}{3!}S^3 + \cdots

このトレースをとると:

\text{tr}(e^S) = \text{tr}(I) + \text{tr}(S) + \frac{1}{2!}\text{tr}(S^2) + \cdots = d + \text{tr}(S) + \frac{1}{2!}\text{tr}(S^2) + \cdots
ここで、\text{tr}(I) = dです。さらに、\text{tr}(S^k)は長さkのすべての閉路(サイクル)の重みの和と解釈できます。グラフが非巡回的であれば、すべてのk \geq 1に対して\text{tr}(S^k) = 0となります。従って、\text{tr}(e^S) = dとなり、h(W) = \text{tr}(e^S) - d = 0が成立します。
逆に、グラフにサイクルが存在する場合、少なくとも一つのkに対して\text{tr}(S^k) > 0となり、h(W) > 0となります。

この特性付けにより、離散的なDAG制約を連続的な等式制約[tex(W) = 0]に置き換えることができます。この制約は微分可能であり、その勾配も簡単に計算できます:

\nabla h(W) = (e^{W \circ W})^T \circ (2W)

これにより、問題は以下の等式制約付き連続最適化問題に変換されます:

\min_{W \in \mathbb{R}^{d \times d}} F(W) \quad \text{subject to} \quad h(W) = 0

この問題は、拡張ラグランジュ法や罰則法などの標準的な最適化手法で解くことができます。

NOTEARSアルゴリズム:実装と最適化

NOTEARSアルゴリズムは、上記の等式制約付き最適化問題を拡張ラグランジュ法を用いて解きます。拡張ラグランジュ関数は以下のように定義されます:

L_\rho(W, \alpha) = F(W) + \alpha h(W) + \frac{\rho}{2}h(W)^2
ここで、\alphaラグランジュ乗数、\rho > 0はペナルティパラメータです。
アルゴリズムは以下の手順で進行します。まず初期値W_0ラグランジュ乗数\alpha_0を設定します。次に各反復tで、未制約の部分問題W_{t+1} = \arg\min_W L_\rho(W, \alpha_t)を解き、ラグランジュ乗数を更新します:\alpha_{t+1} = \alpha_t + \rho h(W_{t+1})。そして収束判定としてh(W_{t+1}) < \epsilonを満たせば終了します。最後に得られたW閾値処理して最終的なDAG構造を得ます。
部分問題の解法には、L-BFGS(Limited-memory Broyden–Fletcher–Goldfarb–Shanno)アルゴリズムなどの準ニュートン法が効果的です。L_1正則化項がある場合は、近接勾配法や座標降下法などの複合最適化手法が適用できます。

閾値処理ステップは、推定された行列の小さな値(ノイズに起因する可能性がある)をゼロにすることで、より明確なグラフ構造を得るために重要です。

アルゴリズムの実装詳細

NOTEARSの実装は非常にシンプルで、標準的な数値最適化ライブラリを使用して約50行のPythonコードで実現できます。以下はアルゴリズムの核心部分を表すコードの概要です。

def notears(X, lambda1, loss_type='l2'):
    """
    NOTEARSアルゴリズムの実装
    
    Parameters
    ----------
    X : numpy.ndarray
        n×dのサンプルデータ行列
    lambda1 : float
        L1正則化パラメータ
    loss_type : str
        損失関数のタイプ ('l2' または 'logistic')
        
    Returns
    -------
    W_est : numpy.ndarray
        推定された重み行列(隣接行列)
    """
    n, d = X.shape
    # 最適化問題の初期値
    W_est = np.zeros((d, d))
    
    # 目的関数の定義
    def _loss(W):
        if loss_type == 'l2':
            return 0.5 / n * np.square(np.linalg.norm(X - X @ W, 'fro'))
        elif loss_type == 'logistic':
            # ロジスティック回帰損失の実装(省略)
            pass
    
    # 非巡回性制約関数の定義
    def _h(W):
        M = W * W  # アダマール積
        E = scipy.linalg.expm(M)  # 行列指数関数
        h = np.trace(E) - d
        return h
    
    # 非巡回性制約の勾配
    def _grad_h(W):
        M = W * W
        E = scipy.linalg.expm(M)
        return E.T * (2 * W)
    
    # 拡張ラグランジュ法のパラメータ
    alpha = 0
    rho = 1.0
    h_tol = 1e-8
    rho_max = 1e+16
    max_iter = 20
    
    # 拡張ラグランジュ法の実行
    for _ in range(max_iter):
        # 部分問題の解法
        def _objective(w):
            W = w.reshape((d, d))
            loss = _loss(W) + lambda1 * np.sum(np.abs(W))
            h_val = _h(W)
            obj = loss + alpha * h_val + 0.5 * rho * h_val * h_val
            return obj
        
        # 部分問題を解く(例:L-BFGS)
        w_new = scipy.optimize.minimize(
            _objective, W_est.flatten(), 
            method='L-BFGS-B').x
        W_new = w_new.reshape((d, d))
        
        # DAG制約の評価
        h_new = _h(W_new)
        
        # 収束判定
        if h_new <= h_tol:
            W_est = W_new
            break
        
        # ラグランジュ乗数の更新
        alpha = alpha + rho * h_new
        rho = min(rho_max, 10 * rho)
        W_est = W_new
    
    # 小さな値を閾値処理
    W_est[np.abs(W_est) < 0.3] = 0
    
    return W_est
このアルゴリズムの美しさは、標準的な数値最適化ライブラリを利用して、複雑なDAG学習問題を解くことができる点にあります。特に、非巡回性制約の行列指数関数表現が、複雑な組合せ条件を滑らかな関数に変換することで、標準的な勾配ベースの最適化手法を適用可能にしています。

NOTEARSの拡張:非線形モデルへの適用

元のNOTEARSは線形SEMを前提としていますが、この考え方は非線形モデルにも拡張できます。2019年にZhengらによって提案されたNonlinear NOTEARSは、多層パーセプトロンMLP)などの非線形関数を用いて変数間の関係をモデル化します。

X_j = f_j(X_{\text{pa}(j)}) + \varepsilon_j
ここで、f_j非線形関数、X_{\text{pa}(j)}X_jの親変数の集合です。非線形モデルでも、ヤコビアン行列を用いてh(W)と同様の制約を構築することができます。

NOTEARSの理論的保証と実践的性能

NOTEARSアルゴリズムには、いくつかの重要な理論的性質があります。まず、(W) = 0という制約が非巡回性を正確に特徴付けることが証明されています。さらに、適切な正則化の下で、NOTEARSは高次元設定での一致性(consistency)を持ちます。

実践的には、NOTEARSは従来のGreedy Equivalence Search(GES)などの手法と比較して、特に変数の数が多い場合や、グラフの次数(各ノードの接続数)が大きい場合に優れた性能を示します。特に、スケールフリーグラフなどの複雑な構造を持つグラフの学習において、NOTEARSの優位性が顕著です。

最新の発展:NOTEARS以降の微分可能因果探索

NOTEARSの成功以降、微分可能因果探索の分野は急速に発展しています。以下に最新の研究動向をいくつか紹介します。

DAGMA: DAG Structure Learning via Matrix Exponential

DAGMAは、NOTEARSをさらに効率化したアルゴリズムで、2021年にYuらによって提案されました。DAGMAは行列指数関数ベースの勾配降下法を用いて、より高速かつ正確にDAGを学習します。特に大規模グラフの学習において計算効率が大幅に向上しています。

GOLEM: Greedy Optimization of the Evidence Lower Bound

GOLEMは、ベイズ的アプローチを採用したDAG学習法で、2020年にNgらによって提案されました。変分推論を用いて証拠下限(ELBO)を最適化することで、不確実性を考慮したDAG学習を可能にします。

DYNOTEARS: ダイナミックネットワーク学習への拡張

DYNOTEARSは、NOTEARSを時系列データに拡張したもので、2020年にPamfilらによって提案されました。時間的依存関係を考慮したDAG学習を可能にします。

X^{(t)}_j = \sum_{i=1}^{d} W^{(0)}_{ij} X^{(t)}_i + \sum_{i=1}^{d} W^{(1)}_{ij} X^{(t-1)}_i + \varepsilon_j^{(t)}
ここで、W^{(0)}は同時点での因果関係、W^{(1)}は時間的な因果関係を表す重み行列です。

グラフニューラルネットワークを用いたDAG学習

最近の研究では、グラフニューラルネットワーク(GNN)を用いたDAG学習手法も提案されています。例えば、GraN-DAGはLachapelleらによって2020年に提案され、複雑な非線形関係を捉えることができます。

介入データを用いたDAG学習

純粋な観測データだけでなく、介入データ(介入実験から得られたデータ)を活用したDAG学習手法も発展しています。例えば、DCDI(Differentiable Causal Discovery from Interventional Data)は、介入データを効率的に利用するための微分可能なフレームワークを提供します。

おわりに

NOTEARSは、従来の組合せ最適化に基づくDAG学習から、連続最適化に基づくアプローチへのパラダイムシフトをもたらしました。その中核となるアイデアは、非巡回性という離散的な制約を、行列指数関数を用いた滑らかな制約に変換したことにあります。
この革新的なアプローチにより、より大規模なグラフの学習や、より複雑なモデルの導入が可能になりました。pytorchなどで組めばGPUによる並列化も可能なため大規模なグラフの学習がより可能となります。個人的に因果探索をするときは、参考程度に一旦俯瞰して因果グラフを眺めたい場合がほとんどなので、大規模なデータをある程度高速に学習可能で、工夫を凝らせば異なる変数形(連続値、離散値、二値、カテゴリ)でもそのまま入れて学習することが可能と考えると、因果探索を扱う手段としては第一候補に挙がるかなと感じました。実際に因果探索を実行してみた感じもいい感じだったので、この方向性で色々遊んでみたいなと思っています。
最後までお読みいただきありがとうございます!

代表性のないサンプル問題

はじめに

代表性のないサンプル(Non-representative Sample)は、統計学において極めて重要な問題です。適切なサンプリングは、データ分析の基盤であり、誤ったサンプリングはどれほど洗練された分析手法を用いても克服できない致命的な問題を引き起こします。
データに基づく意思決定の重要性が増してきていますが、「データがあれば正しい結論が得られる」という過度な信頼が、サンプルの代表性という基本的な問題を見落とす傾向を生み出しています。本記事では、代表性のないサンプルとは何か、その影響、診断方法、そして対処法について詳細に解説します。

代表性のないサンプルの数学的定義

代表性のないサンプルとは、母集団から抽出されたサンプルが母集団の特性を正確に反映していない状態を指します。これは以下の数学的表現で説明できます:

P(X \in A | X \in S) \neq P(X \in A)
ここで、Xは確率変数、Aは関心のある事象、Sはサンプルに含まれる条件を表します。サンプルが代表的であれば、この条件付き確率と無条件確率は等しくなるはずです。しかし、代表性のないサンプルではこの等式が成立しません。

より形式的には、母集団分布P(X)とサンプル分布P_S(X)の間に以下の関係があります:

P_S(X) = \frac{P(X|S)P(S)}{P(S)} = P(X|S)
代表性のあるサンプルではP_S(X) = P(X)となりますが、代表性のないサンプルではこれが成立しません。

サンプル選択バイアスのメカニズム

サンプル選択バイアスは、様々なメカニズムによって発生します。最も基本的な分類として、以下の3つが挙げられます:

1. 自己選択バイアス

自己選択バイアスは、個人の選択がサンプリングに影響を与える場合に発生します。数学的には、サンプルに含まれる確率が個人の特性に依存する状況です:

P(S=1|X) \neq P(S=1)
ここで、S=1はサンプルに含まれることを表します。例えば、アンケート調査では回答意欲の高い人が過剰に代表されやすく、以下のように表現できます:
P(S=1|意欲=高) > P(S=1|意欲=低)

2. サンプルフレームバイアス

サンプルフレームバイアスは、サンプリングの枠組み自体が母集団を正確に反映していない場合に発生します:

P(X \in F) \neq P(X)
ここで、Fはサンプルフレームを表します。例えば、住所録を用いた調査では、住所不定者や施設入所者が除外され、以下のような状況が生じます:
P(X \in F | 住所不定=真) = 0

3. 生存バイアス

生存バイアスは、観測されるサンプルが「生き残った」ものだけである場合に発生します:

P(X|生存=真) \neq P(X)
例えば、成功した企業のみを分析すると、リスクテイキングの効果を過大評価する可能性があります:
E[成功度|リスクテイキング,生存=真] > E[成功度|リスクテイキング]

代表性のないサンプルによる影響の数学的解説

代表性のないサンプルが統計的推論に与える影響を、バイアスの観点から数学的に解説します。

パラメータ推定におけるバイアス

母集団パラメータ\thetaの推定量\hat{\theta}とすると、代表性のないサンプルでは以下のようなバイアスが生じます:

E[\hat{\theta}_S] - \theta = E[\hat{\theta}_S] - E[\hat{\theta}]
ここで、\hat{\theta}_Sは代表性のないサンプルからの推定量を表します。このバイアスの大きさは、サンプル選択メカニズムと推定するパラメータの関係に依存します。

たとえば、平均の推定において、高所得者が過剰に代表されるサンプルでは、所得の平均推定値にバイアスが生じます:

E[\bar{X}_S] - E[\bar{X}] = \int x (p_S(x) - p(x)) dx > 0
ここで、p_S(x)p(x)はそれぞれサンプルと母集団の確率密度関数です。

関係性の推定におけるバイアス

変数間の関係性を推定する場合、代表性のないサンプルは特に複雑な問題を引き起こします。回帰モデルY = X\beta + \epsilonを考えると、代表性のないサンプルによるバイアスは以下のように表現できます:

E[\hat{\beta}_S] - \beta = E[(X_S'X_S)^{-1}X_S'(X_S\beta + \epsilon_S)] - \beta
このバイアスは、サンプル選択がXYの関係に依存する場合に特に顕著になります。例えば、教育効果の研究で高学歴者が過剰に代表されると、教育の収益率が過小評価される可能性があります:
E[\hat{\beta}_{教育,S}] < \beta_{教育}

ヘックマンの選択モデルによる数学的解説

選択バイアスを数学的に理解するための有名なモデルとして、ヘックマンの選択モデルがあります。2段階のプロセスとして表現されます:

  1. 選択方程式:[tex:S^{} = Z\gamma + u]、S = 1if[tex:S^ > 0]、それ以外はS = 0
  2. 結果方程式:Y = X\beta + \epsilonYS = 1のときだけ観測される

ここで、Sはサンプルに含まれるかどうかを表す変数、S^*は潜在変数、Zは選択に影響する変数、Xは結果に影響する変数です。誤差項u\epsilonが相関していると、通常の回帰分析によるβの推定にはバイアスが生じます:

E[Y|X,S=1] = X\beta + E[\epsilon|u > -Z\gamma]
誤差項が二変量正規分布に従うと仮定すると、このバイアス項は以下のように表現できます:
E[\epsilon|u > -Z\gamma] = \rho\sigma_\epsilon\frac{\phi(Z\gamma/\sigma_u)}{\Phi(Z\gamma/\sigma_u)} = \rho\sigma_\epsilon\lambda(Z\gamma/\sigma_u)
ここで、\rhou\epsilon相関係数\sigma_\epsilon\sigma_uはそれぞれの標準偏差\phi\Phiは標準正規分布の密度関数と分布関数、\lambdaは逆ミルズ比と呼ばれる項です。

実践的な影響の詳細解説

代表性のないサンプルの問題は、理論だけでなく実践においても深刻な影響を与えます。以下に具体的な例を示します。

世論調査における代表性の問題

電話調査に基づく世論調査を考えてみましょう。固定電話しか使用しない調査では、以下のようなバイアスが生じる可能性があります:

P(意見=A|固定電話あり) \neq P(意見=A)
例えば、固定電話保有率が年齢と相関している場合:
P(固定電話あり|年齢=高) > P(固定電話あり|年齢=低)
そして意見が年齢と相関している場合:
P(意見=A|年齢=高) \neq P(意見=A|年齢=低)
これにより、サンプルの年齢分布が母集団と異なり、推定される支持率にバイアスが生じます:
\hat{P}(意見=A) \neq P(意見=A)

このような代表性の問題は、1936年の米国大統領選挙予測における「リテラリー・ダイジェスト」の誤りや、1948年の「デューイがトルーマンを破る」という誤った予測など、歴史的な予測失敗の背景にあります。

予測と解釈における代表性のないサンプルの影響

代表性のないサンプルの影響は、予測と解釈で異なる形で現れます。これらの違いを詳細に説明します。

予測における代表性のないサンプルの影響

予測問題においては、サンプルと予測対象の分布が異なる場合に問題が生じます。これは「共変量シフト」と呼ばれる現象で、以下のように表現できます:

P_{\text{train}}(X) \neq P_{\text{test}}(X)
しかし、条件付き分布が同じ場合:
P_{\text{train}}(Y|X) = P_{\text{test}}(Y|X)
予測モデルの期待損失は以下のように計算されます:
E_{\text{test}}[L(Y,f(X))] = \int\int L(y,f(x))P_{\text{test}}(y|x)P_{\text{test}}(x)dydx
訓練データとテストデータでP(Y|X)が同じであれば、損失関数Lが適切に選ばれている限り、理論的には最適なモデルf^*も同じになります。しかし、実際には有限サンプルでの推定誤差があるため、分布のシフトが予測精度に影響を与えます。

実務例:クレジットスコアリングモデル

クレジットスコアリングにおいて、過去の承認された申請者のデータのみを用いてモデルを構築する場合を考えてみましょう:

P(デフォルト|X,承認=1) \neq P(デフォルト|X)
このモデルを全申請者に適用すると、リスクの予測精度が低下します。特に、モデルが「承認されなかった申請者が承認された場合」の結果を予測する必要がある場合、代表性のないサンプルの問題は深刻です。

解釈における代表性のないサンプルの影響

解釈問題、特に因果関係の推定においては、代表性のないサンプルが致命的な問題を引き起こす可能性があります。因果効果の推定では、介入後の結果分布を予測する必要があります:

P(Y|do(X=x)) \neq P(Y|X=x)
ここで、do(X=x)は介入を表す操作です。サンプル選択が処置変数と結果変数の両方に関連している場合、因果効果の推定にバイアスが生じます:
E[Y|do(X=x),S=1] \neq E[Y|do(X=x)]

実務例:マーケティング戦略の評価

Eコマースサイトのマーケティング戦略の効果を評価する場合を考えてみましょう。ウェブサイト訪問者のうち、アカウント登録者のみのデータを分析すると、以下のような問題が生じます:

E[購入額|広告クリック,登録=1] \neq E[購入額|広告クリック]
登録するユーザーは既に購買意欲が高い可能性があり、彼らに対する広告効果は一般ユーザーよりも低い可能性があります。この場合、広告の真の効果は過小評価されるでしょう:
\hat{\beta}_{広告,登録者} < \beta_{広告,全体}

実務における判断の指針

代表性のないサンプルが問題となるのは、以下のような場合です:

  1. 母集団への一般化: サンプルから母集団全体の特性を推測する場合
  2. 因果関係の推定: 変数間の因果効果を推定する場合
  3. 新しい集団への適用: モデルを訓練データとは異なる特性を持つ集団に適用する場合

一方、以下のような場合には問題が軽減されます:

  1. 記述的分析: サンプル自体の特性を記述するだけの場合
  2. 一貫した選択メカニズム: 訓練データとテストデータで同じ選択メカニズムが働く場合
  3. 選択と無相関な変数: 関心のある変数がサンプル選択と無相関な場合

実務においては、データ収集の段階から代表性を意識することが重要です。「利用可能なデータで分析を行う」という受動的なアプローチではなく、「必要な分析のためにデータを収集する」という能動的なアプローチを取るべきです。

代表性のないサンプルの診断方法

代表性のないサンプルを診断するためのいくつかの方法を紹介します。

母集団との比較

最も直接的な方法は、サンプルの特性を既知の母集団特性と比較することです:

\Delta_j = \bar{X}_j - \mu_j
ここで、\bar{X}_jはサンプルにおける変数jの平均、\mu_jは母集団における変数jの真の平均です。標準化された差を計算することも有用です:
\Delta_j^* = \frac{\bar{X}_j - \mu_j}{\sigma_j}
ここで、\sigma_jは変数jの母集団における標準偏差です。|\Delta_j^*| > 0.25の場合、その変数に関してサンプルの代表性に問題がある可能性が高いとされます。

感度分析

サンプル選択のメカニズムが不明な場合、感度分析が有効です。例えば、欠測データの問題では、以下のような感度パラメータを導入します:

\gamma = \frac{P(S=1|Y=1,X)}{P(S=1|Y=0,X)}
このパラメータを様々な値に設定し、推定結果がどれだけ変化するかを確認します。変化が大きい場合、代表性のないサンプルによるバイアスが懸念されます。

プロペンシティスコア分析

サンプル選択確率(プロペンシティスコア)を推定し、その分布を分析する方法も有効です:

e(X) = P(S=1|X)
このスコアの分布が極端に偏っている場合(例えば、0に近い値が多い場合)、一部の特性を持つ対象がサンプルに含まれにくいことを示しています。以下の指標も有用です:
ESS = \frac{(\sum_{i=1}^n w_i)^2}{\sum_{i=1}^n w_i^2}
ここで、w_i = 1/e(X_i)は逆確率重み付けです。Effective Sample Size(ESS)が元のサンプルサイズより大幅に小さい場合、代表性に問題がある可能性が高いです。

対処法の詳細

代表性のないサンプルに対処するためのいくつかの方法を詳細に説明します。

重み付け法

逆確率重み付け(Inverse Probability Weighting, IPW)は、サンプル選択確率の逆数で観測値を重み付けする方法です:

\hat{\mu}_{IPW} = \frac{1}{n}\sum_{i=1}^n \frac{Y_i}{e(X_i)}
ここで、e(X_i)は個体iがサンプルに含まれる確率です。この方法の理論的根拠は、以下の等式に基づいています:
E\left[\frac{SY}{P(S=1|X)}\right] = E[Y]
しかし、重み1/e(X_i)が極端に大きくなると推定値の分散が増大するため、安定化された重みを使用することもあります:
w_i^{stab} = \frac{P(S=1)}{e(X_i)}

複数帰属法

欠測データの場合、複数帰属法(Multiple Imputation)が効果的です。この方法では、欠測値を複数回帰属し、それぞれの完全データセットで分析を行い、結果を統合します:

\hat{\theta} = \frac{1}{M}\sum_{m=1}^M \hat{\theta}_m
ここで、Mは帰属回数、\hat{\theta}_mm番目の帰属データセットからの推定値です。推定量の分散は以下のように計算されます:
V(\hat{\theta}) = W + (1 + M^{-1})B
ここで、Wは帰属内分散、Bは帰属間分散です。この方法は、欠測のメカニズムが「無視可能」(Missing At Random, MAR)である場合に有効です。

ヘックマンの二段階推定法

選択バイアスが存在する場合、ヘックマンの二段階推定法が有効です:

  1. プロビットモデルで選択方程式を推定:P(S=1|Z) = \Phi(Z\gamma)
  2. 逆ミルズ比を計算:\lambda(Z\gamma) = \frac{\phi(Z\gamma)}{\Phi(Z\gamma)}
  3. 結果方程式に逆ミルズ比を含めて推定:E[Y|X,S=1  = X\beta + \rho\sigma_\epsilon\lambda(Z\gamma)
この方法は、誤差項の二変量正規性を仮定しています。また、選択方程式に結果方程式には含まれない変数(除外制約)が必要です。

傾向スコアマッチング

傾向スコア(処置を受ける確率)に基づいて対象をマッチングする方法も効果的です:

e(X) = P(T=1|X)
ここで、Tは処置変数、Xは共変量です。マッチング後の平均処置効果は以下のように推定されます:
ATT = \frac{1}{n_1}\sum_{i:T_i=1}(Y_i - Y_{j(i)})
ここで、j(i)は処置群の個体iとマッチングされた対照群の個体を表します。この方法は、観測された共変量に基づく選択バイアスを制御するのに有効です。

最後に

代表性のないサンプルに関して解説しましたがいかがでしたでしょうか?
統計学において、代表性のないサンプルは「データの質はモデルの質を決定する」という格言を体現する問題です。どれほど洗練された分析手法でも、基となるデータに代表性がなければ、誤った結論を導く可能性があります。

重要なのは、代表性のないサンプルは単に「避けるべき問題」としてではなく、「理解し、対処すべき現実」として捉えることです。完璧に代表的なサンプルを得ることは実際には困難であり、むしろ代表性の限界を認識し、それに適切に対処する方法を知ることが重要です。

統計分析を行う際には、「どのようなデータが利用可能か」ではなく、「どのようなデータが問いに答えるために必要か」から考え始めることが、代表性のないサンプルの問題を軽減する第一歩となるでしょう。最後までお読みいただきありがとうございました。

決定木系モデル理論まとめ

はじめに

これまで書いてきた決定木系の理論記事に関して学習の順序に合わせてまとめていこうかなと思います。

決定木理論

tomtom58.hatenablog.com

ランダムフォレストの理論

tomtom58.hatenablog.com

GBDT(勾配ブースティング決定木)の理論

tomtom58.hatenablog.com

XGboostとLightGBMの理論

tomtom58.hatenablog.com

CatBoostの理論

tomtom58.hatenablog.com

ベイズ決定木系モデルの理論

tomtom58.hatenablog.com

番外編

LightGBMのハイパーパラメータ調整を理論面から考える

tomtom58.hatenablog.com

Causal TreeとCausal Forestの理論

tomtom58.hatenablog.com

最後に

これまで決定木系の記事を何個も書いてきたので、学習の順序に合わせてまとめた記事として今回簡単にまとめてみました。学習の補助に使っていただければと思います。

マーケティングにおける顧客セグメンテーション:ベイズ統計の応用

はじめに

マーケティング戦略を考える上で、顧客セグメンテーション(顧客の分類・グループ化)は非常に重要な役割を果たしています。例えば、ECサイトの利用者を「頻繁に購入する常連客」「たまに大きな買い物をする顧客」「ブラウジングだけの顧客」などに分類することで、それぞれに適したアプローチを考えることができます。
このような顧客セグメンテーションに、近年ではベイズ統計の考え方が活用されています。本記事では、特に階層ベイズモデル、潜在クラス分析、隠れマルコフモデルといった手法に焦点を当て、それらの理論的背景と実務での応用について解説していきます。

1. 階層ベイズモデルによるセグメント推定

1.1 階層ベイズモデルの基本的な考え方

階層ベイズモデル(Hierarchical Bayes Model, HB)は、「個人の特性」と「集団としての特性」の両方を同時に考慮できる手法です。例えば、ある商品の価格に対する感度を考えてみましょう。人によって価格への反応は異なりますが、かといって完全にバラバラというわけでもなく、ある程度の傾向は共有しているはずです。このような「個人差はあるが、全体としての傾向もある」という状況を、以下の数式で表現します:

p(\boldsymbol{\beta}_m|\boldsymbol{\mu}, \Sigma) = \mathcal{N}(\boldsymbol{\mu}, \Sigma)
この式は、個人mの特性\boldsymbol{\beta}_mが、全体の平均\boldsymbol{\mu}を中心に、ばらつき\Sigmaを持って分布していることを表しています。まるで「クラスの平均点とその周りのばらつき」のようなイメージです。

この考え方をより詳しく表現すると、以下のような3段階の構造になります:

\begin{align*}
\text{第1階層(観測): } & y_{mi} \sim p(y|\boldsymbol{\beta}_m) \\
\text{第2階層(個人): } & \boldsymbol{\beta}_m \sim \mathcal{N}(\boldsymbol{\mu}, \Sigma) \\
\text{第3階層(集団): } & \boldsymbol{\mu} \sim p(\boldsymbol{\mu}), \Sigma \sim p(\Sigma)
\end{align*}

これは、例えば以下のような状況を表現しています。ある商品の購入履歴データを分析する場合を考えてみましょう。
第1階層は「実際の購入データ」を表します。個人mの i番目の購入機会での行動を記録します。
第2階層は「その人の購買傾向」を表します。価格への感度や、ブランドへのこだわりなど、その人特有の性質です。
第3階層は「顧客全体としての傾向」を表します。例えば「この商品カテゴリーでは一般的に価格重視の傾向がある」といった、集団としての特徴です。

1.2 コンジョイント分析への応用

階層ベイズモデルの代表的な応用例として、コンジョイント分析があります。コンジョイント分析とは、商品の様々な特徴(価格、機能、デザインなど)に対する消費者の好みを分析する手法です。例えば、スマートフォンを購入する際、価格、画面サイズ、バッテリー容量などの特徴について、消費者がどのように判断しているかを分析します。
このような選択行動は、以下の数式で表現されます:

U_{mij} = \boldsymbol{\beta}_m^\top \mathbf{x}_{ij} + \epsilon_{mij}
この式は、人mが選択肢iから得る効用(満足度)U_{mij}を表しています。\mathbf{x}_{ij}は商品の特徴を表すベクトル(例:価格が5万円、画面サイズが6.1インチなど)、\boldsymbol{\beta}_mはその人の各特徴に対する重視度、\epsilon_{mij}は予測できないランダムな要素を表します。

実際の選択確率は、以下のように計算されます:

P_{mij} = \frac{\exp(\boldsymbol{\beta}_m^\top \mathbf{x}_{ij})}{\sum_{k \in C_j} \exp(\boldsymbol{\beta}_m^\top \mathbf{x}_{kj})}
この式は、人mが選択肢iを選ぶ確率P_{mij}を表しています。分母は、選択可能な全ての選択肢C_jについての合計です。効用が高い選択肢ほど、選ばれる確率が高くなります。

この式は、例えば次のような状況を表現します:スマートフォンAとBがあり、Aは高機能だが高価格(効用7)、Bは普通の機能で手頃な価格(効用5)の場合、選択確率は以下のようになります:
Aを選ぶ確率 = exp(7)/(exp(7) + exp(5)) ≈ 0.73
Bを選ぶ確率 = exp(5)/(exp(7) + exp(5)) ≈ 0.27
つまり、この例では約73%の確率でAが選ばれると予測されます。

1.3 階層ベイズモデルの推定方法

これらのモデルを実際のデータから推定する際には、以下のような計算を行います:

p(\boldsymbol{\beta}_m, \boldsymbol{\mu}, \Sigma|\mathbf{y}) \propto p(\mathbf{y}|\boldsymbol{\beta}_m)p(\boldsymbol{\beta}_m|\boldsymbol{\mu}, \Sigma)p(\boldsymbol{\mu})p(\Sigma)
この式は、データ\mathbf{y}から個人の特性\boldsymbol{\beta}_mと全体の特性(\boldsymbol{\mu}\Sigma)を推定する方法を表しています。これはベイズの定理を応用したもので、「観測されたデータの尤もらしさ」と「パラメータの事前の知識」を組み合わせて推定を行います。

具体的な推定の手順は、以下の式で表される繰り返し計算によって行われます:

\begin{align*}
\boldsymbol{\beta}_m^{(t+1)} &\sim p(\boldsymbol{\beta}_m|\mathbf{y}, \boldsymbol{\mu}^{(t)}, \Sigma^{(t)}) \\
\boldsymbol{\mu}^{(t+1)} &\sim p(\boldsymbol{\mu}|\{\boldsymbol{\beta}_m^{(t+1)}\}, \Sigma^{(t)}) \\
\Sigma^{(t+1)} &\sim p(\Sigma|\{\boldsymbol{\beta}_m^{(t+1)}\}, \boldsymbol{\mu}^{(t+1)})
\end{align*}

この式は、具体的には以下のような作業を繰り返し行うことを表しています。まず個人ごとの特性を推定し、次にその結果を使って全体の平均を更新し、最後に全体のばらつきを更新します。料理に例えると、各家庭の味付けの好みを知り、それを集めて「この地域の平均的な味付け」を把握し、さらに「どのくらい家庭によって味付けが異なるか」を理解するようなものです。

1.4 モデルの実用的な特徴

階層ベイズモデルの大きな特徴は、データの少ない個人に対しても安定した推定が可能な点です。これは以下の式で表現されます:

\hat{\boldsymbol{\beta}}_m = w_m\boldsymbol{\beta}_m^{\text{ind}} + (1-w_m)\boldsymbol{\mu}
この式は、個人mの最終的な推定値\hat{\boldsymbol{\beta}}_mが、その人固有の推定値\boldsymbol{\beta}_m^{\text{ind}}と全体の平均\boldsymbol{\mu}の加重平均として計算されることを示しています。重みw_mは、その人のデータ量に応じて自動的に調整されます。

重みの計算は以下の式で行われます:

w_m = \frac{n_m\tau^2}{n_m\tau^2 + \sigma^2}
この式は、例えば以下のような状況を表現しています。新規顧客(データが少ない:n_mが小さい)の場合、w_mは小さくなり、推定値は全体平均に近づきます。一方、購入履歴の多い常連客(n_mが大きい)の場合、w_mは大きくなり、その人固有の特徴がより強く反映されます。これは、新規顧客には一般的なレコメンドを行い、常連客には個人の好みに応じたレコメンドを行うという、実務でよく見られる戦略と整合的です。

2. 隠れマルコフモデル(HMM)による動的セグメンテーション

2.1 なぜ動的セグメンテーションが必要か

顧客の行動パターンや嗜好は、時間とともに変化することがあります。例えば、ECサイトの利用者は「ブラウジングのみ」の状態から「積極的な購買」の状態に移行したり、逆に「休眠」状態に入ったりします。このような変化を捉えるために、隠れマルコフモデル(HMM)が用いられます。

2.2 基本的なHMMの仕組み

HMMでは、各時点での顧客の状態(セグメント)は直接観察できませんが、その状態に応じた行動(購買金額、訪問頻度など)が観察できると考えます。この関係は以下の式で表現されます:

p(s_t|s_{t-1}) = A_{s_{t-1},s_t}
この式は、時点t-1での状態s_{t-1}から時点tでの状態s_tへの遷移確率を表します。例えば、「ブラウジング」状態から「購買」状態への移行確率などを表現します。

観察される行動は、以下の式でモデル化されます:

p(y_t|s_t) = f(y_t|\theta_{s_t})
この式は、状態s_tに応じて観察される行動y_tがどのような確率分布に従うかを示しています。例えば、「積極的購買」状態では購入金額が高めの分布に従い、「休眠」状態では購入がほとんどない分布に従う、といった具合です。

2.3 外部要因を考慮したHMM

実際のマーケティングでは、キャンペーンやセールなどの外部要因が顧客の状態遷移に影響を与えることがあります。このような状況を表現するため、以下のような拡張モデルが使われます:

p(s_t|s_{t-1}, \mathbf{x}_t) = \frac{\exp(\alpha_{s_{t-1},s_t} + \boldsymbol{\beta}_{s_{t-1},s_t}^\top \mathbf{x}_t)}{\sum_{k}\exp(\alpha_{s_{t-1},k} + \boldsymbol{\beta}_{s_{t-1},k}^\top \mathbf{x}_t)}
この式は、外部要因\mathbf{x}_t(例:キャンペーン実施の有無、値引き率など)が状態遷移に与える影響を表現しています。\alpha_{s_{t-1},s_t}は基本的な遷移のしやすさ、\boldsymbol{\beta}_{s_{t-1},s_t}は外部要因の効果の強さを表します。

例えば、「ブラウジング」状態の顧客に大幅な値引きキャンペーンを実施すると「購買」状態への遷移確率が上がる、といった状況を表現できます。

2.4 状態継続時間を考慮したモデル(HSMM)

通常のHMMでは、各状態にどれくらいの期間とどまるかについて、暗黙的に「指数分布的に減衰する」と仮定しています。しかし実際の顧客行動では、例えば「新規顧客は最初の1ヶ月は頻繁に購入する傾向がある」といったように、より複雑な滞在時間パターンが観察されます。 このような状況に対応するため、Hidden Semi-Markov Model (HSMM)という拡張モデルが提案されています。HSMMでは、状態の継続時間を以下の式で明示的にモデル化します:

p(d|s) = g(d|\lambda_s)
この式は、状態sにおける継続時間dの確率分布を表します。gは分布の形(例:ポアソン分布)を、\lambda_sはその状態特有のパラメータを表します。例えば「積極購買」状態では平均して2ヶ月程度継続する、といった特徴を表現できます。

HSMMの尤度(データの説明力)は以下の式で計算されます:

\begin{align*}
p(\mathbf{y}_{1:T}) = \sum_{s_{1:K}} \sum_{d_{1:K}} & p(s_1)g(d_1|s_1)\prod_{t=1}^{d_1} f(y_t|\theta_{s_1}) \\
& \times \prod_{k=2}^K p(s_k|s_{k-1})g(d_k|s_k)\prod_{t=\sum_{j=1}^{k-1}d_j+1}^{\sum_{j=1}^k d_j} f(y_t|\theta_{s_k})
\end{align*}
この複雑な式は、「どの状態に」「どれくらいの期間」いて、「その間にどのような行動を取ったか」という一連の流れの確率を計算しています。例えば、「2ヶ月間の積極購買→3ヶ月間のブラウジング→1ヶ月間の休眠」といったパターンの確率を計算できます。

2.5 実務での活用例

ECサイトでの顧客行動分析を例に取ると、ある顧客が「購買」状態に移行する確率は以下のように計算されます:

p(s_t = \text{購買}|s_{t-1} = \text{閲覧}, \mathbf{x}_t) = \frac{\exp(\alpha + \beta_1x_{1t} + \beta_2x_{2t})}{1 + \exp(\alpha + \beta_1x_{1t} + \beta_2x_{2t})}
この式は、商品閲覧回数x_{1t}やカート追加回数x_{2t}といった行動指標に基づいて、閲覧のみの状態から購買状態への遷移確率を計算します。\alphaは基本的な購買傾向、\beta_1\beta_2は各行動の影響度を表します。

このモデルを使うことで、例えば「最近閲覧回数が増えている顧客は購買状態に移行する確率が高い」といった知見を得ることができ、そのような顧客に対して適切なタイミングでプロモーションを実施するといった施策が可能になります。

3. 潜在クラス分析とベイズクラスタリング

3.1 潜在クラス分析の基本的な考え方

潜在クラス分析は、観察された行動パターンから顧客の「隠れた」グループ(クラス)を発見する手法です。例えば、ECサイトでの「閲覧パターン」「購買カテゴリー」「支払い方法」などの組み合わせから、似た特徴を持つ顧客グループを見つけ出します。
この手法は、以下の確率モデルで表現されます:

p(\mathbf{y}_i) = \sum_{k=1}^K \pi_k f(\mathbf{y}_i|\theta_k)
この式は、顧客iの行動データ\mathbf{y}_iが、K個のクラスのいずれかから生成されることを表しています。\pi_kはクラスkの出現確率、f(\mathbf{y}_i|\theta_k)はクラスkに属する顧客の典型的な行動パターンを表します。

例えば、あるECサイトで3つのクラスが発見されたとします:

  1. トレンド追求型(\pi_1 = 0.3):新商品をよく閲覧・購入
  2. 価格重視型(\pi_2 = 0.5):セール時に集中的に購入
  3. こだわり型(\pi_3 = 0.2):特定カテゴリーで高額購入

3.2 ベイズ的アプローチの利点

従来の潜在クラス分析をベイズ的に拡張すると、以下のような階層的な構造を持つモデルとなります:

\begin{align*}
p(\mathbf{y}_i|z_i) &= f(\mathbf{y}_i|\theta_{z_i}) \\
p(z_i|\boldsymbol{\pi}) &= \text{Categorical}(\boldsymbol{\pi}) \\
p(\boldsymbol{\pi}) &= \text{Dirichlet}(\boldsymbol{\alpha}) \\
p(\theta_k) &= p_0(\theta_k)
\end{align*}
この式群は、データの生成過程を表現しています。z_iは顧客iのクラス所属、\boldsymbol{\pi}はクラスの出現確率、\theta_kはクラスkのパラメータを表します。p_0(\theta_k)は事前分布で、分析者の事前知識を組み込むことができます。

このアプローチの大きな利点は、「クラス所属の不確実性」を自然に扱えることです。例えば、ある顧客について「60%の確率で価格重視型、40%の確率でこだわり型」といった柔軟な解釈が可能になります。

3.3 クラス数の決定方法

実務上の重要な課題の一つは、適切なクラス数Kの決定です。ベイズ的なアプローチでは、以下の周辺尤度を計算することでモデル比較が可能です:

p(\mathbf{Y}|K) = \int \int p(\mathbf{Y}|Z,\Theta)p(Z|\boldsymbol{\pi})p(\boldsymbol{\pi})p(\Theta)d\boldsymbol{\pi}d\Theta
この式は、データ全体\mathbf{Y}がクラス数Kのモデルによってどれだけよく説明されるかを表します。Zはすべての顧客のクラス所属、\Thetaはすべてのクラスのパラメータを表します。

実務的には、この値の代わりに以下のような情報量規準を使うことも多いです:

\text{DIC} = -2\log p(\mathbf{Y}|\hat{\Theta}) + 2p_D
ここで\hat{\Theta}はパラメータの推定値、p_Dは実効的なパラメータ数を表します。この値が小さいモデルほど、データをうまく説明していると判断できます。例えば、クラス数を2から8まで変えてDICを計算し、最も小さい値となるクラス数を選択します。

3.4 行動パターンの時系列性を考慮したクラスタリング

顧客の行動パターンには時系列的な特徴が含まれることが多いため、以下のような時系列モデルを組み込むことも可能です:

p(\mathbf{y}_{i,1:T}|z_i) = \prod_{t=1}^T f(\mathbf{y}_{i,t}|\mathbf{y}_{i,1:t-1}, \theta_{z_i})
この式は、顧客iの時点tでの行動\mathbf{y}_{i,t}が、それまでの行動履歴\mathbf{y}_{i,1:t-1}に依存することを表現しています。例えば、「最近3回の購入で健康食品を選んでいる顧客は、次回も同じカテゴリーを選びやすい」といった傾向を捉えることができます。

3.5 実務での活用例

実際のECサイトでの活用例を考えてみましょう。ある顧客が特定のクラスkに属する事後確率は以下のように計算されます:

p(z_i = k|\mathbf{y}_i) = \frac{\pi_k f(\mathbf{y}_i|\theta_k)}{\sum_{j=1}^K \pi_j f(\mathbf{y}_i|\theta_j)}
この式は、顧客iの観察された行動\mathbf{y}_iに基づいて、その顧客が各クラスに属する確率を計算します。例えば、ある顧客について「70%の確率でトレンド追求型、20%の確率で価格重視型、10%の確率でこだわり型」といった具合に、確率的な分類が可能になります。

このような確率的な分類は、マーケティング施策の決定に重要な示唆を与えます。例えば、「トレンド追求型の確率が高い顧客には新商品情報を、価格重視型の確率が高い顧客にはセール情報を」といったターゲティングが可能になります。

4. 実務応用における注意点と実装方法

4.1 データの前処理と特徴量設計

ベイズ的なセグメンテーションを行う際、入力データの質が結果を大きく左右します。これは以下の確率モデルで表現されます:

p(\text{適切なセグメンテーション}|\text{データ}) \propto p(\text{データ}|\text{セグメンテーション})p(\text{セグメンテーション})
この式は、良いセグメンテーション結果を得るためには、適切な事前知識p(\text{セグメンテーション})に加えて、質の高いデータp(\text{データ}|\text{セグメンテーション})が必要であることを示しています。

例えば、購買データを扱う場合、以下のような特徴量を設計することが重要です:

\mathbf{x}_i = \begin{bmatrix} 
\text{購買頻度} \\
\text{平均購買金額} \\
\text{カテゴリー分散度} \\
\text{最終購買からの経過日数}
\end{bmatrix} = \begin{bmatrix}
\frac{N_i}{T_i} \\
\frac{\sum_{j=1}^{N_i} v_{ij}}{N_i} \\
-\sum_{c=1}^C p_{ic}\log p_{ic} \\
t_{\text{now}} - t_{\text{last},i}
\end{bmatrix}
この式は、顧客iの特徴ベクトル\mathbf{x}_iの構成要素を表しています。N_iは購買回数、T_iは観測期間、v_{ij}j回目の購買金額、p_{ic}はカテゴリーcの購買比率、t_{\text{last},i}は最終購買日を表します。

4.2 モデルの評価と検証

セグメンテーションモデルの評価には、以下のような予測性能の指標を用います:

\text{予測精度} = \frac{1}{N}\sum_{i=1}^N \sum_{k=1}^K p(z_i = k|\mathbf{x}_i)p(\mathbf{y}_i^{\text{future}}|\theta_k)
この式は、各顧客iについて、推定されたセグメント所属確率p(z_i = k|\mathbf{x}_i)と、そのセグメントにおける将来の行動予測p(\mathbf{y}_i^{\text{future}}|\theta_k)の積の平均を計算します。これにより、セグメンテーションが将来の顧客行動をどの程度正確に予測できるかを評価できます。

4.3 実装上の工夫とパフォーマンス最適化

大規模なデータセットを扱う場合、計算効率が重要な課題となります。特に、以下のような近似計算を活用することで、処理速度を改善できます:

p(z_i|\mathbf{y}_i) \approx q_{\phi}(z_i|\mathbf{y}_i) = \text{Categorical}(\boldsymbol{\phi}_i)
この式は、変分推論による近似を表しています。厳密な事後分布p(z_i|\mathbf{y}_i)の代わりに、計算が容易な近似分布q_{\phi}(z_i|\mathbf{y}_i)を使用します。\boldsymbol{\phi}_iは個別に最適化されるパラメータです。

この近似を用いた目的関数は以下のようになります:

\mathcal{L} = \sum_{i=1}^N \mathbb{E}_{q_{\phi}(z_i)}[\log p(\mathbf{y}_i|z_i) - \text{KL}(q_{\phi}(z_i)||p(z_i))]
この式は、データの尤度と近似の質のバランスを取ります。第一項\mathbb{E}_{q_{\phi}(z_i)}[\log p(\mathbf{y}_i|z_i)]はデータへの当てはまりの良さ、第二項\text{KL}(q_{\phi}(z_i)||p(z_i))は近似の精度を表します。

4.4 実務での活用戦略

セグメンテーション結果を実務で活用する際、各セグメントの特徴を定量的に把握することが重要です。セグメント間の差異は以下の式で評価できます:

\text{Effect Size}_{jk} = \frac{|\mu_j - \mu_k|}{\sqrt{(\sigma_j^2 + \sigma_k^2)/2}}
この式は、セグメントjkの平均値\muの差を、両者の標準偏差\sigmaの平均で割ることで、差異の大きさを標準化して評価します。例えば、平均購買金額や購買頻度について、セグメント間でどの程度の差があるかを定量的に把握できます。

実際のマーケティング施策は、この差異の大きさに基づいて優先順位をつけることができます:

\text{ROI}_{ij} = \frac{p(z_i = j|\mathbf{y}_i) \cdot \text{Expected Return}_j}{\text{Marketing Cost}_j}
この式は、顧客iに対してセグメントj向けの施策を実施した場合の期待ROIを計算します。p(z_i = j|\mathbf{y}_i)はその顧客がセグメントjに属する確率、\text{Expected Return}_jはセグメントjでの期待収益、\text{Marketing Cost}_jは施策コストを表します。

これにより、例えば「価格重視型セグメントには費用対効果の高いクーポン施策を、こだわり型セグメントには利益率の高い商品のレコメンドを」といった、セグメントごとに最適化された施策を展開することができます。

最後に

今回は網羅的に扱ったので、実際に実務で活用するときに、どのようにやるのかというのをそこまで示せてませんが、このような方法もあるんですよ?という新たな知見の獲得にはつながるのではないかと思い、本記事を書きました。twitterでツイートしましたが、米国ではマーケティングにおいて85%の分析者がベイズ的なアプローチを分析方法として採用しているというのを、どこかで見たことがあります。いつもの流れにのっとれば、米国で流行ってその流れが日本にやってくるのような風潮があると思うので、ベイズ的なアプローチが日本でも主流になってくるのではないかと思います。その際の手法の選択肢の幅が広がればと思います。最後までお読みいただきありがとうございました。

ベイズ決定木系モデルの理論(特にBART)

はじめに

データ解析において決定木は、特徴量空間を領域に区切り各領域で予測を行うシンプルで解釈しやすいモデルとして広く使われています。しかし、従来の決定木アルゴリズムCARTなど)は貪欲法による学習のため局所解に陥りやすく、得られるモデルは不確実性の評価が困難であるという課題があります。また、決定木単体では過学習しやすい傾向も知られています。こうした問題に対し、ベイズ的手法を導入することでモデル構造に対する事前知識を組み込み、統計的な不確実性の定量化やモデル平均化による汎化性能の向上を図ることができます。特に近年では、ベイズ的なアンサンブル学習であるBART(Bayesian Additive Regression Trees、ベイズ加法回帰木)が高い予測精度とロバスト性を示し、因果推論など幅広い応用で注目を集めています。本記事では、ベイズ決定木の基礎理論から代表的な手法、推論アルゴリズム、数学的導出、最新の研究動向、さらに理解を深めるための実装例までを網羅的に解説します。読者は多少の数学的素養を仮定しますが、直感的な説明を交えますので、数式だけに頼らず文章から概念を掴んでいただける構成を目指しています。

基礎理論(ベイズ統計と決定木の関係)

まず、決定木モデルをベイズ的に扱うとはどういうことかを整理します。決定木モデルでは、データ空間を複数の領域(リージョン)に適応的に分割し、各領域でシンプルな予測(例えば一定値による回帰やクラス確率による分類)を行います。このモデル構造自体(すなわち木構造や各ノードの分割ルール、および終端ノード(リーフ)の出力パラメータ)に対して確率モデルを定義するのがベイズ的アプローチです。具体的には、決定木の構造を表すパラメータを T、終端ノードのパラメータを \Theta とすると、事前分布 P(T,\Theta) を与え、観測データ D に対する尤度 P(D\mid T,\Theta) と組み合わせて事後分布 P(T,\Theta \mid D) を考えます。

P(T,\Theta\mid D)\propto P(D\mid T,\Theta)P(T,\Theta)

ここで、P(T,\Theta) はモデルに対する我々の事前の信念を符号化し、複雑な木構造にペナルティを課すことで過度に複雑なモデルを抑制する正則化効果を持ちます。一方、P(D\mid T,\Theta) は与えられた木モデルがデータをどれだけよく説明するかを表すもので、従来の決定木の「損失関数」に対応します。ベイズ的枠組みでは、この事後分布そのものが分析の対象となり、最尤の木構造だけでなく不確実性を含めたモデル平均効果を考慮できる点が重要です。
例えば予測においては、事後分布による事後予測分布
P(y_{\text{new}}\mid x_{\text{new}},D)=\int P(y_{\text{new}}\mid x_{\text{new}},T,\Theta)P(T,\Theta\mid D)dT\,d\Theta

を用いることで、未知入力 x_{\text{new}} に対する予測 y_{\text{new}} の分布が得られます。これは事後分布を用いたベイズモデル平均化であり、決定木モデルの不安定さを緩和し予測精度を向上させる効果があります。さらに、ベイズ統計ではパラメータを確率的に扱いますが、決定木の場合の「パラメータ」には連続値の終端ノード出力だけでなく、木の形そのものが含まれるため、事前分布の工夫や計算手法が非常に重要になります。

すなわち、決定木の持つ柔軟性(任意の関数形状への適合能力)をベイズ推論で包み込むことで、データに対する過剰適合を防ぎつつ高い表現力を維持することが可能になります。事前分布 P(T,\Theta) の具体例としては、まず木構造 T と終端ノードパラメータ \Theta に分けて独立に与えるのが一般的です(事前独立性)。また、木構造 T に対する典型的な事前分布では、木が深くなるほど発生確率が低くなるという仕組みを組み込みます。例えば各ノードが分割(内部ノード)となる確率を深さ d の関数 \alpha (1+d)^{-\beta} とする方法が挙げられます。

代表的な手法(ベイズ回帰木、ベイズ適応的パーティショニング、BARTなど)

ベイズ的な決定木アプローチにはいくつかの代表的手法があり、それぞれ特徴的なモデル化の工夫があります。本節では主な手法としてベイズ回帰木(単一のベイズ決定木モデル)、ベイズ適応的パーティショニング、そしてBART(ベイズ加法回帰木)を取り上げ、それぞれの概要と違いを説明します。

ベイズ回帰木(Bayesian CART

ベイズ回帰木とは、1本の決定木に対してベイズ推論を行う手法で、いわば「ベイズCART」とも言えるものです。Chipman らによる1998年の古典的研究では、CART モデル全体の空間に事前分布を定義し、確率的サーチによって高い事後確率を持つ木構造を探索するアプローチが提案されました。この手法では、前節で述べたように「小さな木を事前に優先する」確率モデルを用い、データによる尤度と組み合わせて木構造の事後分布を評価します。得られた事後分布は単一の最良木だけでなく不確実性も表現しており、例えば新たなデータ点に対する予測では、事後分布に基づくモデル平均予測を行うことで、複数の木構造にわたる予測のばらつきを考慮できます。また、ベイズ回帰木では木構造過学習抑制が事前分布によって為される点も重要です。通常のCARTではプリーニングや木の深さ制限などで過学習を防ぎますが、ベイズ回帰木では、例えば \alpha\beta のハイパーパラメータによる分割確率減衰が、深い木に対する事前確率を指数的に小さくし、同時に各終端ノードのパラメータに対して事前分布による縮小(シュリンク)を掛けることで、必要以上に細かく分割することを抑え、木全体の予測が極端な値を取らないようにします。

ベイズ適応的パーティショニング(Bayesian Adaptive Partitioning)

ベイズ適応的パーティショニングは、決定木に限らずデータ空間の領域分割によって予測モデルを構築するという発想をベイズ的に推し進めた手法です。Holmes や Denison らによる1990年代末の研究では、入力空間を適応的に長方形領域に分割し、各領域で定数や線形モデルを当てはめるパーティションモデルにベイズ法を適用する枠組みが検討されました。これは決定木による分割と類似していますが、必ずしも木構造入れ子の二分割)に限定せず、柔軟な分割を探索できる点が特徴です。そのため、「適応的パーティショニング」と呼ばれ、データ空間全体に対して一様な事前を置くのではなく、領域の数に対してポアソン分布やその他の事前分布を設定することで、モデルの複雑さを自動制御するアプローチも考案されています。

BART(Bayesian Additive Regression Trees)

BART は、未知の回帰関数 f(x)f(x)\approx\sum_{j=1}^{m}g_j(x) と近似し、複数の弱い決定木のアンサンブルによって予測を行う手法です。BART は単一の木ではなく、複数の木の和を用いることで、非線形な関数関係を柔軟に近似できるとともに、各木の寄与を事前分布で正則化することで過学習を防ぎます。具体的には、観測 y

y=\sum_{j=1}^{m}g_j(x)+\epsilon

ϵ∼N(0,σ^2)BART の学習では、各木の構造と終端ノードのパラメータが MCMC により更新され、未知入力 x_{\text{new}} に対する予測は、各木の予測を合算した事後平均として求められます。これにより、BART は単一の木に比べ高い予測精度と不確実性の定量化が可能となります。

推論アルゴリズムMCMC、スパイク&スラブ、ディリクレ過程との関係)

ベイズ決定木モデルの学習(事後分布の計算)は解析的に求めることが困難なため、一般には MCMC(Markov chain Monte Carlo)アルゴリズムによる近似推論が用いられます。単一の決定木モデルの場合、可逆ジャンプ MCMC(RJMCMC)を用いて、以下のような木操作の提案をランダムに行い、それをメトロポリスヘイスティングス法で受理または拒否します。

たとえば、「成長 (grow)」ではランダムに選んだ終端ノードを内部ノードに変え、そこに二分割のルールと 2 つの新たな終端ノードを追加します。「剪定 (prune)」ではランダムに選んだ内部ノードを終端ノードに戻し、その子孫ノードを削除します。「変更 (change)」では既存の内部ノードの分割変数または閾値の値を変更し、「スワップ (swap)」では分割の階層を入れ替える操作を行います。

これらの操作により、現在の木構造 T から新たな構造 T' への遷移が行われ、提案前後のモデルの事後確率比
\alpha=\min\Bigg(1,\frac{P(D\mid T',\Theta')P(T',\Theta')q(T'\to T)}{P(D\mid T,\Theta)P(T,\Theta)q(T\to T')}\Bigg)
が受理されます。(ここで q(\cdot\to\cdot) は提案確率であり、必要に応じてヤコビアン補正も含まれます。)
BART の場合は、複数の決定木からなるモデル全体を更新するため、各木を交互に更新するバックフィッティング方式、すなわちギブスサンプリングが採用されます。各木 g_j(x) について、全体の予測から他の木の寄与を除いた残差 R_j=y-\sum_{k\neq j}g_k(x) を用い、その残差にフィットする単一木モデルとして更新を行います。共役事前を用いることで、各終端ノードのパラメータ \mu は解析的に更新可能となり、ギブスサンプリングが実現されます。
さらに、高次元データにおいて不要な変数の影響を排除するため、各特徴量の分割利用に対してスパイク&スラブ事前を導入する手法が提案されています。ここでは、各特徴量 j が「有用か否か」を示す指標変数 \gamma_j を導入し、\gamma_j=1 ならその変数は分割に使われやすく、\gamma_j=0 なら使われないとし、各内部ノードの分割変数選択確率に重み \theta_j を割り当て、\theta=(\theta_1,\dots,\theta_p) に対してスパイク&スラブ型の事前分布を与えます。
この結果、事後分布において不要な変数の \theta_j は極端に小さくなり、重要な変数のみが分割に用いられるようになります。また、ディリクレ過程の考えを応用して、分割変数選択の事前分布を柔軟に設定する試みも行われています。ディリクレ過程は無限次元の事前分布として知られ、決定木の複雑なモデル空間を扱う際に、そのエッセンスを取り入れることで、事前としての柔軟性が向上します。

数学的導出(各手法の数学的導出を丁寧に)

本節では、ベイズ決定木のいくつかの核心的な数理について、できるだけ行間を埋める形で導出します。主に回帰木を題材とし、共役事前の下での事後計算や周辺尤度の導出などを示します。読者の理解を助けるため、導出の後に簡潔なコード例も交えて確認していきます。

単純な例での事後分布計算

はじめに、ごく簡単な決定木モデルで事後分布の計算を具体的に行ってみましょう。例えば、特徴量が1次元 x のみで、データを2つの領域に分割するか否かを考えるスタンプ(切り株)モデルを仮定します。これは深さ1の決定木(根が終端か、根が2つの子を持つか)に相当します。根ノードで閾値 c を用いて x を分割し、左リージョンと右リージョンでそれぞれ定数予測 \mu_L, \mu_R を行うモデルか、あるいはどこも分割せず全データをひとつのリージョンで定数予測 \mu_{\text{all}} するモデルのどちらかです。事前分布として、分割するか否かに確率 \alpha(深さ0なので確率 \alpha (1+0)^{-\beta}=\alpha で分割)を与え、閾値は一様分布、また \mu には \mu\sim N(\mu_0,\tau^2) の事前、観測ノイズは既知 \sigma^2 とします。データ集合を D={(x_i,y_i)}_{i=1}^n とします。

このモデルにおける事後確率は、2つの場合(分割なし vs 分割あり)それぞれについて以下で計算できます。まず、分割なしモデル(M_0:全体を1リージョン)では、尤度は各 y_i\mathcal{N}(\mu\_{\text{all}},\sigma^2) に従うとしたときの積になります。ここで \mu_{\text{all}} の事前は \mathcal{N}(\mu_0,\tau^2) です。よって \mu\_{\text{all}} に関する事後は共役な正規分布となり、周辺尤度(\mu\_{\text{all}}積分消去した尤度)は次のように計算できます。データの平均を \bar{y}=\frac{1}{n}\sum\_{i=1}^n y_i、データ分散和を S_y^2=\sum_{i=1}^n (y_i-\bar{y})^2 とすると、

P(D\mid M_0)=\int_{-\infty}^{\infty}\Bigg(\prod_{i=1}^n \frac{1}{\sqrt{2\pi\sigma^2}} \exp\Big(-\frac{(y_i-\mu)^2}{2\sigma^2}\Big)\Bigg)\frac{1}{\sqrt{2\pi\tau^2}} \exp\Big(-\frac{(\mu-\mu_0)^2}{2\tau^2}\Big) d\mu
この積分は標準的な正規-正規モデルの周辺尤度計算であり、結果は閉じた形になります。具体的には、事後平均 \mu_{\text{all}}^{\ast} と事後分散 V_{\text{all}}^{\ast} = \Big(\frac{1}{\tau^2}+\frac{n}{\sigma^2}\Big)^{-1} を求めた上で、

P(D\mid M_0)=\frac{1}{\sqrt{2\pi}^{\,n}}\frac{1}{\sigma^n}\sqrt{\frac{V_{\text{all}}^{*}}{\tau^2}} \exp\Bigg(-\frac{(\bar{y}-\mu_0)^2}{2\Big(\frac{\sigma^2}{n}+\tau^2\Big)} - \frac{S_y^2}{2\sigma^2}\Bigg)

と表されます。

次に、分割ありモデル(M_1閾値 c で左右2リージョン)では、左リージョン L={i: x_i \le c} と右リージョン R={i: x_i>c} にデータが分かれます(それぞれのデータ数を n_L, n_R とする)。各リージョンにそれぞれパラメータ \mu_L, \mu_R があり、y_i \sim N(\mu_L,\sigma^2)i\in L)、y_j \sim N(\mu_R,\sigma^2)j\in R)となります。事前は \mu_L, \mu_R \sim N(\mu_0,\tau^2) 独立です。この場合の周辺尤度は、各リージョンごとに先ほどと同様の積分を行い、それらを乗じることで得られます。すなわち、
P(D\mid M_1,c)=P(D_L\mid M_1)P(D_R\mid M_1)
となります。ここで、左領域の周辺尤度は、左領域の平均 \bar{y}_L、分散和 S_L^2、サンプル数 n_L、事後分散 V_L^{\ast} を用いて、

P(D_L\mid M_1)=\frac{1}{\sqrt{2\pi}^{\,n_L}}\frac{1}{\sigma^{n_L}}\sqrt{\frac{V_L^{*}}{\tau^2}} \exp\Bigg(-\frac{(\bar{y}\_L-\mu_0)^2}{2\Big(\frac{\sigma^2}{n_L}+\tau^2\Big)} - \frac{S_L^2}{2\sigma^2}\Bigg)

、右領域についても同様に求められ、全体の周辺尤度は上記の積となります。さらに、閾値 c に対して一様な事前を置くと、分割ありモデル全体の事後確率は \alpha\frac{1}{N_c}P(D\mid M_1,c) と表現され、分割なしモデルは (1-\alpha)P(D\mid M_0) となります。これらを正規化することで、どのモデルがデータをよりよく説明しているかが決定されます。

また、新たな入力 x_{\text{new}} に対する予測は、学習した事後分布 P(T,\Theta\mid D) を用いて、

P(y\_{\text{new}}\mid x\_{\text{new}},D)=\int P(y\_{\text{new}}\mid x\_{\text{new}},T,\Theta)P(T,\Theta\mid D)dT\,d\Theta

と表され、事後予測分布の期待値は

E[y_{\text{new}}\mid x_{\text{new}},D] E_{(T,\Theta)\sim P(\cdot\mid D)}\Big[E[y_{\text{new}}\mid x_{\text{new}},T,\Theta\Big]]
であり、予測分散は

\mathrm{Var}[y_{\text{new}}\mid x_{\text{new}},D]=E\_{(T,\Theta)\mid D}\Big[\mathrm{Var}(y\_{\text{new}}\mid x\_{\text{new}},T,\Theta)\Big]+\mathrm{Var}_{(T,\Theta)\mid D}\Big(E[y\_{\text{new}}\mid x_{\text{new}},T,\Theta]\Big)

と、モデル内部の誤差とモデル間の不確実性が反映されます。
BART では、未知の回帰関数 f(x)m 本の決定木 g_1(x),\dots, g_m(x) の和で近似し、

f(x)\approx\sum\_{j=1}^{m}g_j(x)

と表現します。観測 y は、
y=\sum_{j=1}^{m}g_j(x)+\epsilon,\qquad \epsilon\sim N(0,\sigma^2)
と仮定され、各木は事前分布によって正則化され、MCMC によるギブスサンプリングを通じてその構造と終端ノードのパラメータが更新され、全体の予測は事後平均化によって行われます。

最新の研究動向

ベイズ決定木に関する研究は近年も活発で、手法の改良や新たな応用が次々と報告されています。まず、従来の不連続な決定木を平滑化するため、各ノードの分割関数をヒンジ型からシグモイド型に変更する「ソフト決定木」が提案され、これにより関数近似が連続的に行われ、勾配法との連携も容易になっています。

さらに、高次元データへの適応として、スパイク&スラブ事前やディリクレ過程を利用して不要な変数を自動選別する拡張モデルが開発されています。これにより、実際に重要な変数のみが分割に用いられるようになり、モデルの複雑さが効果的に制御されます。
また、モデルの解釈性向上のため、各変数の分割頻度の事後分布や、ある変数を固定したときの部分依存プロットにベイズ信用区間を付与する方法など、不確実性付きのモデル解釈を与える試みが進められています。
さらに、大規模データへのスケーラビリティを向上させるため、逐次モンテカルロ法や変分推論、GPU 並列化を活用した近似アルゴリズムが検討され、実用上扱えるデータ規模が拡大しています。
最後に、新たな応用分野として、因果推論におけるバイアス調整や時間系列データへの適用が進められており、BART の柔軟性が幅広い問題解決に寄与する可能性が示唆されています。

実装(数式理解を補助するためのコード例)

ベイズ決定木や BART は、R 言語の dbarts や bartMachine、また Python の PyMC や bartpy などのライブラリで実装可能です。例えば、PyMC を用いた BART モデルの記述例は以下の通りです。
import pymc as pm
with pm.Model() as model:
    # データ x, y が与えられているとする
    μ = pm.BART("μ", X=x, Y=y, m=50)  # 50 本の木の BART 回帰
    σ = pm.HalfNormal("σ", 1.0)
    y_obs = pm.Normal("y_obs", mu=μ, sigma=σ, observed=y)
    trace = pm.sample(1000, chains=4)
また、理論理解のために自作の MCMC をスクラッチ実装する例も示します。以下は、1 次元データに対して成長や剪定の提案をランダムに行い、1000 ステップのサンプルを取る簡単な実装例です(簡略化のため、分割位置はデータ点の中間のみ考慮しています)。
import numpy as np
import math
import random
import copy

# 簡単なデータ例
X = np.array([1, 2, 3, 8, 9, 10])
y = np.array([5.1, 4.9, 5.0, 8.0, 7.9, 8.1])
alpha, beta = 0.9, 2.0
mu0, tau2 = 0.0, 10.0
sigma2 = 0.5**2

class Node:
    def __init__(self, idx):
        self.idx = idx
        self.split_var = None
        self.split_val = None
        self.left = None
        self.right = None
        self.is_leaf = True
        self.mu = 0.0

root = Node(np.arange(len(X)))

def depth(node, current=0):
    return current

def split_candidates_for(node):
    idx = node.idx
    if len(idx) <= 1:
        return []
    x_vals = sorted(X[idx])
    candidates = []
    for i in range(len(x_vals)-1):
        c = 0.5 * (x_vals[i] + x_vals[i+1])
        if np.any(X[idx] <= c) and np.any(X[idx] > c):
            candidates.append(c)
    return candidates

def log_marginal_likelihood(node):
    idx = node.idx
    n_node = len(idx)
    if n_node == 0:
        return 0.0
    y_node = y[idx]
    ybar = np.mean(y_node)
    S_node = np.sum((y_node - ybar)**2)
    return -0.5 * ((ybar - mu0)**2 / (sigma2/n_node + tau2) + S_node/sigma2)

def log_prior(node):
    d = depth(node)
    if node.is_leaf:
        return math.log(1 - alpha*(1+d)**(-beta))
    else:
        return math.log(alpha*(1+d)**(-beta)) - math.log(len(split_candidates_for(node)))

current_root = root
samples = []
for t in range(1000):
    leaves = [current_root] if current_root.is_leaf else [current_root.left, current_root.right]
    if random.random() < 0.5:
        node = random.choice(leaves)
        candidates = split_candidates_for(node)
        if not candidates:
            continue
        c = random.choice(candidates)
        new_left_idx = node.idx[X[node.idx] <= c]
        new_right_idx = node.idx[X[node.idx] > c]
        if len(new_left_idx)==0 or len(new_right_idx)==0:
            continue
        new_node = Node(node.idx)
        new_node.is_leaf = False
        new_node.split_var = 0
        new_node.split_val = c
        new_node.left = Node(new_left_idx)
        new_node.right = Node(new_right_idx)
        new_node.left.mu = np.mean(y[new_left_idx])
        new_node.right.mu = np.mean(y[new_right_idx])
        logp_current = log_prior(node) + log_marginal_likelihood(node)
        logp_new = (log_prior(new_node) + log_prior(new_node.left) + log_prior(new_node.right) +
                    log_marginal_likelihood(new_node.left) + log_marginal_likelihood(new_node.right))
        if math.log(random.random()) < (logp_new - logp_current):
            current_root = new_node
    else:
        if not current_root.is_leaf:
            left = current_root.left
            right = current_root.right
            logp_current = (log_prior(current_root) + log_prior(left) + log_prior(right) +
                            log_marginal_likelihood(left) + log_marginal_likelihood(right))
            pruned = Node(current_root.idx)
            logp_new = log_prior(pruned) + log_marginal_likelihood(pruned)
            if math.log(random.random()) < (logp_new - logp_current):
                current_root = pruned
    samples.append(copy.deepcopy(current_root))
split_points = [s.split_val for s in samples if not s.is_leaf]
print("サンプルされた分割位置の平均:", np.mean(split_points))
新規入力 x_{\text{new}} に対する予測分布の近似は、各 MCMC サンプルの木構造においてルートから順に分割条件を辿ることで求めます。以下のコード例では、入力 7.5 に対して各サンプルの終端ノードの予測値を集め、その平均と標準偏差から予測分布を評価しています。
# 新規入力に対する予測分布の近似
x_new = 7.5
preds = []
for tree in samples[500:]:
    node = tree
    while not node.is_leaf:
        if x_new <= node.split_val:
            node = node.left
        else:
            node = node.right
    preds.append(node.mu)
print("予測平均:", np.mean(preds), "予測標準偏差:", np.std(preds))

BART の理論的性質の概略証明

BART の理論的性質に関する研究では、BART の変種(例えばスパース正則化やソフトな分割関数を導入したモデル)について、事後分布が真の回帰関数に対してミニマックス最適な収束レートで集中することが示されています。直感的には、BART は高次元環境においても不要な変数の影響を自動的に除去し、関数の滑らかさに適応して学習する性質を持つため、真の関数に効率よく収束することが保証されます。

証明の鍵は、決定木による関数近似が局所的な区分定数関数の集合として任意の連続関数を一様近似可能であるという事実に基づいており、BART の事前分布が各木の寄与を十分に小さく保つことで、全体として滑らかな関数近似を実現する点にあります。さらに、スパイク&スラブ事前やソフトスプリット(シグモイド関数による分割表現)を導入することで、事前がほとんどゼロの勾配を持つ部分関数や、特定の変数に依存しない関数に質量を集中させることができ、真の関数が滑らかかつスパースであればその周辺に事後が集中しやすくなることが示されています。
これらの結果は、十分な木の本数 m と適切な事前ハイパーパラメータの設定の下で、BART が統計的に有効な推定器であることを保証するものです。証明の詳細は高度なベイズパラメトリック理論に踏み込む必要がありますが、BART のモデル空間が任意の連続関数を一様に近似可能であり、事後分布が真の関数近傍に集中する(後方集中性)ことを示すものであり、これにより BART の予測が高い信頼性を持つことが理論的に裏付けられています。

最後に

今回は、ベイズ的な決定木手法について、基礎理論から代表的な手法(ベイズ回帰木、ベイズ適応的パーティショニング、BART)、推論アルゴリズム、数学的導出、BART の理論的性質の概略証明、最新の研究動向、さらに理解を深めるための実装例までを網羅的に解説しました。決定木モデルに対して事前分布を与え、MCMC などの推論アルゴリズムを用いて事後分布を求めることで、従来の決定木の不安定性や過学習を抑制し、事後平均化による予測および不確実性の評価が可能となります。BART のようなアンサンブル手法は、その柔軟性と高い予測精度により、現代の機械学習モデルとして非常に有用です。今後も理論のさらなる発展と計算手法の高速化により、ベイズ決定木はより広範な分野で活躍することが期待されます。