サポートベクターマシン(Support Vector Machine, SVM)は、分類や回帰分析に用いられる強力な機械学習アルゴリズムで、特に分類問題で高い性能を発揮します。SVMは、与えられたデータを線形または非線形に分類するための「最適な超平面(分離面)」を見つけることを目的としています。
SVMの基本的な考え方
SVMの基本アイデアは、データポイントを分類するために「マージンが最大化される」ような超平面を見つけることです。SVMでは、2つのクラス間の境界から最も近いデータポイント(サポートベクター)までの距離が最大化されるように分離面を設計します。これにより、分類の信頼性を高め、汎化性能が向上します。
SVMの仕組み
1. 線形分離
データが線形に分離可能な場合、SVMは次のように「最適な超平面」を見つけます:

ここで、 は超平面の法線ベクトル、 はデータポイントの特徴ベクトル、 はバイアス項です。この超平面を基準に、各クラスのデータポイントが区別されます。
2. サポートベクトル
サポートベクトルは、マージンの端に位置するデータポイントで、これらのデータポイントが分離面の位置を決定します。サポートベクトル以外のデータは、分類に影響を与えません。
3. 最大マージン
分離面とサポートベクトルとの距離(マージン)を最大化することで、SVMは新しいデータに対しても分類精度が高くなるようにします。これは、過剰適合を防ぎ、モデルの汎化性能を向上させるためです。
非線形分離とカーネルトリック
実際のデータは、必ずしも線形に分離できるとは限りません。このような場合には、SVMは「カーネルトリック(Kernel Trick)」を用いることで、データを高次元の空間にマッピングし、そこで線形分離を行います。カーネル関数を使用することで、実際に高次元にマッピングすることなく、データの内積計算だけで済ませることができます。
代表的なカーネル関数
• 線形カーネル:データが線形に分離できる場合に使用します。
• 多項式カーネル:データの非線形性が多項式で表現できる場合に使用します。
• ガウシアン(RBF)カーネル:最も一般的なカーネルで、データの複雑な非線形性を扱えます。
• シグモイドカーネル:ニューラルネットワークと類似したカーネルで、特定の非線形性を表現します。
ソフトマージンSVM
SVMは、全てのデータポイントが完全に分離されない場合にも対応できます。この場合、ソフトマージンを導入し、少しの誤分類を許容することで、モデルの柔軟性を持たせます。これにより、ノイズや外れ値を含むデータでも適用可能です。
ソフトマージンの調整は、正則化パラメータ  によって行われます。の値を高くすると誤分類が減りますが、過剰適合のリスクが増えます。一方、を小さくするとマージンが広がり、過剰適合のリスクが減りますが、誤分類が増える可能性があります。
SVMの評価指標
SVMを評価するためには、一般的な分類モデルと同様に以下の指標が用いられます:
• 正解率(Accuracy):正しく分類されたデータの割合。
• 精度(Precision):予測された正例のうち、実際に正例である割合。
• 再現率(Recall):実際の正例のうち、正しく予測された割合。
• F1スコア:精度と再現率の調和平均。
正解率(Accuracy)、精度(Precision)、再現率(Recall)、F1スコアの計算とその意味をわかりやすくするために、「混同行列(Confusion Matrix)」を用いた説明を行います。以下の表を基に、それぞれの指標について詳しく解説します。
混同行列(Confusion Matrix)
以下は、二値分類問題における混同行列の形式です:
予測:正例 (Positive) | 予測:負例 (Negative) | |
---|---|---|
実際:正例 (Positive) | 真陽性 (TP) | 偽陰性 (FN) |
実際:負例 (Negative) | 偽陽性 (FP) | 真陰性 (TN) |
- TP(True Positive): 実際に正例であり、正例と予測されたデータ。
- FP(False Positive): 実際には負例だが、正例と予測されたデータ。
- FN(False Negative): 実際には正例だが、負例と予測されたデータ。
- TN(True Negative): 実際に負例であり、負例と予測されたデータ。
各指標の計算式と説明
1. 正解率(Accuracy)
$$ [
\text{Accuracy} = \frac{\text{TP} + \text{TN}}{\text{TP} + \text{FP} + \text{FN} + \text{TN}}
]
$$
- 意味: 全体のデータのうち、正しく分類されたデータの割合。
- 適用例: クラス分布が均等な場合に有効。ただし、不均衡データでは指標として適さない場合があります。
2. 精度(Precision)
$$
[
\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}}
]
$$
- 意味: モデルが正例と予測したデータのうち、実際に正例である割合。
- 適用例: 偽陽性(FP)を避けたい場合に重要(例:スパムメール検出)。
3. 再現率(Recall)
$$
[
\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}
]
$$
- 意味: 実際の正例データのうち、正しく正例と予測された割合。
- 適用例: 偽陰性(FN)を避けたい場合に重要(例:病気の診断)。
4. F1スコア
$$
[
\text{F1 Score} = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}
]
$$
- 意味: 精度と再現率のバランスを取った指標。
- 適用例: 精度と再現率のどちらも重視したい場合に有効。
数値例での解説
以下の例を用いて具体的に計算します:
予測:正例 (Positive) | 予測:負例 (Negative) | |
---|---|---|
実際:正例 (Positive) | 50(TP) | 10(FN) |
実際:負例 (Negative) | 5(FP) | 35(TN) |
-
正解率(Accuracy)
$$ [
\text{Accuracy} = \frac{\text{TP} + \text{TN}}{\text{TP} + \text{FP} + \text{FN} + \text{TN}} = \frac{50 + 35}{50 + 5 + 10 + 35} = 0.85
] $$
正解率は85% です。 -
精度(Precision)
$$ [
\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} = \frac{50}{50 + 5} = 0.91
] $$
精度は91% です。 -
再現率(Recall)
$$ [
\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} = \frac{50}{50 + 10} = 0.83
] $$
再現率は83% です。 -
F1スコア
$$ [
\text{F1 Score} = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} = 2 \cdot \frac{0.91 \cdot 0.83}{0.91 + 0.83} = 0.87
] $$
F1スコアは87% です。
まとめ表
指標 | 計算式 | 値 | 説明 |
---|---|---|---|
正解率(Accuracy) | $$ ( \frac{\text{TP} + \text{TN}}{\text{TP} + \text{FP} + \text{FN} + \text{TN}} )$$ | 85% | 全体のうち正しく分類された割合 |
精度(Precision) | $$ ( \frac{\text{TP}}{\text{TP} + \text{FP}} ) $$ | 91% | 正例と予測されたデータの中で正しい割合 |
再現率(Recall) | $$ ( \frac{\text{TP}}{\text{TP} + \text{FN}} ) $$ | 83% | 実際の正例の中で正しく予測された割合 |
F1スコア | $$ ( 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} ) $$ | 87% | 精度と再現率のバランスを取った指標 |
適用シナリオ
- 正解率:全体のパフォーマンスをざっくり評価。
- 精度:誤警報(FP)を減らしたい場合。
- 再現率:見逃し(FN)を減らしたい場合。
- F1スコア:精度と再現率のバランスを重視したい場合。
SVMの利点と欠点
利点
• 高い分類性能:特に高次元データや非線形データに対して強力な分類性能を発揮します。
• 過剰適合の抑制:最大マージンを持つ分離面により、汎化性能が高まります。
• 高次元データへの適用:高次元データでも効率的に分類が可能で、数少ない特徴量でも安定して動作します。
欠点
• 計算コストが高い:特にデータ量が多い場合、計算量が増えやすいです。
• 解釈が難しい:モデルの解釈が他の単純なモデルと比べて難しく、ブラックボックス化しがちです。
• 調整が必要:カーネルの選択やパラメータ  の調整がモデル性能に大きく影響します。
SVMの応用例
• 画像分類:画像の特徴量を用いた分類(例:顔認識、手書き数字認識など)。
• テキスト分類:自然言語処理におけるスパムフィルタリングや感情分析など。
• バイオインフォマティクス:遺伝子データを用いた病気の予測や分類。
まとめ
SVMは、特に分類タスクで非常に高い性能を発揮するモデルで、線形および非線形データに対応可能です。最適な分離面とカーネルトリックを用いることで、高次元データや非線形データの分類を効率的に行います。適切なカーネル関数やパラメータを選択することで、精度を高めつつ過剰適合を防ぐことができ、幅広い分野で応用されています。