RapidMiner(ラピッドマイナー)はデータ可視化、データ加工、モデル作成、評価、運用まで一括サポートする機械学習プラットフォームです。KSKアナリティクスはRapidMinerの正規販売代理店です。

Support Vector Machine (LibSVM)

概要

この演算子はSVM(サポートベクターマシン)学習者です。 Java libSVMに基づいています。

詳細

この演算子は、Chih-Chung ChangとChih-Jen Linによる「http://www.csie.ntu.edu.tw/~cjlin/libsvm」libsvm学習者を適用します。 SVMは分類と回帰の両方に有効な方法です。この演算子は、分類タスク用のC-SVCおよびnu-SVC SVMタイプと、回帰タスク用のepsilon-SVRおよびnu-SVR SVMタイプをサポートします。さらに、分布推定のために1クラスの SVMタイプがサポートされています。 1クラスの SVMタイプでは、1つのクラスの例から学習し、後で新しい例が既知の例と一致するかどうかをテストすることができます。他のSVM学習者とは対照的に、libsvmは、内部のマルチクラス学習と、学習データを分類データセットに適用した後の適切な信頼値のPlattスケーリングに基づく確率推定をサポートします。

SVMの基本的な説明を次に示します。標準SVMは入力データのセットを取得し、指定された各入力について、2つの可能なクラスのどちらが入力を構成するかを予測し、SVMを非確率的バイナリ線形分類器にします。 2つのカテゴリのいずれかに属するとマークされたトレーニングサンプルのセットが与えられると、SVMトレーニングアルゴリズムは、新しいサンプルを1つのカテゴリに割り当てるモデルを構築します。 SVMモデルは、空間内のポイントとしての例の表現であり、個別のカテゴリの例ができるだけ広い明確なギャップで分割されるようにマップされます。次に、新しい例が同じスペースにマッピングされ、ギャップのどちら側にあるかに基づいてカテゴリに属する​​と予測されます。

より正式には、サポートベクターマシンは、高次元または無限次元の空間で超平面または超平面のセットを構築し、分類、回帰、またはその他のタスクに使用できます。直感的には、一般にマージンが大きいほど分類器の一般化誤差が小さくなるため、クラスの最も近いトレーニングデータポイントまでの距離が最も大きい超平面(いわゆる機能マージン)によって適切な分離が実現されます。元の問題は有限次元空間で述べられるかもしれないが、判別する集合はその空間で線形に分離できないことがしばしば起こる。このため、元の有限次元空間をはるかに高い次元の空間にマッピングし、おそらくその空間での分離を容易にすることが提案されました。計算負荷を合理的に保つために、SVMスキームで使用されるマッピングは、選択されたカーネル関数K(x、y)に関して定義することにより、元の空間の変数に関してドット積を簡単に計算できるように設計されています問題に合わせて。高次元空間の超平面は、その空間のベクトルとの内積が一定である点の集合として定義されます。

libsvmに関する詳細については、「http://www.csie.ntu.edu.tw/~cjlin/libsvm」をご覧ください。

入力

  • トレーニングセット (IOObject)この入力ポートには、ExampleSetが必要です。この演算子はノミナル属性を処理できません。数値属性を持つデータセットに適用できます。したがって、多くの場合、この演算子を適用する前に、Nominal to Numerical演算子を使用する必要があります。

出力

  • モデル(モデル)SVMモデルは、この出力ポートから提供されます。これで、このモデルを非表示のデータセットに適用できます。
  • サンプルセット(IOObject)入力として指定されたExampleSetは、このポートを介して出力に変更せずに渡されます。これは通常、別の演算子で同じExampleSetを再利用するため、または結果ワークスペースでExampleSetを表示するために使用されます。

パラメーター

  • svm_typeこのパラメーターを介してSVMタイプが選択されます。この演算子は、分類タスク用にC-SVCおよびnu-SVC SVMタイプをサポートします。 epsilon-SVRおよびnu-SVR SVMタイプは回帰タスク用です。 1クラスの SVMタイプは、分布推定用です。 1クラスの SVMタイプでは、1つのクラスの例から学習し、後で新しい例が既知の例と一致するかどうかをテストすることができます。 範囲:選択
  • kernel_typeカーネル関数のタイプは、このパラメーターを介して選択されます。次のカーネルタイプがサポートされています: linear、poly、rbf、sigmoid、precomputedrbfカーネルタイプはデフォルト値です。一般に、 rbfカーネルは合理的な最初の選択肢です。さまざまなカーネルタイプに関するガイドラインを次に示します。
    • rbfカーネルは、サンプルを高次元の空間に非線形にマッピングします
    • rbfカーネルは、線形カーネルとは異なり、クラスラベルと属性間の関係が非線形の場合を処理できます。
    • 線形カーネルはrbfカーネルの特殊なケースです
    • シグモイドカーネルは、特定のパラメーターに対してrbfカーネルのように動作します
    • ハイパーパラメーターの数は、モデル選択の複雑さに影響します。 polyカーネルには、rbfカーネルよりも多くのハイパーパラメーターがあります
    • rbfカーネルの数値的困難性が少ない
    • シグモイドカーネルは、一部のパラメーターでは無効です
    • rbfカーネルが適さない状況がいくつかあります。特に、特徴の数が非常に大きい場合、線形カーネルを使用するだけです。

    範囲:選択

  • degreeこのパラメーターは、 カーネルタイプパラメーターが「poly」に設定されている場合にのみ使用できます。このパラメーターは、多項式カーネル関数の次数を指定するために使用されます。 範囲:実数
  • gammaこのパラメーターは、 カーネルタイプパラメーターが ‘poly’、 ‘rbf’または ‘sigmoid’に設定されている場合にのみ使用できます。このパラメーターは、「多項式」、「rbf」、および「シグモイド」カーネル関数のガンマを指定します。 ガンマの値は、SVMモデルで重要な役割を果たしている可能性があります。 ガンマの値を変更すると、結果のSVMモデルの精度が変わる場合があります。そのため、交差検証を使用してgammaの最適値を見つけることをお勧めします。 範囲:実数
  • coef0このパラメーターは、 カーネルタイプパラメーターが「poly」または「 precomputed 」に設定されている場合にのみ使用できます。このパラメーターは、 ‘poly’および ‘precomputed’カーネル関数のcoef0を指定します。 範囲:実数
  • Cこのパラメーターは、 svm typeパラメーターが「c-SVC」、「epsilon-SVR」、または「nu-SVR」に設定されている場合にのみ使用可能です。このパラメーターは、「c-SVC」、「epsilon-SVR」、および「nu-SVR」のコストパラメーターCを指定します。 Cは、誤差項のペナルティパラメーターです。 範囲:実数
  • nuこのパラメーターは、 svm typeパラメーターが「nu-SVC」、「one-class」、および「nu-SVR」に設定されている場合にのみ使用できます。このパラメーターは、「nu-SVC」、「one-class」、および「nu-SVR」のnuパラメーターを指定します。その値は0.0から0.5の間でなければなりません。 範囲:実数
  • cache_sizeこれはエキスパートパラメータです。キャッシュサイズをメガバイト単位で指定します。 範囲:実数
  • epsilonこのパラメーターは、終了基準の許容範囲を指定します。 範囲:実数
  • pこのパラメーターは、 svm typeパラメーターが「epsilon-SVR」に設定されている場合にのみ使用できます。このパラメーターは、「epsilon-SVR」の損失関数の許容値を指定します。 範囲:実数
  • class_weightsこれはエキスパートパラメータです。すべてのクラスの重み「w」を指定します。 [ リスト編集 ]ボタンをクリックすると、2列の新しいウィンドウが開きます。最初の列はクラス名を指定し、2番目の列はそのクラスの重みを指定します。パラメーターCは、クラスの重みCを掛けて計算されます。クラスの重みが指定されていない場合、そのクラスは、 重量= 1が割り当てられます。 範囲:リスト
  • shrinkingこれはエキスパートパラメータです。縮小ヒューリスティックを使用するかどうかを指定します。 範囲:ブール
  • calculate_confidencesこのパラメーターは、適切な信頼値を計算する必要があるかどうかを示します。 範囲:ブール
  • Confidential_for_multiclassこれはエキスパートパラメータです。これは、マルチクラス設定で最も信頼度の高いクラスを選択する必要があるかどうかを示します。それ以外の場合は、1対1のすべての分類器に対してバイナリ多数決を使用します(選択したクラスは、その場合に最も信頼できるクラスであってはなりません)。 範囲:ブール

チュートリアルプロセス

rbfカーネルを使用したSVM

これは、SVM(libSVM)オペレーターで開始する簡単なプロセス例です。 Retrieveオペレーターは、「ゴルフ」データセットをロードするために使用されます。ノミナルから数値への演算子を適用して、ノミナル属性を数値形式に変換します。 SVM(libSVM)オペレーターはノミナル属性を取得できず、数値属性を使用してのみ分類できるため、この手順が必要です。 SVM(libSVM)オペレーターから生成されたモデルは、Apply Modelオペレーターを使用して「Golf-Testset」データセットに適用されます。このデータセットには、Nominal to Numerical演算子も適用されました。テストとトレーニングのデータセットは同じ形式である必要があるため、これが必要です。このモデルの統計パフォーマンスは、Performanceオペレーターを使用して測定されます。これは非常に基本的なプロセスです。この演算子を使用してより良い結果を得るには、SVM(libSVM)をより深く理解することをお勧めします。サポートベクターマシン(SVM)は、一般的な分類手法です。ただし、SVMに慣れていない初心者は、簡単ではあるが重要な手順を欠くため、満足のいく結果が得られないことがよくあります。

「m」番号を使用してmカテゴリー属性を表すことをお勧めします。 「m」番号の1つだけが1で、他は0です。たとえば、Outlook {overcast、sunny、rain}などの3つのカテゴリの属性は、(0,0,1)、(0,1 、0)、および(1,0,0)。これは、Nominal to Numerical演算子でコーディングタイプパラメータを「ダミーコーディング」に設定することで実現できます。一般に、属性の値の数が多すぎない場合、このコーディングは単一の数を使用するよりも安定している可能性があります。

この基本的なプロセスでは、この演算子から許容できる結果を得るために必要なさまざまな重要な手順が省略されました。たとえば、SVMからより正確な分類モデルを取得するには、スケーリングが推奨されます。スケーリングの主な利点は、大きな数値範囲の属性が小さな数値範囲の属性を支配することを回避することです。別の利点は、計算中の数値の問題を回避することです。カーネル値は通常、線形カーネルや多項式カーネルなどの特徴ベクトルの内積に依存するため、大きな属性値は数値の問題を引き起こす可能性があります。トレーニングとテストデータセットの両方でスケーリングを実行する必要があります。

パラメータC、ガンマ、およびイプシロンのデフォルト値を使用しました。より正確な結果を得るには、これらの値を慎重に選択する必要があります。通常、相互検証などの手法は、検討中のExampleSetのこれらのパラメーターの最適値を見つけるために使用されます。

API認証に失敗しました メールまたはパスワードが正しくありません メールアドレスは必須です パスワードは必須です
キャンセル