目次
6. 線形分離可能なサポートベクターマシンの学習アルゴリズム(最大間隔法)
1. はじめに
SVM は分類モデルであり、特徴空間内の最大の間隔 (距離) で定義された線形分類器です。
基本的な考え方: SVM は、トレーニング サンプル データ セットを特徴空間内の点として表現し、超平面を使用して各カテゴリのトレーニング データを分離します。予測するときは、新しいテスト データ ポイントを入力します。テスト データ ポイントが特徴空間が超平面の一辺に分布していれば、テストポイントのカテゴリはその辺に対応するカテゴリであると判断します。
SVM には 3 つのタイプがあります。
線形分離可能なサポート ベクター マシン(ハード マージン最大化)
線形非分離サポートベクターマシン(ソフトマージン最大化)
非線形サポート ベクター マシン(カーネル トリックとソフト マージンの最大化)
(1) 線形分離可能なサポートベクターマシン
1. 元の質問:
線形分離可能なサポートベクターマシンを解くための最適化問題を元の最適化問題とする。
(SVM は通常、バイナリ分類問題に使用され、-1 と +1 を使用して対応する 2 つのカテゴリを表します。yi=-1 の場合、サンプル点 xi は負の例と呼ばれ、yi=+1 の場合、サンプル点 xi は負の例と呼ばれます。ポジティブな例と呼ばれます)
2.SVM
トレーニング データ セットが線形分離可能である場合、SVM アルゴリズムは、すべてのサンプル (正の例と負の例) が対応するカテゴリに従って分布できるように、サンプル データ分布の特徴空間で分離超平面を計算できることを期待します。 . 超平面の両側。
線形分離可能なサポート ベクター マシンの分類決定関数 f(x) :
マージンの最大化によって学習される、または対応する凸二次計画問題を同等に解くことによって学習される分離超平面は次のとおりです。
3. 分類予測の信頼性
SVM を使用してトレーニング サンプルを分類する場合、通常、分類予測の信頼性を使用して、非標準アルゴリズムの信頼性を評価します。
分離超平面までの距離が近いほど、データの分類の信頼性は低くなり、逆に、距離が遠いほど、データの分類の信頼性は高くなります。
w・xi+b の算術符号がサンプル データ点の分類ラベル yi の符号と一致する場合、分類が正しいことを意味します。そうでない場合、分類は間違っています。
4. 授業間隔
トレーニング データ セット T と超平面の間の幾何学的間隔を次のように定義します。
サポート ベクター マシンの目標は、トレーニング サンプル データ セットを正しく分割し、その幾何学的間隔を最大化できる分離超平面を見つけることです。
(図中、点線が通過する点がサポートベクトル、サポートベクトルから実線までの垂直距離が分類区間γ)
5. 制約
2 つの質問:
(1) 分離超平面がサンプル点を正しく分類しているかどうかを判断する方法
(2) 分類区間 d を解くには、まずサポート ベクトルを見つける必要があります。では、多くのトレーニング サンプルの中からサポート ベクトルを見つけるにはどうすればよいでしょうか?
これら 2 つの問題は、最適な分類区間の制約を解決すること、つまり、最適な分離超平面の制約と制限を解決することです。
6. 線形分離可能なサポートベクターマシンの学習アルゴリズム(最大間隔法)
入力:トレーニング対象の線形分離可能なサンプル データ セット T を入力します。
出力:最大マージンの分離超平面と分類決定関数を出力します。
アルゴリズムプロセス:
(1) 制約と制約の下で最適化問題を解く
(2) 最適解を求める(w*, b*)
(3) 最適分離超平面 w* x+b*=0 とその分類決定関数 f(x)=sign(w* x+b*) を求める
7.デュアルアルゴリズム
ラグランジュ方程式を採用する主な目的は、目的関数に制約を入れて、制約付きの最適化問題を新しい目的関数の制約のない最適化問題に変換することです。
ラグランジュ双対性を通じて、元の問題は最大値と最小値を見つける問題に変換されます。
(2) 線形非分離サポートベクターマシン
アルゴリズムプロセス:
入力:トレーニング対象のサンプル データ セット T とペナルティ パラメーター C を入力します。
出力:ソフトマージンを最大化する分離超平面と分類決定関数を出力します。
(1) 制約付き最適化問題の解決
(2) 計算
同時に a* のある成分 aj* を選択し、
(3) ソフトマージンを最大化するための分離超平面と分類判定関数を求める
(3) 非線形サポートベクターマシン
1. 二重の問題
カーネル関数は、入力空間内の任意の 2 つのベクトル x および z を、特徴空間内の対応するベクトル間の内積にマップします。内積をカーネル関数に置き換えるこの方法は、カーネル トリックと呼ばれます。
非線形サポート ベクター マシンでは、一般的に使用されるカーネル関数は次のとおりです。
(1) 多項式カーネル関数
(2) ガウスカーネル関数
(3) シグモイドカーネル関数
2. アルゴリズム
入力:入力トレーニング データ セット T およびペナルティ パラメーター C>0
出力:出力分類決定パラメータ
アルゴリズムプロセス:
(1) 制約付き最適化問題を解くための適切なカーネル関数 K(x,z) を選択します。
(2) 計算
同時に a* のある成分 aj* を選択し、
(3) 分類判定関数は、
2. 実戦(rbf+ガンマによる虹彩分類)
コード:
from sklearn import datasets
import numpy as np
from sklearn.model_selection import train_test_split
# 划分数据集为训练集和测试机
from sklearn import svm # 导入SVM
iris=datasets.load_iris()
# 导入鸢尾花数据集
data_train,data_test,target_train,target_test=train_test_split(iris.data,iris.target,test_size=0.3)
# 测试集占总数据集的0.3
svm_classifier=svm.SVC(C=1.0,kernel='rbf',
decision_function_shape='ovr',gamma=0.01)
# 定义一个svm对象
svm_classifier.fit(data_train,target_train)# 训练模型
score=svm_classifier.score(data_test,target_test)
# 把测试集的数据传入即可得到模型的评分
predict=svm_classifier.predict([[0.1,0.2,0.3,0.4]])
# 预测给定样本数据对应的标签
print(score)
print(predict)
パラメータの説明:
パラメーター cが大きいほど、トレーニング セットの誤差は小さくなりますが、過剰適合しやすくなります。
パラメータ coef0 は過学習を防ぐために小さくし、coef0 は過小学習を防ぐために大きくします。
ガンマが大きいほど、サポート ベクターの影響を受ける領域が小さくなり、モデルの複雑さが増し、過学習が起こりやすくなります。ガンマが小さいほど、決定境界が滑らかになり、モデルの複雑さが低くなり、アンダーフィットしやすいです。
カーネルパラメータ:「線形」線形カーネル関数
'poly' 多項式カーネル関数
「rbf」ラジアルベーシスカーネル関数
'sigmoid' シグモイド カーネル関数
操作結果: