Support Vector Machine (Evolutionary)
概要
この演算子は、進化アルゴリズムを使用してSVMの二重最適化問題を解決するSVM実装です。
詳細
Support Vector Machine(Evolutionary)は、進化戦略を使用して最適化します。この演算子は、進化アルゴリズムを使用してSVMの二重最適化問題を解決するSVM実装です。多くのデータセットでは、この単純な実装は通常のSVM実装と同じくらい速くて正確であることがわかります。さらに、正の半正定ではないカーネルで学習することもでき、学習前にパラメーターCの選択を不要にする多目的学習にも使用できます。詳細については、Ingo Mierswaによる「カーネルによる進化的学習:大きなマージンの問題に対する一般的なソリューション」をご覧ください。
この演算子は、ドット、放射状、多項式、シグモイド、ANOVA、epachnenikov、ガウスの組み合わせとmultiquadricを含む様々なカーネルの種類をサポートしています。これらのカーネルタイプの説明は、パラメーターセクションに記載されています。
SVMの基本的な説明を次に示します。標準のSVMは入力データのセットを取得し、指定された各入力について、2つの可能なクラスのどちらが入力を構成するかを予測し、SVMを非確率的バイナリ線形分類器にします。 2つのカテゴリのいずれかに属するとマークされたトレーニングサンプルのセットが与えられると、SVMトレーニングアルゴリズムは、新しいサンプルを1つのカテゴリに割り当てるモデルを構築します。 SVMモデルは、空間内のポイントとしての例の表現であり、個別のカテゴリの例ができるだけ広い明確なギャップで分割されるようにマップされます。次に、新しい例が同じスペースにマッピングされ、ギャップのどちら側にあるかに基づいてカテゴリに属すると予測されます。
より正式には、サポートベクターマシンは、高次元または無限次元の空間で超平面または超平面のセットを構築し、分類、回帰、またはその他のタスクに使用できます。直感的には、一般にマージンが大きいほど分類器の一般化誤差が小さくなるため、クラスの最も近いトレーニングデータポイントまでの距離が最も大きい超平面(いわゆる機能マージン)によって適切な分離が実現されます。元の問題は有限次元空間で述べられるかもしれないが、判別する集合はその空間で線形に分離できないことがしばしば起こる。このため、元の有限次元空間をより高次元の空間にマッピングし、おそらくその空間での分離を容易にすることが提案されました。計算負荷を合理的に保つために、SVMスキームで使用されるマッピングは、カーネル関数K(x、y)で定義することにより、元の空間の変数に関してドット積を簡単に計算できるように設計されています問題に合わせて選択します。高次元空間の超平面は、その空間のベクトルとの内積が一定である点の集合として定義されます。
入力
- トレーニングセット (IOObject)この入力ポートには、ExampleSetが必要です。この演算子はノミナル属性を処理できません。数値属性を持つデータセットに適用できます。したがって、多くの場合、この演算子を適用する前に、Nominal to Numerical演算子を使用する必要があります。
出力
- モデル (モデル)SVMモデルは、この出力ポートから提供されます。これで、このモデルを非表示のデータセットに適用できます。
- サンプルセット (IOObject)入力として指定されたExampleSetは、このポートを介して出力に変更せずに渡されます。これは通常、別の演算子で同じExampleSetを再利用するため、または結果ワークスペースでExampleSetを表示するために使用されます。
パラメーター
- kernel_typeカーネル関数のタイプは、このパラメーターを介して選択されます。次のカーネルタイプがサポートされています: ドット、ラジアル、多項式、シグモイド、アノーバ、エパネニコフ、ガウスの組み合わせ、マルチクアドリック
- dot:ドットカーネルは、k(x、y)= x * yで定義されます。つまり、xとyの内積です。
- radial:ラジアルカーネルはexp(-g || xy || ^ 2)で定義されます。gはガンマで、カーネルガンマパラメーターで指定されます。調整可能なパラメーターガンマは、カーネルのパフォーマンスに大きな役割を果たしており、目前の問題に注意深く調整する必要があります。
- polynomial:多項式カーネルは、k(x、y)=(x * y + 1)^ dで定義されます。dは多項式の次数であり、カーネル次数パラメーターで指定されます。多項式カーネルは、すべてのトレーニングデータが正規化される問題に適しています。
- sigmod:シグモイドカーネルは、2層のニューラルネットtanh(ax * y + b)によって定義されます。ここで、aはアルファで、bは切片定数です。これらのパラメーターは、カーネルaおよびカーネルbパラメーターを使用して調整できます。アルファの一般的な値は1 / Nです。Nはデータ次元です。 aとbのすべての選択が有効なカーネル関数につながるわけではないことに注意してください。
- anova:anovaカーネルは、exp(-g(xy))の総和の累乗dで定義されます。ここで、gはガンマ、dは度です。ガンマと度は、それぞれカーネルガンマとカーネル度パラメーターによって調整されます。
- epachnenikov:epachnenikovカーネルは、-1〜1のuに対してこの関数(3/4)(1-u2)であり、その範囲外のuに対してゼロです。カーネルsigma1とカーネル次数の2つの調整可能なパラメーターがあります。
- gaussian_combination:これはガウスの組み合わせカーネルです。調整可能なパラメーターkernel sigma1、kernel sigma2、kernel sigma3があります。
- multiquadric:multiquadricカーネルは、|| xy || ^ 2 + c ^ 2の平方根で定義されます。調整可能なパラメーターkernel sigma1およびkernel sigma shiftがあります。
範囲:選択
- kernel_gammaこれはカーネルパラメータガンマです。これは、 カーネルタイプパラメーターが放射状またはanovaに設定されている場合にのみ使用可能です。 範囲:実数
- kernel_sigma1これはカーネルパラメーターsigma1です。これは、 カーネルタイプパラメーターがepachnenikov 、 ガウスの組み合わせまたはmultiquadricに設定されている場合にのみ使用可能です。 範囲:実数
- kernel_sigma2これはカーネルパラメーターsigma2です。これは、 カーネルタイプパラメータがガウスの組み合わせに設定されている場合にのみ使用できます。 範囲:実数
- kernel_sigma3これはカーネルパラメーターsigma3です。これは、 カーネルタイプパラメータがガウスの組み合わせに設定されている場合にのみ使用できます。 範囲:実数
- kernel_shiftこれはカーネルパラメーターシフトです。これは、 カーネルタイプパラメーターがmultiquadricに設定されている場合にのみ使用できます。 範囲:実数
- kernel_degreeこれは、カーネルパラメータの次数です。これは、 カーネルタイプパラメーターがPolynomial 、 anovaまたはepachnenikovに設定されている場合にのみ使用可能です。 範囲:実数
- kernel_aこれはカーネルパラメータaです。これは、 カーネルタイプパラメーターがsigmoid Range:realに設定されている場合にのみ使用可能です。
- kernel_bこれはカーネルパラメーターbです。これは、 カーネルタイプパラメーターがsigmoid Range:realに設定されている場合にのみ使用可能です。
- Cこれは誤分類の許容範囲を設定する複雑さの定数で、 Cの値を大きくすると「ソフトな」境界が可能になり、値を低くすると「ハードな」境界が作成されます。大きすぎる複雑度定数は、過剰適合につながる可能性がありますが、小さすぎる値は、過度に一般化される可能性があります。 範囲:実数
- epsilonこのパラメーターは、回帰SVMの回帰チューブ損失関数の幅を指定します。 範囲:
- start_population_typeこのパラメーターは、開始ポピュレーション初期化のタイプを指定します。 範囲:選択
- max_generationsこのパラメーターは、アルゴリズムを終了するまでの世代数を指定します。 範囲:整数
- generations_without_improvalこのパラメーターは、早期停止の停止基準を指定します。つまり、パフォーマンスを改善せずにn世代後に停止します。 nはこのパラメーターで指定されます。 範囲:整数
- 母集団サイズこのパラメータは、母集団のサイズ、つまり世代ごとの個体数を指定します。 -1に設定すると、すべての例が選択されます。 範囲:整数
- tournament_fractionこのパラメーターは、トーナメントメンバーとして使用される現在の人口の割合を指定します。 範囲:実数
- keep_bestこのパラメーターは、最高の個人が生き残るかどうかを指定します。これはエリート選択とも呼ばれます。次の世代に変わらない世代の最高の個人を保持することは、エリート主義またはエリート選択と呼ばれます。 範囲:ブール
- mutation_typeこのパラメーターは、突然変異演算子のタイプを指定します。 範囲:選択
- selection_typeこのパラメーターは、この進化的アルゴリズムの選択スキームを指定します。 範囲:選択
- crossover_prob個人がクロスオーバーのために選択される確率は、このパラメーターによって指定されます。 範囲:実数
- use_local_random_seedこのパラメーターは、ランダム化にローカルランダムシードを使用する必要があるかどうかを示します。同じ値のローカルランダムシードを使用すると、同じランダム化が生成されます。 範囲:ブール
- local_random_seedこのパラメータは、 ローカルランダムシードを指定します。このパラメーターは、 ローカルシードの使用パラメーターがtrueに設定されている場合にのみ使用できます。 範囲:整数
- hold_out_set_ratioこの演算子は、学習後の一般化エラーを推定するためのホールドアウトセットとしてこの量を使用します。 範囲:実数
- show_convergence_plotこのパラメーターは、収束プロットのあるダイアログを描画するかどうかを示します。 範囲:ブール
- show_population_plotこのパラメーターは、非支配的な並べ替えの場合の母集団プロットを表示するかどうかを示します。 範囲:ブール
- return_optimization_performanceこのパラメーターは、最終的な最適化の適合度をパフォーマンスとして返すかどうかを示します。 範囲:ブール
チュートリアルプロセス
Support Vector Machine(Evolutionary)オペレーターの紹介
これは、SVM(Evolutionary)オペレーターで開始する簡単なプロセス例です。 Retrieveオペレーターは、「ゴルフ」データセットをロードするために使用されます。ノミナルから数値への演算子を適用して、ノミナル属性を数値形式に変換します。 SVM(進化)演算子はノミナル属性を取ることができず、数値属性のみを使用して分類できるため、この手順が必要です。 SVM(Evolutionary)演算子から生成されたモデルは、「ゴルフテストセット」データセットに適用されます。このデータセットにも、名義から数値への演算子が適用されました。テストとトレーニングのデータセットは同じ形式である必要があるため、これが必要です。このモデルの統計パフォーマンスは、Performanceオペレーターを使用して測定されます。これは非常に基本的なプロセスです。この演算子を使用してより良い結果を得るには、SVMをより深く理解することをお勧めします。サポートベクターマシン(SVM)は、一般的な分類手法です。ただし、SVMに慣れていない初心者は、簡単ではあるが重要な手順を欠くため、満足のいく結果が得られないことがよくあります。
この演算子からより良い結果を得るには、カーネルタイプと各カーネルタイプに関連付けられたさまざまなパラメーターを十分に理解する必要があります。この例のプロセスでは、ガウス結合カーネルが使用されました。すべてのパラメーターはデフォルト値で使用されました。このモデルの精度はわずか35.71%でした。より良い結果を得るには、さまざまなパラメーターを変更してみてください。パラメーターCを0ではなく1に変更すると、モデルの精度が64.29%に上がることがわかります。したがって、パラメーターを少し変更するだけで、全体的な結果に大きな影響を与えることがわかります。したがって、使用中のカーネルタイプのパラメーターを十分に理解する必要があります。同様に、さまざまなカーネルタイプを十分に理解し、ExampleSetに最適なカーネルタイプを選択することも重要です。このサンプルプロセスで多項式カーネルを使用してみてください(パラメーターCを0に設定します)。すべてのパラメーターのデフォルト値で、精度は約64.29%であることがわかります。パラメーターCの値を0ではなく1に変更します。これにより、ガウス結合カーネルを使用したモデルの精度が向上しますが、ここではモデルの精度が低下することがわかります。
プロセスのほとんどのパラメーターにはデフォルト値が使用されました。より正確な結果を得るには、これらの値を慎重に選択する必要があります。通常、相互検証などの手法は、検討中のExampleSetのこれらのパラメーターの最適な値を見つけるために使用されます。