ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

crossval

クラス: RegressionSVM

交差検証済みのサポート ベクター マシン回帰モデル

構文

CVMdl = crossval(mdl)
CVMdl = crossval(mdl,Name,Value)

説明

CVMdl = crossval(mdl) は、学習済み SVM 回帰モデル mdl から交差検証 (分割) 済みのサポート ベクター マシン回帰モデル CVMdl を返します。

CVMdl = crossval(mdl,Name,Value) は、1 つ以上の Name,Value ペア引数で指定された追加オプションを使用して、交差検証済みのモデルを返します。

入力引数

すべて展開する

完全な学習済み SVM 回帰モデル。fitrsvm が返した RegressionSVM モデルとして指定します。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で閉じなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

交差検証分割。'CVPartition'cvpartition により作成された cvpartition 分割オブジェクトで構成されるコンマ区切りのペアとして指定します。分割オブジェクトは、交差検証のタイプと、学習セットおよび検証セットのインデックス付けを指定します。

交差検証済みモデルの作成に使用できる名前と値のペアの引数は、'CVPartition''Holdout''KFold''Leaveout' の 4 つのうちのいずれかのみです。

例: cvp = cvpartition(500,'KFold',5) を使用して、500 個の観測値に対する 5 分割交差検証について無作為な分割を作成するとします。この場合、'CVPartition',cvp を使用して交差検証済みモデルを指定できます。

ホールドアウト検定に使用されるデータの比率。'Holdout' と範囲 (0,1) のスカラー値から構成されるコンマ区切りのペアとして指定します。'Holdout',p を指定した場合、以下の手順が実行されます。

  1. p*100% のデータを無作為に選択して検証データとして確保し、残りのデータを使用してモデルに学習をさせる。

  2. コンパクトな学習済みモデルを交差検証済みモデルの Trained プロパティに格納する。

交差検証済みモデルの作成に使用できる名前と値のペアの引数は、CVPartitionHoldoutKFoldLeaveout の 4 つのうちのいずれかのみです。

例: 'Holdout',0.1

データ型: double | single

交差検証済みモデルで使用する分割数。'KFold' と 1 より大きい正の整数から構成されるコンマ区切りのペアとして指定します。'KFold',k を指定した場合、以下の手順が実行されます。

  1. データを無作為に k 個のセットに分割する。

  2. 各セットについて、そのセットを検定データとして確保し、他の k - 1 個のセットを使用してモデルに学習をさせる。

  3. k 個のコンパクトな学習済みモデルを、交差検証済みモデルの Trained プロパティに含まれている k 行 1 列の cell ベクトルのセルに格納する。

交差検証済みモデルの作成に使用できる名前と値のペアの引数は、CVPartitionHoldoutKFoldLeaveout の 4 つのうちのいずれかのみです。

例: 'KFold',5

データ型: single | double

Leave-one-out 法の交差検証のフラグ。'Leaveout''on' または 'off' で構成されるコンマ区切りのペアとして指定します。'Leaveout','on' を指定した場合、n 個の観測値 (n は、モデルの NumObservations プロパティで指定される、欠損観測値を除外した観測値の個数) のそれぞれについて以下の手順が実行されます。

  1. その観測値を検証データとして確保し、他の n - 1 個の観測値を使用してモデルに学習をさせる。

  2. n 個のコンパクトな学習済みモデルを、交差検証済みモデルの Trained プロパティに含まれている n 行 1 列の cell ベクトルのセルに格納する。

交差検証済みモデルの作成に使用できる名前と値のペアの引数は、CVPartitionHoldoutKFoldLeaveout の 4 つのうちのいずれかのみです。

例: 'Leaveout','on'

出力引数

すべて展開する

交差検証済みの SVM 回帰モデル。RegressionPartitionedSVM モデルとして返されます。

すべて展開する

この例では、crossval を使用して交差検証済みの SVM 回帰モデルを学習させる方法を示します。

この例では、UCI Machine Learning Repository にあるアワビのデータを使用します。データをダウンロードして、'abalone.data' という名前で現在のフォルダに保存します。データを table に読み込みます。

tbl = readtable('abalone.data','Filetype','text','ReadVariableNames',false);
rng default  % for reproducibility

標本データには 4177 個の観測値が含まれています。sex を除くすべての予測子変数は連続です。この変数はカテゴリカル変数で、可能な値は 'M' (雄)、'F' (雌) および 'I' (稚貝) です。目標は、物理的な測定値を使用してアワビの輪の数を予測し、年齢を決定することです。

カーネル スケールが 2.2 に等しいガウス カーネル関数を使用して SVM 回帰モデルを学習させます。データを標準化します。

mdl = fitrsvm(tbl,'Var9','KernelFunction','gaussian','KernelScale',2.2,'Standardize',true);

mdl は、学習済みの RegressionSVM 回帰モデルです。

10 分割の交差検証をモデルに対して実行します。

CVMdl = crossval(mdl)
CVMdl = 

  classreg.learning.partition.RegressionPartitionedSVM
      CrossValidatedModel: 'SVM'
           PredictorNames: {1x8 cell}
    CategoricalPredictors: 1
             ResponseName: 'Var9'
          NumObservations: 4177
                    KFold: 10
                Partition: [1x1 cvpartition]
        ResponseTransform: 'none'


  Properties, Methods

CVMdl は、RegressionPartitionedSVM 交差検証回帰モデルです。次の処理が実行されます。

1.データを同じサイズの 10 個のセットに無作為に分割します。

2.10 個のセットのうち 9 個で SVM 回帰モデルを学習させます。

3.ステップ 1 および 2 を k = 10 回繰り返します。毎回、1 個の分割が除外され、残りの 9 個について学習が行われます。

4.分割ごとに汎化統計値を結合します。

交差検証済みモデルの再代入損失を計算します。

loss = kfoldLoss(CVMdl)
loss =

    4.5712

この例では、交差検証済みの SVM 回帰モデルを学習させるためのホールドアウト比率を指定する方法を示します。

この例では、UCI Machine Learning Repository にあるアワビのデータを使用します。データをダウンロードして、'abalone.data' という名前で現在のフォルダに保存します。データを table に読み込みます。

tbl = readtable('abalone.data','Filetype','text','ReadVariableNames',false);
rng default  % for reproducibility

標本データには 4177 個の観測値が含まれています。sex を除くすべての予測子変数は連続です。この変数はカテゴリカル変数で、可能な値は 'M' (雄)、'F' (雌) および 'I' (稚貝) です。目標は、物理的な測定値を使用してアワビの輪の数を予測し、年齢を決定することです。

自動カーネル スケールのガウス カーネル関数を使用して SVM 回帰モデルを学習させます。データを標準化します。

mdl = fitrsvm(tbl,'Var9','KernelFunction','gaussian','KernelScale','auto','Standardize',true);

mdl は、学習済みの RegressionSVM 回帰モデルです。

10% のホールドアウト標本を指定して、回帰モデルを交差検証します。

CVMdl = crossval(mdl,'Holdout',0.1)
CVMdl = 

  classreg.learning.partition.RegressionPartitionedSVM
      CrossValidatedModel: 'SVM'
           PredictorNames: {1x8 cell}
    CategoricalPredictors: 1
             ResponseName: 'Var9'
          NumObservations: 4177
                    KFold: 1
                Partition: [1x1 cvpartition]
        ResponseTransform: 'none'


  Properties, Methods

CVMdlRegressionPartitionedSVM モデル オブジェクトです。

交差検証済みモデルの再代入損失を計算します。

loss = kfoldLoss(CVMdl)
loss =

    5.2499

代替方法

SMV 回帰モデルを学習させてから交差検証を行う代わりに、fitrsvm を使用して名前と値のペアの引数 'CrossVal''CVPartition''Holdout''Leaveout' または 'KFold' のいずれかを指定することにより、交差検証済みのモデルを直接作成できます。

参照

[1] Nash, W.J., T. L. Sellers, S. R. Talbot, A. J. Cawthorn, and W. B. Ford. The Population Biology of Abalone (Haliotis species) in Tasmania. I. Blacklip Abalone (H. rubra) from the North Coast and Islands of Bass Strait, Sea Fisheries Division, Technical Report No. 48, 1994.

[2] Waugh, S. Extending and benchmarking Cascade-Correlation, Ph.D. thesis, Computer Science Department, University of Tasmania, 1995.

[3] Clark, D., Z. Schreter, A. Adams. A Quantitative Comparison of Dystal and Backpropagation, submitted to the Australian Conference on Neural Networks, 1996.

[4] Lichman, M. UCI Machine Learning Repository, [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.

R2015b で導入