曲線フィッティングの基礎と実務: 線形回帰からカーネル回帰までの手法と評価
曲線フィッティングとは — 概念と目的
曲線フィッティング(curve fitting)は、観測データ点(x_i, y_i)の集合に対して、ある関数 f(x; θ) を用いてデータを説明・近似する手法の総称です。目的は単にデータ点を通過する曲線を求めることにとどまらず、ノイズを含む観測から基礎となる関係性を推定し、予測や補間、データ圧縮、ノイズ除去、物理モデルの同定など実用的な利用を行うことです。ここで θ はモデルパラメータの集合を表します。
補間と近似の違い
- 補間(Interpolation):与えられた全ての観測点を厳密に通るように関数を選ぶ。代表例はスプラインや多項式補間。
- 近似(Approximation / Regression):観測点はノイズを含むとみなし、最適な「平均的」フィットを求める。最小二乗法に基づく回帰(ordinary least squares, OLS)が典型。
主要な手法とアルゴリズム
代表的な曲線フィッティング手法を用途別にまとめます。
- 線形回帰(Linear regression):モデルはパラメータについて線形。最小二乗解は解析的に求められ、行列計算(正規方程式、QR分解、SVD)で実装される。
- 多項式フィッティング:x の多項式で関係を表す。次数選択により柔軟性が変わるが、高次多項式は発散や過学習、数値不安定性(Vandermonde行列の条件数)を招く。
- 非線形最小二乗(Non-linear least squares):f がパラメータについて非線形な場合。Gauss–Newton、Levenberg–Marquardt などの反復法が用いられる。
- スプライン・平滑化スプライン:区分多項式を滑らかに接続する手法。滑らかさのペナルティ(ラムダ)で過剰適合を抑制する。
- ロバストフィッティング:外れ値に強い手法。RANSAC、Huber損失、Tukeyの重み付けなど。
- 正則化(リッジ、Lasso):パラメータの大きさにペナルティを課すことで過学習を抑える。特に高次多項式や特徴量が多い場合に有効。
- カーネル回帰・ガウス過程:非線形関係を柔軟にモデル化。予測の不確実性(分散)を同時に出力できる。
最適化基準と評価指標
一般的な最適化基準には、残差の二乗和(RSS = Σ(y_i - f(x_i;θ))^2)を最小化する最小二乗法がある。評価には次の指標が使われます。
- R^2(決定係数):説明力の指標。ただし次数を増やすと単調増加しやすいので注意。
- RMSE / MAE:実際の誤差尺度(平均二乗誤差の平方根、平均絶対誤差)。
- AIC / BIC:モデルの良さと複雑さを両立する情報量基準。モデル選択で有用。
- 交差検証(k-fold CV):過学習を防ぎ、汎化性能を評価する実用的手法。
仮定と残差解析
回帰モデルにはいくつかの仮定(残差の独立性、平均ゼロ、等分散性(ホモスケダスティシティ)、誤差の正規性など)がある。これらが破れると推定量の分散や信頼区間が誤りやすくなるため、残差プロット(残差 vs 予測値、QQプロット)や自己相関(Durbin–Watson)をチェックすることが重要です。異分散性がある場合は重み付き最小二乗(WLS)や分散をモデル化する手法を用いる。
数値的考慮点と安定化
実装面での注意点は以下の通りです。
- Vandermonde行列を直接解く多項式フィッティングは数値不安定になりやすい。QR分解やSVDを使うことで安定性が向上する。
- 特徴量のスケーリング(正規化)は条件数を改善し、正則化や勾配法の収束を助ける。
- 多数のデータや高次元問題では直接法がメモリ・計算負荷を増すため、反復法(確率的勾配降下法、LSQR など)やバッチ処理が必要。
- パラメータの不確かさは推定されたパラメータの共分散行列から計算される(最小二乗の場合、σ^2 (X^T X)^{-1} など、ただし仮定に依存)。
モデル選択と過学習対策
曲線フィッティングで最も重要なのは「どのくらい複雑なモデルを選ぶか」です。高次モデルは訓練データに対して良い適合を示すが、未知データでの性能が劣化する(過学習)。実務では以下の方策が使われます。
- 交差検証で汎化誤差を推定して次数やハイパーパラメータを選ぶ。
- 正則化(L2:リッジ、L1:Lasso)でパラメータの大きさを制約する。
- 情報量基準(AIC, BIC)を併用し、説明力と複雑さを均衡させる。
- スプラインや局所回帰(LOESS)など滑らかさを直接制御できる手法を使う。
実務での実装例と代表的ライブラリ
IT・データサイエンスの現場では多くの実装が既に用意されています。代表的なもの:
- Python: numpy.polyfit(多項式)、scipy.optimize.curve_fit(非線形最小二乗)、scipy.odr(直交距離回帰)、scikit-learn(RANSAC、線形モデル、カーネル回帰)、statsmodels(詳細な統計的出力)
- R: lm(線形モデル)、nls(非線形最小二乗)、mgcv(一般化加法モデルとスプライン)、robustbase(ロバスト回帰)
- その他: MATLAB(polyfit, fit, lsqcurvefit)、Julia(LsqFit.jl、GLM.jl)
応用例
曲線フィッティングは幅広い分野で使われます。
- 計測器の較正やセンサデータの補正(キャリブレーション曲線)
- 時系列データのトレンド抽出(信号処理)
- 物理法則の係数推定(実験データからモデル同定)
- コンピュータビジョンでの輪郭近似や特徴抽出
- 機械学習モデルの前処理や特徴生成
よくある落とし穴とベストプラクティス
- 高いR^2に安心しない:過学習や外れ値による影響を疑う。
- 多項式次数の盲目的な増加を避ける。次数選択は交差検証や情報量基準で行う。
- 外れ値の扱いを明示する。ロバスト法か外れ値除去の根拠を示す。
- 数値不安定性に注意し、可能ならQR/SVD・正則化を使う。
- 残差解析を必ず行い、仮定違反(非定常性、自己相関、異分散)を検出したら対処する。
まとめ
曲線フィッティングは単純な最小二乗から高度なベイズ的手法まで含む広範な領域です。IT実務では、適切なモデル選択、数値安定化、過学習防止、残差解析といった工程を通じて信頼できる推定と予測を得ることが重要です。既存のライブラリやアルゴリズムを用途に応じて使い分け、評価指標と可視化を活用してモデルの妥当性を確認することが成功の鍵になります。
参考文献
- 曲線フィッティング - Wikipedia(日本語)
- numpy.polyfit — NumPy ドキュメント
- scipy.optimize.curve_fit — SciPy ドキュメント
- scikit-learn: Linear models — Documentation
- Nonlinear Regression and Least Squares — 教育資料(参考)
- モデル選択(AIC/BIC)に関する概説(参考)
- Levenberg–Marquardt algorithm — Wikipedia(英語)
- 数値的手法(QR, SVD)に関する参考資料


