3

私はMatlabを初めて使用し、Bioinformatics Toolboxのドキュメント(相互検証を使用したSVM分類)の例に従って分類の問題を処理しようとしています。

ただし、ステップ9を理解できません。

入力z=[rbf_sigma、boxconstraint]を受け取り、exp(z)の交差検定値を返す関数を設定します。

exp(z)を使用する理由は2つあります。rbf_sigmaとboxconstraintは正でなければなりません。

ほぼ指数関数的に離れたポイントを確認する必要があります。この関数ハンドルは、パラメーターで交差検定を計算します

exp([rbf_sigma,boxconstraint]):
minfn = @(z)crossval('mcr',cdata,grp,'Predfun', ...
    @(xtrain,ytrain,xtest)crossfun(xtrain,ytrain,...
    xtest,exp(z(1)),exp(z(2))),'partition',c);

ここで実装する必要のある機能は何ですか?それexpですかminfn?このセクションのコードを教えていただければ幸いです。ありがとう。

4

2 に答える 2

3

exp([rbf_sigma、boxconstraint])と表示されている場合の意味を知りたい

  1. rbf_sigma:svmはガウスカーネルを使用しています。rbf_sigmaはカーネルの標準偏差(〜size)を設定します。カーネルがどのように機能するかを理解するために、SVMはすべてのサンプルの周りにカーネルを配置しています(すべてのサンプルの周りにガウス分布があるように)。次に、各カテゴリ/タイプのサンプルのカーネルが合計(合計)されます。それぞれの時点で、合計が高いタイプが「勝者」になります。たとえば、タイプAのポイントXでこれらのカーネルの合計が高い場合、ポイントXで分類する新しいデータがある場合、タイプAとして分類されます(実際のしきい値を変更する可能性のある他の構成パラメーターがあります。カテゴリが別のカテゴリよりも選択されている)

赤いサンプルのガウスカーネルを合計することで、その方法を確認できます。

図。あなたが私たちに与えたウェブページからこの図を分析してください。赤いサンプル「sumA」と緑のサンプル「sumB」のガウスカーネルを合計することで、その方法を確認できます。図の中央部分でsumA>sumBであるのは論理的です。画像の外側でsumB>sumAであることも論理的です。

  1. boxconstraint:誤分類されたデータに対するコスト/ペナルティです。分類器のトレーニング段階では、トレーニングデータを使用してSVMパラメーターを調整しますが、トレーニングアルゴリズムはエラー関数を使用して、SVMパラメーターを繰り返し最適化する方法を決定します。誤分類されたサンプルのコストは、正しく分類されたはずの境界からどれだけ離れているかに比例します。私が取り付けている図では、境界は内側の青い円周です。

BGreeneの兆候を考慮し、チュートリアルについて私が理解していることから:

  1. チュートリアルでは、指数関数的に離れているrbf_sigmaとboxconstraintの値を試すようにアドバイスしています。これは、{0.2、2、20、...}のような値を比較する必要があることを意味します(これは{2 * 10 ^(i-2)、i = 1,2,3、...}であることに注意してください)。 {0.2、0.3、0.4、0.5}(直線的に離れている)とは異なります。彼らは、最初に幅広い値を試すようにこれをアドバイスします。以前に取得した最初の最適値から、後でさらに最適化できます。
  2. コマンド"[searchminfval] = fminsearch(minfn、randn(2,1)、opts)"は、rbf_sigmaとboxconstraintの最適値を返します。おそらく、exp(z)を使用する必要があります。これは、fminsearchが最適値の検索中にz(1)とz(2)の値をインクリメントする方法に影響を与えるためです。@minfnの定義にexp(z(1))を入れると、fminsearchは「指数関数的に」大きなステップを踏むと思います。
  3. 機械学習では、データにはトレーニングデータ、相互検証データ、テストデータの3つのサブセットがあることを常に理解するようにしてください。トレーニングセットは、rbf_sigmaおよびboxconstraintの各値に対してSVM分類器のパラメーターを最適化するために使用されます。次に、交差検定セットを使用して、パラメーターrbf_sigmaおよびboxconstraintの最適値を選択します。そして最後に、テストデータを使用して分類器のパフォーマンスのアイデアを取得します(分類器の効率はテストセットに基づいて決定されます)。
  4. したがって、10000のサンプルから開始する場合は、たとえば、トレーニング(50%)、クロス検証(25%)、テスト(25%)としてデータを分割できます。トレーニングセット用にランダムに5000サンプルをサンプリングし、次に交差検定セット用に残りの5000サンプルから2500サンプルをサンプリングし、残りのサンプル(つまり、2500)をテストセット用に分離します。

私はあなたの疑問を明らかにすることができれば幸いです。ちなみに、分類器と機械学習アルゴリズムのパラメーターの最適化に興味がある場合は、この無料コース-> www.ml-class.orgに従うことを強くお勧めします(本当に素晴らしいです)。

于 2012-10-11T19:12:34.707 に答える
2

と呼ばれる関数を実装する必要がありますcrossfun(例を参照)。関数ハンドルは最小化するために minfn渡されます。分類エラーを最小限に抑えるために最適化される量です。fminsearchexp([rbf_sigma,boxconstraint])

この関数ハンドル内にネストされた関数がいくつかあります。-crossvalパーティションcを使用した相互検証に基づいて分類エラーを生成していますcrossfun---SVMを使用してデータを分類しfminsearchます--SVMハイパーパラメーターを最適化して分類エラーを最小限に抑えます

お役に立てれば

于 2012-10-11T09:28:48.780 に答える