技術共有

【機械学習】 12. トップ10アルゴリズムの一つであるサポートベクターマシン(SVM - Support Vector Machine)のアルゴリズム原理の説明

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1・要約

ここに画像の説明を挿入します

サポート ベクター マシン (SVM) は、分類および回帰問題で広く使用されている効率的な教師あり学習アルゴリズムです。特徴空間内で最適な超平面を見つけることによって、さまざまなカテゴリのデータ ポイントを区別し、2 種類のデータ ポイント間の間隔を最大化し、それによってモデルの汎化能力を向上させることが目的です。 SVM の主要な概念には、超平面、区間、サポート ベクトル、およびカーネル関数が含まれます。カーネル関数を使用すると、SVM はデータを高次元空間にマッピングすることで非線形問題を処理し、線形分離可能な超平面を見つけることができます。さらに、ソフト マージンと正則化技術を使用して、モデルの複雑さを制御し、過剰適合を防止しながら、データの不完全な線形分離可能性に対処します。 SVM の実装には、適切なカーネル関数の選択、凸二次計画問題の構築と解決、トレーニングされたモデルの評価と適用が含まれます。その利点は、モデルがシンプルで実装が簡単で、一般化能力が優れていることですが、計算の複雑さが高く、カーネル関数とパラメーターの選択の影響を受けやすく、大規模なデータセットを処理するときにパフォーマンスのボトルネックに遭遇する可能性があります。

2. 自己紹介

🏘️🏘️个人主页:山と川を贈り物に
🎖️🎖️:Python 分野のライジング スター クリエイター、CSDN ライジング スター認定、CSDN コンテンツ パートナー、Alibaba Cloud コミュニティ エキスパート ブロガー、ライジング スター プログラム メンター、および現場データ アナリスト。

💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。

ここに画像の説明を挿入します

🐘 希望大家能持续支持,共同向前迈进!😁
記事に価値があると思われる場合は、
欢迎留言💬,点赞👍,收藏🔖并关注我们➕🤝。
🪐💫💫💫💫💫💫💫热门专栏💫💫💫💫💫💫💫🪐
タイプカラム
Python の基本Python 基礎入門 - 詳細版
Python の上級者Python の基礎入門 — モジュール編
Python 上級Python网络爬虫从入门到精通🔥🔥🔥
Web フルスタック開発Django の基本を始める
Web フルスタック開発HTML と CSS の基礎の紹介
Web フルスタック開発JavaScript の基礎を始める
Pythonデータ分析Python数据分析项目🔥🔥
機械学習机器学习算法🔥🔥
AIAI

3. 基本的な概念

サポート ベクター マシン (SVM) は、主に分類と回帰の問題を解決するために使用される強力な機械学習アルゴリズムです。これは、統計学習理論の構造的リスク最小化原理に基づいており、特徴空間内で最適な決定境界、つまり超平面を見つけることによって、さまざまなデータ カテゴリを区別します。この超平面の選択は、データ ポイントから超平面までの最短距離 (マージンと呼ばれます) を最大化することを目的としています。通常、間隔が大きいほど、モデルの汎化能力が向上します。

SVM の中核は、超平面の位置と方向を決定するために重要なデータ点のセットであるサポート ベクトルです。これらは超平面に最も近い点です。データが線形分離可能でない場合、SVM はカーネル関数を導入して元のデータを高次元空間にマッピングし、この新しい空間で線形分離可能な超平面を見つけます。一般的に使用されるカーネル関数には、線形カーネル、多項式カーネル、動径基底関数 (RBF) カーネルなどが含まれます。

データ内のノイズと外れ値に対処するために、SVM ではソフト マージンの概念が導入されています。これにより、汎化パフォーマンスの向上と引き換えに、一部のデータ ポイントが誤って分類されることが可能になります。同時に、モデルの複雑さは、過学習を避けるために正則化項によって制御されます。 SVM のトレーニング プロセスには、通常、凸二次計画問題を解いて最適な超平面パラメータを見つけることが含まれます。

下の図を参照してください。2 次元環境では、中央の黒い線に近い点 R、S、G およびその他の点は、分類器の特定のパラメーター、つまり黒を決定することができます。ライン。
ここに画像の説明を挿入します

4. サポートベクトルと超平面

サポート ベクターと超平面は、サポート ベクター マシン (SVM) アルゴリズムの中核となる概念です。以下では、これら 2 つの概念について詳しく説明します。

4.1 超平面

数学では、超平面は、それが存在する空間よりも 1 次元低い線形部分空間です。たとえば、2 次元空間では超平面は直線であり、3 次元空間では平面ですが、高次元空間では依然として直線の境界ですが、直感的に理解するのは難しいかもしれません。

SVM では、超平面を使用してデータをさまざまなカテゴリに分類します。 2 次元空間の場合、超平面は空間を 2 つの部分に分割する直線として想像できます。各部分には 1 つのカテゴリのデータ ポイントが含まれます。高次元空間の場合、超平面はデータ点を分離する高次元の線形境界です。

4.2 サポートベクター

サポート ベクターは、超平面に最も近い位置にあるデータ ポイントです。これらは、超平面の位置を決定するためにトレーニング中に SVM によって使用される重要なデータ ポイントです。これらの点のいずれかを削除すると、超平面の位置と方向が変更されます。

サポート ベクターはデータ ポイント間の境界 (つまり、間隔) を定義するため重要です。 SVM の目標は、最も近いサポート ベクトル (つまり、超平面に最も近いデータ点) と超平面の間の距離 (間隔) を最大化する超平面を見つけることです。この間隔の大きさは、モデルの汎化能力を示す重要な指標です。

4.3 カーネルのトリック

実際のアプリケーションでは、データは線形に分離できない場合があります。現時点では、SVM はカーネル技術を使用して非線形問題に対処できます。カーネル関数は、元のデータを高次元空間にマッピングし、新しい空間で線形分離可能な超平面を見つけることができます。一般的に使用されるカーネル関数には、線形カーネル、多項式カーネル、動径基底関数 (RBF) カーネルなどが含まれます。

4.4 ソフトマージンと正則化

実際のデータを扱う場合、すべてのデータ ポイントを完全に分離する完璧な超平面を見つけることは不可能な場合があります。現時点で、SVM はソフト マージンの概念を導入し、汎化機能の向上と引き換えに一部のデータ ポイントの誤分類を許可しました。同時に、モデルの複雑さは、過学習を避けるために正則化項 (通常は法線ベクトルのノルム) を通じて制御されます。

ここに画像の説明を挿入します

5. SVMアルゴリズムの原理

5.1 点から超平面までの距離の式

点から超平面までの距離の公式は、点から特定の超平面までの最短距離を計算するために使用されます。超平面は、n 次元空間では次の方程式で表すことができます。
ここに画像の説明を挿入します
で:
w は、超平面に垂直な n 次元の法線ベクトルです。
x は空間にある n 次元の点です。
b は超平面のバイアス項です。
点 x からこの超平面までの垂直距離 d は、次の式で計算できます。
ここに画像の説明を挿入します
这个公式的几何意义是:从点 𝑥 向超平面作垂线,垂足到点 𝑥的距离就是𝑑这个距离也代表了点 𝑥到超平面的“间隔”。在支持向量机中,间隔的大小是非常重要的,因为它与模型的泛化能力有关。SVM的目标是找到这样一个超平面,使得间隔最大化,即所有数据点到这个超平面的距离之和最大。

5.2 最大間隔の最適化モデル

線形分離可能な場合の最適化モデル
データが線形分離可能である場合、つまり、異なるカテゴリのデータ ポイントを完全に分離できる超平面がある場合、SVM の目標は、最も近い 2 つのデータ ポイント (つまり、サポート ベクトル) が超平面に一致する超平面を見つけることです。距離を最大化します。この距離をマージンと呼びます。
超平面は次のように表現できます。
ここに画像の説明を挿入します
最大証拠金最適化問題
SVM の目的関数は間隔を最大化することであり、これは次のように表すことができます。
ここに画像の説明を挿入します
ここに画像の説明を挿入しますラグランジュ乗数の紹介
ここに画像の説明を挿入します
二重の問題
ここに画像の説明を挿入します

6. スラック変数

サポート ベクター マシン (SVM) では、スラック変数 (Slack Variables) は、データ セット内の非線形分離可能な状況に対処するために導入されたメカニズムです。理想的な状況では、データが線形分離可能であれば、SVM はマージンを最大化しながら、異なるクラスのデータ ポイントを完全に分離する超平面を見つけることができます。ただし、現実の世界では、多くのデータセットは完全に線形分離可能ではないため、スラック変数を使用して一部のデータポイントの誤分類を許容し、それによってモデルの汎化能力を向上させる必要があります。ここに画像の説明を挿入します

6.1 スラック変数の定義

ここに画像の説明を挿入します

6.2 最適化モデルの修正

ここに画像の説明を挿入します
这里的 𝐶是一个正的调节参数,用于控制模型对误分类的惩罚程度。𝐶的值越大,模型对误分类的惩罚越重,越倾向于找到没有误分类的解;𝐶的值越小,模型对误分类的容忍度越高,越容易找到间隔更大的解,即使这意味着更多的误分类。

6.3 ソフトマージンとハードマージン

  • ハード マージン: スラック変数を導入しない SVM では、すべてのデータ ポイントがマージンの外側または境界上にある必要があります。つまり、誤分類は許可されません。
  • ソフト マージン: SVM ではスラック変数が導入され、一部のデータ ポイントがマージン境界内に入ることが許可されます。つまり、ある程度の誤分類が許可されます。 カーネルのトリックとスラック変数。

6.4 カーネルのトリックとスラック変数

非線形分離可能性の場合でも、カーネル トリックを使用してデータを高次元空間にマッピングし、スラック変数と組み合わせることで、SVM は最大のマージンを持つ超平面を見つけることができます。

7. カーネル機能

カーネル関数は、サポート ベクター マシン (SVM) の重要なツールです。これにより、SVM は高次元空間での非線形問題を効果的に処理できます。カーネル関数の基本的な考え方は、マッピングを通じて元のデータを低次元空間から高次元空間にマッピングし、この高次元空間でのデータの線形分離可能性を見つけることです。
ここに画像の説明を挿入します

7.1 カーネル機能の基本概念

ここに画像の説明を挿入します

7.2 一般的に使用されるカーネル関数

ここに画像の説明を挿入します

7.3 カーネル機能の役割

  1. 非線形問題の処理: カーネル関数は、高次元空間にマッピングすることにより、低次元空間では線形分離不可能なデータを高次元空間では線形分離可能にします。
  2. モデルの表現力の向上: さまざまなカーネル関数により、データのさまざまな特性を捕捉し、モデルの表現力を向上させることができます。
  3. 計算の複雑さを軽減する: カーネル関数を使用すると、高次元空間での直接計算を回避できるため、計算の複雑さが軽減されます。