Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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 モデルとして指定します。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

交差検証分割。cvpartition で作成した cvpartition 分割オブジェクトとして指定します。分割オブジェクトは、交差検証のタイプと、学習セットおよび検証セットのインデックス付けを指定します。

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

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

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

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

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

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

例: 'Holdout',0.1

データ型: double | single

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

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

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

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

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

例: 'KFold',5

データ型: single | double

Leave-one-out 法の交差検証のフラグ。'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: Extensions to the Cascade-Correlation Architecture and Benchmarking of Feed-forward Supervised Artificial Neural Networks." University of Tasmania Department of Computer Science thesis, 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 で導入