サポート ベクター マシン (略して SVM) は、分類および回帰タスクに広く使用されている強力な教師あり学習アルゴリズムです。この記事では、線形分類からカーネル関数の拡張まで、SVM の原理を深く分析します。
1. 最大マージンを使用した線形分類
SVM の中心となるアイデアは、特徴空間内で最適な超平面を見つけて、さまざまなカテゴリのサンプルを分離することです。線形分離可能なケースの場合、SVM は分類境界 (超平面) と 2 つのクラスのサンプルの間の分離を最大化することによって分類を実現します。この間隔は最大間隔と呼ばれ、SVM の堅牢性と汎化能力が向上します。
2. サポートベクター
サポート ベクトルは、最大マージン超平面に最も近いサンプル ポイントです。これらのサンプル点は、超平面と決定境界を定義する際に重要な役割を果たします。サポート ベクターは SVM モデルの構造とパフォーマンスを決定します
3. ソフトインターバルとペナルティ係数
実際のアプリケーションでは、線形分離可能なデータセットはほとんどありません。線形不可分性の場合に対処するために、ソフトマージンの概念が導入されます。ソフト マージンにより、一部のサンプル ポイントが超平面の間違った側に存在することが可能になります。分類境界の堅牢性と一般化能力のバランスをとるために、ペナルティ係数 C が導入されます。C の値は、誤って分類されたサンプルの許容範囲を決定します。C が小さいほど、より緩やかな決定境界が生成され、C がより大きいほど、より厳密な決定境界が生成されます。
4. カーネル機能の拡張
データセットが線形分離可能でない場合、線形 SVM は効果的に分類できません。この問題を解決するために、SVM ではカーネル関数の概念が導入されています。カーネル関数は、低次元特徴空間のサンプルを高次元特徴空間にマッピングできるため、元の線形分離不可能な問題が線形分離可能になります。一般的に使用されるカーネル関数には、線形カーネル、多項式カーネル、ガウス カーネルなどが含まれます。
5. SVMのメリットとデメリット
SVM の利点:
- 高次元の特徴空間とサンプル数が多いデータセットを処理できる
- 線形分離可能な問題を扱う場合、優れた堅牢性と汎化能力を備えています。
- さまざまなカーネル関数の拡張をサポートし、非線形問題を処理できます
SVM の欠点:
- 大規模なデータセットや高次元のデータセットの場合、トレーニング時間は長くなります。
- 適切なカーネル関数の選択とパラメータ調整に敏感
- ノイズの多いデータセットを扱う場合、オーバーフィットが起こりやすくなります。
6. SVM コード例
from sklearn.datasets import load_iris
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建SVM模型
model = SVC()
# 训练模型
model.fit(X_train, y_train)
# 预测结果
y_pred = model.predict(X_test)
# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)
コードでは、まず古典的なアイリス データ セット (Iris) がロードされ、データ セットはトレーニング セットとテスト セットに分割されます。次に、SVM 分類モデルを作成し、トレーニング セットをトレーニングに使用します。テスト セットを使用して予測を行い、精度を計算してモデルのパフォーマンスを評価します。