1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SVM(サポートベクターマシン)についてまとめてみました

Posted at

サポートベクターマシン(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)
  1. 正解率(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% です。

  2. 精度(Precision)
    $$ [
    \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} = \frac{50}{50 + 5} = 0.91
    ] $$
    精度は91% です。

  3. 再現率(Recall)
    $$ [
    \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} = \frac{50}{50 + 10} = 0.83
    ] $$
    再現率は83% です。

  4. 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は、特に分類タスクで非常に高い性能を発揮するモデルで、線形および非線形データに対応可能です。最適な分離面とカーネルトリックを用いることで、高次元データや非線形データの分類を効率的に行います。適切なカーネル関数やパラメータを選択することで、精度を高めつつ過剰適合を防ぐことができ、幅広い分野で応用されています。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?