0Pricing
Learn AI with Python · レッスン

カーネルトリック:RBF、Polynomial、Sigmoid

カーネルが機能する理由、RBFカーネルのgammaパラメータ、さまざまなデータ形状に適したカーネルの選び方を学習します。

「カーネルトリック:RBF、Polynomial、Sigmoid」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

直線だけでは不十分な場合

線形SVMは直線的な境界しか描けません。多くのデータセットは線形分離できず、たとえば一方のクラスを別のクラスが円状に取り囲んでいる場合、直線では分離できません。これを解決するのがカーネルトリックです。

高次元への写像

元の空間でデータを分離できない場合でも、高次元の空間に写像すると分離できることがあります。2次元の曲線が、3次元では平面になる場合もあります。

カーネルトリック

カーネルトリックは、点同士の類似度K(x, z)を、あたかも高次元に写像したかのように計算します。高コストな写像を実際に行う必要がないため、非線形SVMを効率的に利用できます。

カーネル関数とは

カーネルK(x, z)は、ある高次元の特徴空間におけるxとzの内積を返す関数です。カーネルが異なると、特徴量への写像や境界の形も異なります。

RBFカーネル

RBF(ガウス)カーネルは、最も一般的なデフォルト設定です。K(x, z) = exp(-gamma * ||x - z||^2)で表され、距離が離れるほど低下する類似度を測ることで、柔軟な曲線状の境界を実現します。

from sklearn.svm import SVC

model = SVC(kernel="rbf", gamma="scale", C=1.0)
model.fit(X, y)

gammaパラメーター

gammaはRBFの幅を制御します。gammaが大きいと各点の影響範囲が狭くなり、過学習しやすい複雑な境界になります。gammaが小さいと影響範囲が広くなり、より滑らかな境界になります。

from sklearn.svm import SVC

wiggly = SVC(kernel="rbf", gamma=10)    # tight, can overfit
smooth = SVC(kernel="rbf", gamma=0.01)  # broad, may underfit

gammaとCの組み合わせ

RBF SVMは、gamma(境界の柔軟性)とC(誤りの許容度)の両方に左右されます。両者は相互に作用するため、通常はグリッドサーチで同時に調整します。

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC

param = {"C": [0.1, 1, 10], "gamma": [0.01, 0.1, 1]}
gs = GridSearchCV(SVC(kernel="rbf"), param, cv=5)
gs.fit(X, y)

多項式カーネル

多項式カーネルK(x, z) = (gamma * x . z + r)^degreeは、指定した次数までの相互作用をモデル化します。特徴量間に特定の次数の相互作用があると予想される場合に使用します。

from sklearn.svm import SVC

model = SVC(kernel="poly", degree=3, coef0=1, gamma="scale")
model.fit(X, y)

シグモイドカーネル

シグモイドカーネルK(x, z) = tanh(gamma * x . z + r)は、ニューラルネットワークの活性化関数のように動作します。あまり一般的ではなく、常に有効なカーネルとは限らないため、最初に選ぶことはほとんどありません。

from sklearn.svm import SVC

model = SVC(kernel="sigmoid", gamma="scale", coef0=0)

カーネルの選び方

指針:

  • 高次元データやテキストデータには線形
  • 非線形データの汎用的な選択肢にはRBF
  • 特定の次数の相互作用が重要な場合は多項式
  • シグモイドは限定的なケースでのみ使用

必ず特徴量をスケーリングする

RBFのようなカーネルは距離に依存するため、特徴量のスケールが非常に重要です。カーネルSVMを使う前に必ず特徴量を標準化してください。そうしないと、スケールの大きい特徴量が類似度に強く影響します。

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

pipe = make_pipeline(StandardScaler(), SVC(kernel="rbf"))
pipe.fit(X, y)

理解度チェック

カーネルに関する知識を確認しましょう。

まとめ

まとめ: カーネルトリックは、写像のコストをかけずにK(x, z)を高次元の内積として計算し、非線形の境界を可能にします。RBFはexp(-gamma * ||x-z||^2)を使い、gammaが大きいと過学習しやすくなります。多項式は次数dまでの相互作用を捉えます。カーネルSVMを使う前には、必ず特徴量をスケーリングしてください。

よくある質問

「カーネルトリック:RBF、Polynomial、Sigmoid」レッスンは無料ですか?

はい。「カーネルトリック:RBF、Polynomial、Sigmoid」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「カーネルトリック:RBF、Polynomial、Sigmoid」で何を学びますか?

カーネルが機能する理由、RBFカーネルのgammaパラメータ、さまざまなデータ形状に適したカーネルの選び方を学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn AI with Pythonを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「カーネルトリック:RBF、Polynomial、Sigmoid」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn AI with Pythonレッスンでコードを書いて実行できますか?

はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. SVM理論:マージンとサポートベクター
  2. カーネルトリック:RBF、Polynomial、Sigmoid
  3. sklearnによるSVM分類
  4. SVMによる回帰(SVR)
← Learn AI with Pythonに戻る