31 サポート・ベクター・マシン

統計的学習理論に基づいた強力なアルゴリズムであるサポート・ベクター・マシン(SVM)の使用方法を学習します。

Oracle Machine Learning for SQLには、分類、回帰および異常検出についてはSVMが実装されています。

関連項目:

2005年第31回VLDB Conference (ノルウェー、トロンヘイム)会報『Support Vector Machines in Oracle Database 10g: Removing the Barriers to Widespread Adoption of Support Vector Machines』(Milenova, B.L.、Yarmus, J.S.、Campos, M.M.共著)

31.1 サポート・ベクター・マシンとは

サポート・ベクター・マシン(SVM)は、Vapnik-Chervonenkis理論に基づいた強固な理論的基礎を持つ最新の強力なアルゴリズムです。

SVMは、強力な正則化プロパティを持ちます。正則化とは、新しいデータへのモデルの一般化を指します。

31.1.1 SVMの利点

サポート・ベクター・マシン(SVM)には、スケーラビリティのためと大量のデータを処理するためにソルバーが実装されています。

Oracle Machine Learning for SQLでのSVMの実装には、内点法(IPM)ソルバーと劣勾配降下(SGD)ソルバーという2種類のソルバーがあります。IPMソルバーは、非常に安定した正確な解決策を提供しますが、非常に高いディメンション性のデータは扱えない可能性があります。テキストや評価などのディメンション性が高いデータについては、SGDソルバーをお薦めします。どちらのソルバーも、スケーラビリティの高いパラレル実装を持ち、大量のデータを処理できます。

31.1.2 Oracle Machine Learning for SQLのSVMの利点

サポート・ベクター・マシン(SVM)アルゴリズムを使用する利点について説明します。

Oracle Machine Learning for SQLにはそれ独自のSVMが実装されています。この実装では、このアルゴリズムの多くの利点が活かされており、SVMフレームワークに本来備わっている制限事項がいくらか補われています。OML4SQLのSVMでは、本番レベルのOML4SQLシステムで必要とされるスケーラビリティおよび利用性が提供されます。

31.1.2.1 利用性

Oracle Machine Learning for SQLのサポート・ベクター・マシン(SVM)の利用性について説明します。

SVMは専門家のためのツールとみなされることが多いため、利用性は主要な改良点です。このアルゴリズムでは通常、データの準備、チューニングおよび最適化が必要です。Oracle Machine Learningではこれらの要件が最小限になっています。専門的な知識がなくても、OML4SQLで良質なSVMモデルを作成できます。次に例を示します。

  • ほとんどの場合、データの準備は不要です。

  • 通常はデフォルトのチューニング・パラメータで十分です。

31.1.2.2 スケーラビリティ

サポート・ベクター・マシン(SVM)のデータのスケール方法を学習します。

非常に大規模なデータセットを扱う場合は通常、サンプリングが必要になります。ただし、Oracle Machine Learning for SQLのSVMでは、それ自体によって、必要に応じて層別サンプリングを使用してトレーニング・データのサイズが縮小されるため、サンプリングは必要ありません。

OML4SQLのSVMは非常によく最適化されています。グローバルなソリューションに対して小さなワーキング・セットを最適化することによって、モデルを増分的に作成します。モデルは、現在のワーキング・セットが収束するまでトレーニングされてから、新しいデータに適用されます。このプロセスは、収束条件が満たされるまで繰り返し続行されます。ガウス・カーネルでは、ワーキング・セットの管理にキャッシュ技術が使用されます。

31.1.3 カーネルベースの学習

サポート・ベクター・マシン(SVM)用に入力データを変換するための、カーネルベースの機能について学習します。

SVMはカーネルベースのアルゴリズムです。カーネルは、問題が解決される高次元空間に入力データを変換する関数です。カーネル関数は線形の場合も非線形の場合もあります。

Oracle Machine Learning for SQLでは、線形カーネルおよびガウス(非線形)カーネルがサポートされています。

OML4SQLでは、線形カーネル関数を使用すると、トレーニング・データ内の元の属性に関する一次方程式に還元されます。線形カーネルは、トレーニング・データ内に多数の属性が存在する場合に適しています。

ガウス・カーネル はトレーニング・データ内の各ケースを、n次元空間内の1点に変換します(ここで、nはケースの数です)。これらの点は、アルゴリズムによって同種のターゲット値を持つサブセットに分割されます。ガウス・カーネルは非線形セパレータを使用しますが、カーネル空間内では一次方程式を構築します。

注意:

Oracle Database 12cリリース2以降では、アクティブな学習は関係なくなります。アクティブな学習と類似する設定は、ODMS_SAMPLINGです。

31.2 SVMモデルのチューニング

サポート・ベクター・マシン(SVM)アルゴリズムには、データに基づいて適切な設定を自動的に選択するメカニズムが組み込まれています。

分野によっては、システムで決定された設定をオーバーライドする必要がある場合もあります。

特に指定されていなければ、回帰、分類および異常検出に関する設定を指します。

関連項目:

使用可能なモデル設定のリストと解説は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

注意:

モデル設定と同じ意味でハイパーパラメータという用語も使用されます。

31.3 SVM用のデータ準備

サポート・ベクター・マシン(SVM)では、データ準備に正規化および欠損値処理が使用されます。

SVMアルゴリズムは、量的属性に対してネイティブに作用します。SVMでは、量的属性に対してz-スコア正規化を使用します。正規化は、(ネストされていない)2次元数値列に対してのみ行われます。このアルゴリズムでは、質的データはカテゴリ値ごとに2項属性のセットとして自動的に展開されます。たとえば、値marriedまたはsingleを持つ婚姻区分用の文字列の列は、marriedsingleという2つの量的属性に変換されます。新規属性には、1 (真)または0 (不適切)を設定できます。

単純な(ネストしていない)データ型の列に欠損値がある場合、SVMではそれらをランダムに欠損した値として解釈します。質的データの欠損値は最頻値に、量的データの欠損値は平均値に自動的に置換されます。

ネストした列に欠損値がある場合、SVMではそれらをスパースとして解釈します。スパースな量的データは0 (ゼロ)に、スパースな質的データはゼロ・ベクトルに自動的に置換されます。

31.3.1 正規化

サポート・ベクター・マシン(SVM)での正規化によってデータを変換します。

SVMでは、量的な入力を正規化する必要があります。正規化によって、量的属性の値が同じスケール上に配置され、元の大規模なスケールを持つ属性によってソリューションに偏りがでることが回避されます。正規化はまた、オーバーフローおよびアンダーフローの可能性を最小限に抑えます。

31.3.2 SVMと自動データ準備

データは、手動で処理し変換することで準備するか、サポート・ベクター・マシン(SVM)の自動データ準備(ADP)を使用して準備できます。

欠損値の処理や質的データの変換はSVMアルゴリズムによって自動的に実行されますが、正規化や外れ値の検出はADPで処理するか、手動で準備する必要があります。ADPは、SVM用にmin-max正規化を実行します。

注意:

SVMでADPを使用することをお薦めします。ADPで実行される変換は、ほとんどのモデルに対して適切です。

31.4 SVM分類

サポート・ベクター・マシン(SVM)における分類は、決定境界を定義する決定面の概念に基づいています。

決定面は、異なるクラスのメンバーシップを持つオブジェクト・セット間を区別するものです。SVMは、クラスの最も広範な区切りを与えるセパレータを定義するベクター(サポート・ベクター)を検出します。

SVM分類では、2項、多クラス、多ターゲットという分類がサポートされています。多ターゲットでは、複数のクラス・ラベルを単一の行に関連付けることができます。ターゲットの型は、ORA_MINING_VARCHAR2_NT型のコレクションです。

31.4.1 クラスの重み

サポート・ベクター・マシン(SVM)においてデータにクラスの重みを実装するタイミングについて学習します。

SVM分類では、重みは、ターゲット値(クラス)の相対的な重要度を示すためのバイアス・メカニズムです。

SVMモデルは、クラス全体にわたって最良の平均予測を得るために自動的に初期化されます。ただし、トレーニング・データが実際の分布を代表していない場合は、モデルにバイアスをかけて、十分に代表されていないクラス値を補正できます。クラスの重みを増やすと、そのクラスの正しい予測子の割合が増加します。

31.5 1クラスSVM

1クラス分類機能としてのサポート・ベクター・マシン(SVM)は、異常の検出に使用されます。

Oracle Machine Learning for SQLでは、異常検出用の1クラス分類機能としてSVMが使用されます。SVMは、異常検出に使用する場合には、分類の機械学習機能がありますが、ターゲットは使用しません。

1クラスSVMモデルは、適用時に、スコアリング・データの各ケースに対して予測および確率を生成します。予測が1の場合、そのケースは典型的とみなされます。予測が0の場合、そのケースは異常とみなされます。この動作は、モデルが標準データでトレーニングされていることを反映しています。

異常とみなすデータの割合は、SVMS_OUTLIER_RATE構築設定で指定できます。「疑わしい」ケースの数が母集団の一定の割合であることがわかっている場合、その割合に外れ値の率を設定できます。モデルは、一般母集団への適用時に、その数の「頻度の低い」ケースをおおまかに識別します。

31.6 SVM回帰

サポート・ベクター・マシン(SVM)の回帰問題を解決するために、イプシロン非感受性損失関数を使用する方法について説明します。

SVMでは、回帰問題を解決するために、イプシロン非感受性損失関数が使用されます。

SVM回帰では、データ・ポイントの最大数がイプシロン幅の非感受性チューブ内に収まるような連続関数の検出が試行されます。真のターゲット値のイプシロン距離内におさまる予測は、誤差として解釈されません。

イプシロン要素は、SVM回帰用の正則化設定です。この設定によって、モデルの堅牢性と誤差のマージンのバランスがとられ、新しいデータへの最適な一般化を実現できます。