はじめに
決定的識別モデルは、データを異なるクラスまたはカテゴリに分類するための重要なツールです。その中でも、サポートベクトルマシン(SVM)は非常に強力なアルゴリズムであり、多くの実世界の問題に適用できます。この記事では、SVMを使用して決定的識別モデルを構築する方法に焦点を当てます。
SVMの基本
SVMとは何か?
SVM(サポートベクトルマシン)は、機械学習の分野で広く使用される強力なアルゴリズムです。SVMは、データを異なるクラスに分類するための教師あり学習アルゴリズムであり、線形および非線形な問題の解決に使用できます。SVMは、データポイントの最適な境界(決定境界またはハイパープレーン)を見つけることを目指します。
決定境界(ハイパープレーン)は、次の数式で表現できます。
$$ \mathbf{w}^T\mathbf{x}=0 $$
ここで、
- $\mathbf{w}$ は決定境界の法線ベクトル
- $\mathbf{x}$ はデータポイントの特徴ベクトル
SVMは、この決定境界を最適化し、クラス間のマージンを最大化することを目指します。マージンは、決定境界と最も近いサポートベクトルまでの距離を表します。
SVMの仕組み
SVMの基本的なアイデアは、異なるクラスに属するデータポイントを分離するための最適な境界を見つけることです。この境界は、データから最も近いサポートベクトル(Support Vector)までの距離を最大化するように選択されます。
SVMは、線形SVMと非線形SVMの2つの主要なバリエーションがあり、問題の性質に応じて選択できます。線形SVMは線形分離可能な問題に適しており、非線形SVMは非線形な問題に対処できます。非線形SVMはカーネルトリックを使用して、非線形な関係を捉えることができます。
SVMを用いた決定的識別
以下は線形SVMを利用して、2クラス分類を行うことを前提としています。
SVMの損失関数
SVMの損失関数にL2正則化を追加した損失関数は以下の通りです。
$$E(\mathbf{w}) = |\mathbf{w}|^2 +C\sum_{i=1}^{N} \max(0, 1 - y_i(\mathbf{w} ^T\mathbf{x}_i ) $$
ここで、
- $N$ はデータポイントの数
- $y_i$ は正例(+1)または負例(-1)のラベル
- $\mathbf{w}$ は重みベクトル
- $\mathbf{x}_i$ は特徴ベクトル
- $\lambda$ は正則化パラメータ(ラムダ)
この損失関数は、通常のヒンジ損失に加えて、正則化項が含まれています。正則化項は、重みベクトル $\mathbf{w}$ のノルム(L2ノルム)の二乗をペナルティとして追加し、過学習を抑制します。実際の学習ではSGDが用いられることが多く、この場合の損失関数は以下のようになります。
$$E(\mathbf{w}) = |\mathbf{w}|^2 +C\max(0, 1 - y_i(\mathbf{w} ^T\mathbf{x}_i ) $$
これを$\mathbf{w}$ に対して劣微分すると、以下のようになります。
$$
\frac{\partial E(\mathbf{w})}{\partial \mathbf{w}} =
\begin{cases}
2\mathbf{w}-Cy_i \mathbf{x}_i & \text{if } 1 - y_i(\mathbf{w}^T \mathbf{x}_i) > 0
& \text{otherwise }
2\mathbf{w}
\end{cases}
$$
SVMのパラメータの更新式
SVMのパラメータ $\mathbf{w}$ および $b$ の更新式は、確率的劣勾配降下法を使用して次のようになります。
- $\mathbf{w}$ の更新式
$$\mathbf{w'} ← \mathbf{w} - \alpha \nabla_{\mathbf{w}} E(\mathbf{w}) $$ - $\alpha$ は学習率(learning rate)で、更新ステップの大きさを調整します。
- $\nabla_{\mathbf{w}}$ は $\mathbf{w}$ に関する偏微分
正則化項により、重みベクトル $\mathbf{w}$ が小さく保たれ、過学習を防ぎます。
結言
SVMを用いた決定的識別モデルは、様々な分野で応用されており、優れた性能を発揮します。この記事では、SVMの基本的な原理から具体的なモデルの構築手順を説明しました。今回説明したSVMは線形分離が可能であることを前提としています。