Suport Vector Regression
RBFカーネル法を用いたSVMをモデルとした回帰
特徴量に対して明示的な変換を行わなくても、多項式回帰と同じような複雑な予測をすることができる。
結果(グラフ)
他の回帰と比較
Linearモデル(単回帰)と、多項式回帰を比較した。
サポートベクター回帰が柔軟なことがわかる。
ソースコード
import numpy as np from sklearn.svm import SVR import matplotlib.pyplot as plt import math import time np.random.seed(0) #データを作る X = np.linspace(0, 2*math.pi, 40) y = np.sin(X) #サイズを合わせる X = X.reshape(40,1) #ノイズの入れる y[::2] += np.random.rand(20) #予測用データ X_pre = np.linspace(0,4*math.pi,40) y_pre = np.sin(X_pre) X_pre = X_pre.reshape(40,1) #サポートベクター回帰(SVR) svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.05) y_rbf = svr_rbf.fit(X, y) y_rbf = y_rbf.predict(X_pre) #プロット lw = 2 plt.scatter(X_pre, y_pre, color='darkorange', label='predict') plt.scatter(X, y, color="red", label='data') plt.plot(X_pre, y_rbf, color='navy', lw=lw, label='RBF model') plt.xlabel('data') plt.ylabel('target') plt.title('Support Vector Regression') plt.legend() plt.show()
参考
SVR
...
Support Vector Regression (SVR) using linear and non-linear kernels
...