井出草平の研究ノート

サポートベクターマシンkernlabパッケージのtypeとclass[R]

www.rdocumentation.org

サポートベクターマシンは、分類、新奇性検出、回帰のための優れたツールである。ksvmは、ネイティブのマルチクラス分類の定式化や境界制約SVMの定式化とともに、よく知られたC-svc、ν-svc、(分類)one-class-svc(新奇性)eps-svr、ν-svr(回帰)の定式化をサポートしている。 ksvmは、クラス確率の出力と回帰の信頼区間もサポートする。

type

type パラメータは SVM をどのように適用するかを指定するために使われる。

  1. C-svc (C classification): これは通常の SVM 分類器で、二クラスまたは多クラスの分類問題に使用される。ハイパーパラメータ C を用いて誤分類のトレードオフを調整する。

  2. nu-svc (nu classification): こちらも分類器であり、C の代わりに nu パラメータを使用する。nu は訓練誤差とサポートベクタの割合の上限を表し、パラメータの設定が少し直感的ではないものの、実践的に有用である。

  3. C-bsvc (bound-constraint svm classification): これはバウンド制約付きの SVM で、データ点が正しいクラスに属する確信度を強制することができる。

  4. spoc-svc (Crammer, Singer native multi-class): これは Crammer と Singer によるネイティブの多クラス分類法で、直接多クラス問題に対応することができるため、他の一対一や一対全の方法よりも効率的である。

  5. kbb-svc (Weston, Watkins native multi-class): Weston と Watkins によるもう一つのネイティブ多クラス分類法で、spoc-svc 同様に多クラス問題に直接対応する。

  6. one-svc (novelty detection): これは新規性検出(異常検出)に使用され、データセットの主要な特性から逸脱する新しいデータポイントを特定する。

  7. eps-svr (epsilon regression): ε-SVR は回帰問題に使用され、ε の範囲内での誤差を無視することでモデルを訓練する。

  8. nu-svr (nu regression): この回帰も nu パラメータを使用し、SVR でのサポートベクタの割合と訓練誤差のバランスを取る。

  9. eps-bsvr (bound-constraint svm regression): バウンド制約付きの回帰モデルで、特定の条件下での回帰問題に対する制約を課すことができる。

これらの type の選択は、扱うデータの特性(分類、回帰、異常検出)、問題の要件、および特定の SVM の振る舞いに基づいて行われる。例えば、データがラベル付きでクラス間の明確な境界が必要な場合は C-svcnu-svc が適切であり、データが連続的な値を持つ回帰問題の場合は eps-svrnu-svr を選択される。

kernel

ksvm 関数で使用されるカーネルは、訓練および予測時にデータの内積を特徴空間で計算する機能を持っている。カーネルは、非線形のデータ構造を扱う際に特に有効であり、異なるタイプのカーネルが特定のデータセットや問題に対して適切な変換を提供する。以下は kernlab で提供されている主なカーネル関数である:

  1. rbfdot (Radial Basis kernel "Gaussian"): ガウスカーネルまたはRBFカーネルとも呼ばれる。データ点間のユークリッド距離を基にして類似度を計算する。

  2. polydot (Polynomial kernel): 多項式カーネルはデータポイント間の内積を基にして、それをある固定された次数まで累乗し、データの特徴を高次元へ射影する。

  3. vanilladot (Linear kernel): 線形カーネルは、入力された特徴の線形組み合わせのみを考慮する最も単純なカーネルである。

  4. tanhdot (Hyperbolic tangent kernel): 双曲線正接関数を用いるカーネルで、ニューラルネットワークの活性化関数と類似の性質を持つ。

  5. laplacedot (Laplacian kernel): ラプラスカーネルガウスカーネルに似ているが、急激な変化をより強く反映する。

  6. besseldot (Bessel kernel): ベッセル関数に基づくカーネルで、波動の伝播などの問題に適用可能である。

  7. anovadot (ANOVA RBF kernel): ANOVA RBF カーネルは、異なる特徴間の交互作用をモデル化することに特化しており、特に複数の特徴があるデータセットに適している。

  8. splinedot (Spline kernel): スプライン関数を基にしたカーネルで、データに滑らかな曲線をフィットさせるのに適している。

  9. stringdot (String kernel): 文字列やテキストデータに基づくカーネルで、シーケンスデータの類似度を計算する際に用いられる。

これらのカーネルは、データの特性や分析の目的に応じて選択される。たとえば、非線形の関係をモデル化する必要がある場合は RBF カーネルが適しているが、データが既に十分な特徴を持っている場合は線形カーネルが効果的である。また、テキストの類似度を評価する必要がある場合には、stringdot カーネルが使用される。

kpar: kernel parameters

ksvm 関数のカーネル関数で使用されるハイパーパラメータは、カーネルに応じて異なるパラメータを設定することができる。これらのパラメータはカーネル関数の挙動を調整し、モデルの精度や汎化能力に影響を与える。以下は、kernlab パッケージでサポートされている各カーネル関数のための有効なパラメータについての説明である:

  1. rbfdot および laplacedot (Radial Basis および Laplacian kernel):

    • sigma: カーネル幅の逆数であり、この値が小さいほどカーネルの幅が広がり、データ点が互いに影響を及ぼす距離が長くなる。
  2. polydot (Polynomial kernel):

    • degree: 多項式の次数であり、カーネルの複雑さを決定する。
    • scale: 各データポイントの内積を計算する前に乗算されるスケーリングファクター。
    • offset: 多項式カーネル計算における定数項。この値を増やすことで、より高い次元へのマッピングが強化される。
  3. tanhdot (Hyperbolic tangent kernel):

    • scale: 内積の結果に乗算される値。
    • offset: 内積の結果に加算される値。この値を調整することで、カーネル非線形性が変化する。
  4. besseldot (Bessel kernel):

    • sigma: カーネル関数の広がりを決定するパラメータ。
    • order: ベッセル関数の次数。
    • degree: データを高次元にマッピングする際の次数。
  5. anovadot (ANOVA RBF kernel):

  6. stringdot (String kernel):

    • length: 考慮される文字列の長さ。
    • lambda: カーネル計算における減衰因子。この値が大きいほど、遠くの文字間の影響が減少する。
    • normalized: カーネル評価が正規化されるかどうかを決定する論理パラメータ。正規化を行うと、異なる長さの文字列間での比較が公平になる。

これらのハイパーパラメータは、データの特性やモデリングの目的に応じて適切に調整される必要がある。適切なパラメータの設定は、モデルの学習効果と予測精度に直接的な影響を与えるため、実験を通じて最適な値を見つけることが重要である。

ides.hatenablog.com