カーネルトリック

Rで学ぶSupport Vector Machines

Kailash Awati

Instructor

基本的な考え方

  • 問題を線形分離可能にする変換を考案します。
  • 放射状分離可能なデータセットでの方法を見ていきます。
Rで学ぶSupport Vector Machines

第3章3節 - 決定境界付きの放射状分離可能なデータセット

Rで学ぶSupport Vector Machines

問題の変換

  • 境界の方程式は $x_1 ^ 2 + x_2 ^ 2 = 0.49$
  • $x_1 ^ 2$ を新変数 $X_1$、$x_2 ^ 2$ を $X_2$ にマッピング
  • $X_1 - X_2$ 空間での境界の方程式は…
  • $X_1 + X_2 = 0.49$(直線!!)
Rで学ぶSupport Vector Machines

X1-X2空間でのプロット - コード

  • ggplot() を使って $X_1 - X_2$ 空間にデータセットをプロット
  • 境界の方程式 $X_2 = -X_1 + 0.49$:
    • $slope = -1$
    • $yintercept = 0.49$
p <- ggplot(data = df4, aes(x = x1sq, y = x2sq, color = y)) + 
  geom_point() + 
  scale_color_manual(values = c("red", "blue")) +
  geom_abline(slope = -1, intercept = 0.49)

p
Rで学ぶSupport Vector Machines

第3章3節 - 決定境界付きの変換済み放射状分離可能なデータセット

Rで学ぶSupport Vector Machines

多項式カーネル - パート1

  • 多項式カーネル: (gamma * (u.v) + coef0) ^ degree
    • degree は多項式の次数
    • gammacoef0 はチューニングパラメータ
    • uv はデータセットに属するベクトル(データ点)
  • 2次多項式(変換)が適切と推測できる
Rで学ぶSupport Vector Machines

カーネル関数

  • SVMの数式定式化には、特定の性質を持つ変換が必要です。
  • この性質を満たす関数をカーネル関数と呼びます
  • カーネル関数はベクトルの内積を一般化したものです
  • 基本的な考え方 - データをうまく分離するカーネルを使用する!
Rで学ぶSupport Vector Machines

放射状分離可能なデータセット - 2次カーネル

  • 訓練/テスト比率 80/20
  • 放射状分離可能なデータセットに2次SVMを構築:
    • degree = 2 を設定
    • costgammacoef0 のデフォルト値を使用(1、1/2、0)
svm_model <- svm(y ~ ., data = trainset, type = "C-classification", kernel = "polynomial", degree = 2)
# Predictions
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
0.9354839
# Visualize model
plot(svm_model, trainset)
Rで学ぶSupport Vector Machines

第3章3節 - 放射状分離可能なデータセット、デフォルトcostの2次カーネル、svm.plotによる可視化

Rで学ぶSupport Vector Machines

練習してみましょう!

Rで学ぶSupport Vector Machines

Preparing Video For Download...