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.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
を持つ婚姻区分用の文字列の列は、married
とsingle
という2つの量的属性に変換されます。新規属性には、1
(真)または0
(不適切)を設定できます。
単純な(ネストしていない)データ型の列に欠損値がある場合、SVMではそれらをランダムに欠損した値として解釈します。質的データの欠損値は最頻値に、量的データの欠損値は平均値に自動的に置換されます。
ネストした列に欠損値がある場合、SVMではそれらをスパースとして解釈します。スパースな量的データは0 (ゼロ)に、スパースな質的データはゼロ・ベクトルに自動的に置換されます。
31.3.1 正規化
サポート・ベクター・マシン(SVM)での正規化によってデータを変換します。
SVMでは、量的な入力を正規化する必要があります。正規化によって、量的属性の値が同じスケール上に配置され、元の大規模なスケールを持つ属性によってソリューションに偏りがでることが回避されます。正規化はまた、オーバーフローおよびアンダーフローの可能性を最小限に抑えます。
31.4 SVM分類
サポート・ベクター・マシン(SVM)における分類は、決定境界を定義する決定面の概念に基づいています。
決定面は、異なるクラスのメンバーシップを持つオブジェクト・セット間を区別するものです。SVMは、クラスの最も広範な区切りを与えるセパレータを定義するベクター(サポート・ベクター)を検出します。
SVM分類では、2項、多クラス、多ターゲットという分類がサポートされています。多ターゲットでは、複数のクラス・ラベルを単一の行に関連付けることができます。ターゲットの型は、ORA_MINING_VARCHAR2_NT
型のコレクションです。
31.5 1クラスSVM
1クラス分類機能としてのサポート・ベクター・マシン(SVM)は、異常の検出に使用されます。
Oracle Machine Learning for SQLでは、異常検出用の1クラス分類機能としてSVMが使用されます。SVMは、異常検出に使用する場合には、分類の機械学習機能がありますが、ターゲットは使用しません。
1クラスSVMモデルは、適用時に、スコアリング・データの各ケースに対して予測および確率を生成します。予測が1の場合、そのケースは典型的とみなされます。予測が0の場合、そのケースは異常とみなされます。この動作は、モデルが標準データでトレーニングされていることを反映しています。
異常とみなすデータの割合は、SVMS_OUTLIER_RATE
構築設定で指定できます。「疑わしい」ケースの数が母集団の一定の割合であることがわかっている場合、その割合に外れ値の率を設定できます。モデルは、一般母集団への適用時に、その数の「頻度の低い」ケースをおおまかに識別します。