2.1.10
サポートベクター回帰 (SVR)
まとめ
- サポートベクター回帰 (SVR) は ε 不感帯により小さな誤差をゼロとみなし、外れ値の影響を抑える。
- カーネル法を利用して非線形な関係も柔軟に学習できるため、複雑なパターンを少数のサポートベクターで表現できる。
- ハイパーパラメータ
C・epsilon・gammaの調整で汎化性能とモデルの滑らかさを制御する。 - 特徴量のスケーリングは必須であり、パイプライン化して前処理と学習を一体化すると安定する。
- サポートベクターマシン(SVM) の概念を先に学ぶと理解がスムーズです
直感 #
SVR は「一定幅の誤差なら許容する」という考え方で、得られた近似関数とデータ点の間に ε 幅のチューブを敷きます。チューブの外に出た点にのみペナルティを課し、チューブに触れる点(サポートベクター)だけがモデルに影響します。そのためノイズが多い状況でも滑らかな近似関数を求められます。
具体的な数式 #
最適化問題は
$$ \min_{\mathbf{w}, b, \boldsymbol{\xi}, \boldsymbol{\xi}^*} \frac{1}{2} \|\mathbf{w}\|^2 + C \sum_{i=1}^{n} (\xi_i + \xi_i^*) $$で、制約条件は
$$ \begin{aligned} y_i - (\mathbf{w}^\top \phi(\mathbf{x}_i) + b) &\le \epsilon + \xi_i, \\ (\mathbf{w}^\top \phi(\mathbf{x}_i) + b) - y_i &\le \epsilon + \xi_i^*, \\ \xi_i, \xi_i^* &\ge 0 \end{aligned} $$です。ここで \(\phi\) はカーネルによる特徴空間への写像です。双対問題を解くことでサポートベクターと係数が得られます。
Pythonを用いた実験や説明 #
StandardScaler と組み合わせた SVR の基本的な使い方を示します。
| |
実行結果の読み方 #
- パイプライン化すると訓練データの平均・分散でスケーリングされ、テストデータにも同じ変換が適用される。
predはテストデータに対する予測値で、epsilonやCを調整すると過学習と過小適合のバランスが変わる。- RBF カーネルの
gammaを大きくすると局所的なフィッティングが強まり、小さくすると滑らかな関数になる。
ε チューブ幅と回帰曲線 #
ε の値を変えると不感帯の幅とフィッティングがどう変わるか確認できます。
参考文献 #
- Smola, A. J., & Schölkopf, B. (2004). A Tutorial on Support Vector Regression. Statistics and Computing, 14(3), 199–222.
- Vapnik, V. (1995). The Nature of Statistical Learning Theory. Springer.