ガウス過程回帰(GPR)とは?仕組みを初心者向けにわかりやすく解説【ベイズ最適化との関係も紹介】

はじめに

機械学習の回帰モデルといえば、以下が有名です。

  • 線形回帰
  • ランダムフォレスト
  • XGBoost

一方で、ベイズ最適化を実装する場合、「ガウス過程回帰(Gaussian Process Regression:GPR)」がよく利用されます。

なぜ GPR が選ばれるのか

理由は単純ですが重要です:

予測値だけでなく「予測の不確実性(どれくらい自信があるか)」まで推定できるから

これは、他の機械学習モデル(XGBoost など)では実現しにくい大きな特徴です。

記事の構成

この記事では以下を解説します。

  • ガウス過程回帰とは何か(直感的理解)
  • 数学的背景(カーネル関数、共分散行列)
  • 通常の回帰との違い
  • ベイズ最適化での役割
  • 製造業・CAE での活用例
  • Python による実装

ベイズ最適化について詳しく知りたい方は、関連記事「ベイズ最適化とは?少ない実験回数で最適条件を見つける手法を解説」もあわせてご覧ください。


目次

ガウス過程回帰(GPR)とは

基本的な定義

ガウス過程回帰(GPR)は、データから未知の値を確率分布として予測する回帰モデルです。

従来の回帰モデル(線形回帰、XGBoost など)は、「与えられた入力に対して、出力値は 1 つ」という点予測を行います。

一方、ガウス過程回帰は、「入力に対して、出力値は確率分布として存在する」という考え方に基づいています。

具体例で理解する

例えば、射出成形における金型温度と部品強度の関係を調べるケースを想定します。

金型温度(℃)強度(MPa)
100150
150220
200260

通常の回帰モデル:

170℃ → 強度は「確実に235 MPa」

ガウス過程回帰:

170℃ → 強度は「平均235 MPa 、ばらつき±8 MPa の確率分布」

つまり、「170℃での強度は 227~243 MPa のどれかである可能性が高い」という、不確実性を含めた予測ができます。


ガウス過程回帰の最大の特徴

予測値と予測の不確実性(信頼区間)

ガウス過程回帰は以下の 2 つを同時に出力します。

  1. 予測値(平均): μ(中心的な予測)
  2. 予測のばらつき(標準偏差): σ(不確実性の大きさ)


ガウス過程回帰の仕組み

① 訓練データからのパターン学習

ガウス過程は、訓練データから 「条件と性能の関係パターン」 を学習します。

単なる平均を取るのではなく、データ間の「類似性」をカーネル関数で数値化します。

② カーネル関数の役割

カーネル関数は、2 つのデータポイント間の相似度を測定します。

例:RBF(放射基底関数)カーネル

K(x₁, x₂) = exp(-γ |x₁ - x₂|²)
  • x₁ と x₂ が近いほど → K の値は大きい(強い相関)
  • x₁ と x₂ が遠いほど → K の値は小さい(弱い相関)

よく使われるカーネル関数

カーネル名適用場面
RBF(放射基底)K = exp(-γ|x₁-x₂|²)一般的、滑らかな関数向け
Matérnν に応じて滑らかさを調整現象が粗い場合
線形K = x₁·x₂線形関係が強い場合
多項式K = (x₁·x₂ + c)^d非線形だが複雑でない場合


③ 共分散行列の計算

ガウス過程は、訓練データ間の共分散(相互関係)を行列で表現します。

Σ = [K(x₁,x₁)  K(x₁,x₂)  K(x₁,x₃)]
    [K(x₂,x₁)  K(x₂,x₂)  K(x₂,x₃)]
    [K(x₃,x₁)  K(x₃,x₂)  K(x₃,x₃)]

この共分散行列から、未知点での予測値と不確実性が計算されます。


ガウス過程回帰とベイズ最適化の役割分担

ベイズ最適化内でのプロセス

ベイズ最適化では、ガウス過程回帰は以下の役割を担います。

重要なポイント

ガウス過程回帰がなければ、ベイズ最適化は次の判断ができません。

  • 「どこが有望か」→ 予測値で判定
  • 「どこがまだ試していないか」→ 不確実性で判定

この 2 つの情報を組み合わせることで、「効率的な探索」が実現します。


通常の回帰モデルとの詳細比較

機能比較表

項目線形回帰XGBoostランダムフォレストガウス過程回帰
予測値
予測の不確実性(信頼区間)×××
少ないデータでの性能
大量データ(>10000件)での効率性
計算速度
設計変数が多い場合(>20個)
ベイズ最適化への適応性×

各モデルが得意な場面

ガウス過程回帰が最適な場面:

  • データが 10~1000 件程度(少なめ)
  • 各データを取得するコストが高い(実験、CAE 解析、実機試験)
  • 予測の不確実性が重要(ベイズ最適化など)
  • 設計変数が 5~15 個程度

XGBoost が最適な場面:

  • データが数万件以上
  • 予測精度を最大化したい
  • 計算速度が重要
  • 非線形関係が複雑

線形回帰が適している場面:

  • 関係が単純にほぼ線形
  • 解釈可能性が重要
  • 実装の簡潔さを優先

ガウス過程回帰が得意な理由:詳細メカニズム

① 少ないデータでも信頼できる予測

ガウス過程は、先験分布(事前分布)を利用します。

つまり、「少ないデータでも、関数の滑らかさなどの一般的な仮定に基づいて推定」できます。

対比として、XGBoost などの従来法は、十分なデータがないと過学習に陥りやすい傾向があります。

② 不確実性の定量化

ガウス過程は、訓練データから遠い領域で自動的に不確実性を増大させます。

訓練データが豊富な領域  →  σ が小さい(自信あり)
訓練データが少ない領域  →  σ が大きい(自信なし)

③ 数学的厳密性

ガウス過程は、ベイズ統計に基づく厳密な確率モデルです。

そのため、「この不確実性は何を意味するか」を数学的に解釈できます。


ベイズ最適化との関係:詳細

なぜベイズ最適化では GPR が使われるのか

ベイズ最適化の獲得関数(次に試すべき条件を決定する関数)は、以下の情報を必要とします。

  1. μ(予測値の平均):有望な領域を特定
  2. σ(予測のばらつき):未探索の領域を特定

獲得関数の具体例

期待改善(Expected Improvement, EI)

EI(x) = E[max(f(x) - f_best, 0)] × P(f(x) > f_best)
  • f(x):点 x での予測値
  • f_best:現在の最高性能
  • P(f(x) > f_best):改善する確率

これを計算するには、μ と σ が必須です。

ガウシアン過程下位信頼度境界(Lower Confidence Bound, LCB)

LCB(x) = μ(x) - κ × σ(x)

κ は「どれだけ悲観的に見るか」を制御するパラメータです。


製造業での活用例

事例 1:樹脂成形の最適化

背景: 射出成形部品の強度にばらつきがあり、最適な金型温度と射出圧力を見つけたい。

探索対象(入力)

  • 金型温度:80~180℃
  • 射出圧力:0.5~3.0 MPa

評価指標(出力)

  • 降伏強度(MPa)
  • ターゲット:250 MPa 以上

実施方法: ガウス過程回帰をサロゲートモデルとしたベイズ最適化

プロセス:

  1. 初期実験 10 回で訓練データ取得
  2. ガウス過程で全条件領域を予測
  3. 獲得関数で有望な条件を選定(5 回)
  4. 追加実験を実施し、結果を学習
  5. ステップ 2~4 を 3~4 サイクル繰り返す

結果:

  • 従来の直交表実験(L18:18 回)比で 25 回の実験で最適条件を発見
  • 最適条件での強度:265 MPa(従来の経験則:240 MPa)
  • 試行効率(性能改善 / 試行数):有意に向上

事例 2:CAE 解析のパラメータ最適化

背景: 金属板の深絞り成形 CAE 解析において、メッシュサイズと時間刻み幅を最適化したい。

探索対象(入力)

  • メッシュサイズ:1~5 mm
  • 時間刻み幅:0.001~0.01 秒

評価指標(出力)

  • シミュレーション精度(実験値との差)
  • 計算時間

ガウス過程の利点:

  • 各 CAE 解析に 2 時間かかるため、試行回数を最小化したい
  • 精度と計算時間の 2 つの目的が相互矛盾するため、パレート解を探索したい
  • 不確実性を考慮して、自信度の低い領域を優先探索したい

結果の予測例: 初期 6 回の解析後、ガウス過程が以下を予測

  • 条件 A:精度 98%、計算時間 3 時間、不確実性:小
  • 条件 B:精度 96%、計算時間 2 時間、不確実性:大

→ ベイズ最適化は条件 B を次に評価する可能性が高い(未探索領域)


事例 3:材料配合設計

背景: 樹脂に複数の添加剤を混合するとき、強度と耐久性のバランスを取りたい。

探索対象(入力)

  • 難燃剤 A 添加率:0~10 wt%
  • 難燃剤 B 添加率:0~10 wt%
  • 可塑剤添加率:0~5 wt%

評価指標(出力)

  • 曲げ強度(MPa)
  • 耐衝撃性(kJ/m²)
  • 燃焼性(LOI 値)

ガウス過程の優位性: 配合試験は 1 回数日かかるため、回数を極力削減したい。

従来の方法(経験則 + 直交表)では、意味のある最適条件の発見に 60~80 回必要だったが、ベイズ最適化(ガウス過程サロゲートモデル)では 40 回程度で収束。



Python による実装例

基本的な使い方

python

from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C
import numpy as np

# 訓練データ準備
X_train = np.array([
    [100, 1.0],
    [150, 1.5],
    [200, 2.0]
])  # [金型温度, 射出圧力]

y_train = np.array([150, 220, 260])  # 強度(MPa)

# カーネル設定:定数×RBF
kernel = C(1.0, (1e-3, 1e3)) * RBF(1.0, (1e-2, 1e2))

# ガウス過程モデル生成
model = GaussianProcessRegressor(
    kernel=kernel,
    n_restarts_optimizer=10,
    alpha=1e-6
)

# 訓練
model.fit(X_train, y_train)

# 予測:170℃、1.8MPa の場合
X_test = np.array([[170, 1.8]])
mean, std = model.predict(X_test, return_std=True)

print(f"予測強度: {mean[0]:.1f} MPa")
print(f"不確実性(標準偏差): {std[0]:.1f} MPa")
print(f"95% 信頼区間: [{mean[0]-1.96*std[0]:.1f}, {mean[0]+1.96*std[0]:.1f}] MPa")

出力例:

予測強度: 235.3 MPa
不確実性(標準偏差): 8.2 MPa
95% 信頼区間: [219.3, 251.3] MPa

より実践的な実装例:ベイズ最適化への統合

python

from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import Matern
import numpy as np
import matplotlib.pyplot as plt

def objective_simulation(x):
    """実際の実験またはCAE解析をシミュレート"""
    # 金型温度と射出圧力から強度を計算(仮想モデル)
    temp, pressure = x
    strength = (
        250 * np.exp(-((temp - 150) / 30)**2) +
        50 * pressure +
        np.random.normal(0, 5)  # ノイズ
    )
    return strength

# ステップ1: 初期訓練データ(ランダムサンプリング)
n_init = 8
X_train = np.random.uniform([80, 0.5], [200, 3.0], (n_init, 2))
y_train = np.array([objective_simulation(x) for x in X_train])

# ステップ2: ガウス過程モデル定義
kernel = Matern(nu=2.5)
gp = GaussianProcessRegressor(
    kernel=kernel,
    alpha=1e-6,
    normalize_y=True,
    n_restarts_optimizer=5
)

# ステップ3: ベイズ最適化ループ
n_iterations = 5

for iteration in range(n_iterations):
    # 訓練
    gp.fit(X_train, y_train)
    
    # グリッド上で予測
    x_grid = np.linspace([80, 0.5], [200, 3.0], 50)
    mu, sigma = gp.predict(x_grid, return_std=True)
    
    # 獲得関数(LCB: Lower Confidence Bound)
    kappa = 2.576  # 95%信頼度
    lcb = mu - kappa * sigma
    
    # 最高の獲得関数値を持つ点を選択
    idx_best = np.argmax(lcb)
    x_next = x_grid[idx_best]
    
    # 新しい点を評価
    y_next = objective_simulation(x_next)
    
    # 訓練データに追加
    X_train = np.vstack([X_train, x_next])
    y_train = np.append(y_train, y_next)
    
    print(f"反復 {iteration+1}: 評価点 {x_next}, 強度 {y_next:.1f} MPa")

# 最適条件
best_idx = np.argmax(y_train)
print(f"\n最適条件: 金型温度 {X_train[best_idx, 0]:.1f}℃, 射出圧力 {X_train[best_idx, 1]:.2f} MPa")
print(f"最高強度: {y_train[best_idx]:.1f} MPa")

ガウス過程回帰のメリット・デメリット

メリット

メリット説明
少ないデータでも有効10~100 件程度のデータで信頼できる予測が可能
予測の不確実性を定量化σ で「自信の度合い」を数値化
ベイズ最適化と相性抜群獲得関数の計算に μ と σ が必須
数学的厳密性確率論に基づくため解釈が明確
カーネル関数の選択問題に応じて最適なカーネルを組み合わせ可能

デメリット

デメリット説明
計算量が多いO(n³) の計算複雑度により、データが増えると遅くなる
大量データには不向き1 万件以上では XGBoost など他の手法が効率的
設計変数が多いと性能低下20 個以上の変数では効果が落ちやすい
カーネル選択が難しい不適切なカーネル選択で精度が低下

よくある質問

Q1:ガウス過程回帰と XGBoost の違いは?

A:主な違いは以下の通りです。

  • ガウス過程回帰:予測の不確実性を出力、少ないデータに強い、計算が遅い
  • XGBoost:予測精度を最大化、大量データに対応、高速

ベイズ最適化を実装するなら GPR、単なる予測精度を求めるなら XGBoost を選びます。

Q2:ガウス過程回帰はベイズ最適化以外でも使われる?

A:はい、様々な場面で利用されています。

  • 時系列予測(例:株価予測)
  • センサーデータの補間
  • 空間統計(Kriging)
  • 信頼区間が必要な工学的予測

ただし、製造業での活用は、ベイズ最適化のサロゲートモデルとしての利用が最も多いです。

Q3:カーネル関数はどのように選べばよい?

A:以下の流れで選択します。

  1. まず RBF を試す:最も汎用的
  2. データが粗い(尖ったピークがある)場合は Matérn
  3. 線形関係が強い場合は線形カーネル
  4. 複数を試して交差検証で比較

ガウス過程回帰の計算プロセス(詳細)

ステップ 1:共分散行列の計算

訓練データ X_train に対して、カーネル K を使い共分散行列 Σ を計算:

Σ = K(X_train, X_train) + α I

α はノイズ項、I は単位行列。

ステップ 2:チョレスキー分解

数値的安定性のため、共分散行列をチョレスキー分解:

Σ = L L^T

ステップ 3:未知点での予測

新しい点 x_* での予測値 μ_* と分散 σ²_* :

μ_* = k_*^T Σ^(-1) y_train
σ²_* = k(x_*, x_*) - k_*^T Σ^(-1) k_*

ここで k_* = K(X_train, x_*) はクロスカーネル。



ガウス過程回帰と他の確率的回帰手法との比較

ベイズ線形回帰

  • 線形仮定で解釈可能性が高い
  • 非線形関係には対応できない
  • ガウス過程は線形回帰の非線形拡張

ガウス混合モデル(GMM)

  • 離散的な成分を仮定
  • ガウス過程は連続的な関数を仮定
  • 異なるアプローチ

まとめ

ガウス過程回帰(GPR)は、予測値だけでなく、予測の不確実性まで推定できる強力な回帰モデルです。

主な特徴

  • 少ないデータでも信頼できる予測(10~1000 件程度が得意)
  • 予測の不確実性を定量化(σ で自信度を表現)
  • ベイズ最適化の中核(獲得関数の計算に不可欠)

活躍する場面

  • 実験 1 回に時間・コストがかかる問題
  • CAE 解析が重い問題
  • 材料開発やプロセス最適化

選択の判断基準

ガウス過程回帰を選ぶべき場合:

  • データ件数:10~1000 件程度
  • 各試行のコスト:高い(数時間以上)
  • 予測の不確実性が必要:はい
  • 設計変数:5~15 個程度

XGBoost を選ぶべき場合:

  • データ件数:1,000 件以上
  • 予測精度の最大化が目標
  • 計算速度が重要
  • 非線形関係が複雑

ベイズ最適化により効率的な最適化を実現したいなら、ガウス過程回帰は不可欠な要素となります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次