主要内容

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

crossval

交差検証を使用した損失の推定

説明

犯错= crossval (标准Xy“Predfun”,predfunは,指定された标准,すなわmse的(平均二乗誤差)または“硕士”(誤分類率)のいずれかに基づいて,関数predfunに対する10分割交差検証の誤差推定値を返します。Xyの行は観測値に,Xの列は予測子変数に対応します。

詳細は,Predfunの一般的な交差検証手順を参照してください。

犯错= crossval (标准X1、……XN,y“Predfun”,predfunは,予測子変数X1XNおよび応答変数yを使用して,predfunに対する10分割交差検証の誤差推定値を返します。

= crossval (有趣的Xは,関数有趣的X内のデタに適用して10分割交差検証を実行します。Xの行は観測値に,Xの列は変数に対応します。

詳細は,好玩の一般的な交差検証手順を参照してください。

= crossval (有趣的X1、……XN)は,関数有趣的X1,…,XN内のデタに適用して10分割交差検証を実行します。各デタセット(X1XN)の観測値の個数は同じでなければなりません。したがって,行数も同じでなければなりません。

___= crossval (___名称,值では,前の構文におけるいずれかの入力引数の組み合わせと出力引数に加えて,1つ以上の名前と値のペアの引数を使用して交差検証のオプションを指定します。たとえば,“KFold”,5は5分割交差検証を実行するよう指定します。

すべて折りたたむ

10分割交差検証を使用し,回帰モデルの平均二乗誤差を計算します。

carsmallデ,タセットを読み込みます。加速度,馬力,重量,ガロンあたりの走行マaaplル数(mpg)の値を行列数据に格納します。値が含まれている行を削除します。

负载carsmalldata =[加速度、马力、重量MPG];Data (any(isnan(Data),2),:) = [];

数据の最後の列(英里/加仑に対応)をyの応答変数として指定します。数据のそれ以外の列を予測子デ,タXとして指定します。回帰関数が回归を使用する場合,この例のように,値が1の列をXに追加します。

メモ:回归は,回帰モデルの係数推定値または残差が必要な場合に便利です。あてはめた回帰モデルをさらに調べる必要がある場合は,fitlmを使用して線形回帰モデルオブジェクトを作成します。fitlmcrossvalを使用する例にいては,交差検証を使用した平均絶対誤差の計算を参照してください。

Y = data(:,4);X = [ones(length(y),1) data(:,1:3)];

カスタム関数regf(この例の終わりに掲載)を作成します。この関数は,学習デ,タに回帰モデルをあてはめ,検定セットで予測値を計算します。

メモ:この例のラ▪▪ブスクリプトファ▪▪ルを使用している場合,関数regfは既にファ@ @ルの終わりに含まれています。それ以外の場合は,この関数をmファイルの終わりに作成するか,MATLAB®パス上のファイルとして追加する必要があります。

予測子デ,タXと応答変数yを使用し,回帰モデルに対する既定の10分割交差検証の平均二乗誤差を計算します。

rng (“默认”%用于再现性cvMSE = crossval(mse的, X, y,“Predfun”@regf)
cvMSE = 17.5399

次のコ,ドは,関数regfを作成します。

函数yfit = regf(Xtrain,ytrain,Xtest) b =回归(ytrain,Xtrain);yfit = Xtest*b;结束

10分割交差検証を使用して,数値データとカテゴリカル予測子データで学習させたロジスティック回帰モデルの分類誤差を計算します。

病人デ,タセットを読み込みます。予測子として,数値変数舒张压收缩压,およびカテゴリカル変数性别を指定し,応答変数として吸烟者を指定します。

负载病人X1 =舒张期;X2 =分类(性别);X3 =收缩期;y =吸烟者;

カスタム関数classf(この例の終わりに掲載)を作成します。この関数は,学習デ,タにロジスティック回帰モデルをあてはめ,検定デ,タを分類します。

メモ:この例のラ▪▪ブスクリプトファ▪▪ルを使用している場合,関数classfは既にファ@ @ルの終わりに含まれています。それ以外の場合は,この関数をmファイルの終わりに作成するか,MATLAB®パス上のファイルとして追加する必要があります。

予測子デ,タX1X2X3,および応答変数yを使用して,このモデルに対する10分割交差検証の分類誤差を計算します。学習セットと検定セットで必ず喫煙者の比率がほぼ同じになるように,“分层”,yを指定します。

rng (“默认”%用于再现性Err = crossval(“宏”, X1, X2, X3, y,“Predfun”@classf,“分层”, y)
Err = 0.1100

次のコ,ドは,関数classfを作成します。

函数pred = classf(X1train,X2train,X3train,ytrain,X1test,X2test,X3test,X3test)...“VariableNames”, {舒张压的“性别”“收缩”“抽烟”});Xtest = table(X1test,X2test,X3test,...“VariableNames”, {舒张压的“性别”“收缩”});modelspec =“吸烟者~舒张期+性别+收缩期”;mdl = fitglm(Xtrain,modelspec,“分布”“二”);yfit = predict(mdl,Xtest);Pred = (yfit > 0.5);结束

与えられた数のクラスターについて,観測値とそれに最も近いクラスターの中心との間の,交差検証された距離の二乗和を計算します。1 ~ 10個のクラスタにいて,結果を比較します。

fisheririsデ,タセットを読み込みます。Xは,150種類の花にいての花の測定値が格納された行列です。

负载fisheririsX = meas;

カスタム関数clustf(この例の終わりに掲載)を作成します。この関数は以下の手順を実行します。

  1. 学習デ,タを標準化します。

  2. 学習デ,タをk個のクラスタ,に分割します。

  3. 学習デ,タの平均と標準偏差を使用して,検定デ,タを変換します。

  4. 各検定デ,タ点とそれに最も近いクラスタ,の中心(重心)との距離を計算します。

  5. 距離の二乗和を計算します。

メモ:この例のラ▪▪ブスクリプトファ▪▪ルを使用している場合,関数clustfは既にファ@ @ルの終わりに含まれています。それ以外の場合は,この関数をmファイルの終わりに作成するか,MATLAB®パス上のファイルとして追加する必要があります。

各反復でクラスタ,数kを指定するル,プを作成します。決められた各クラスタ数にいて,対応する関数clustfcrossvalに渡します。crossvalは,既定で10分割交差検証を実行するため,ソフトウェアは10個の距離の二乗和を計算します(各平方和は学習データと検定データの各分割に対応します)。これらの値を合計します。これが,所定の数のクラスタ,に,いての交差検証された距離の二乗和です。

rng (“默认”%用于再现性Cvdist = 0 (5,1);fun = @(Xtrain,Xtest)clustf(Xtrain,Xtest,k);距离= crossval(fun,X);Cvdist (k) = sum(距离);结束

各クラスタ数にいて,交差検証された距離の二乗和をプロットします。

情节(cvdist)包含(“簇数”) ylabel (CV距离平方和

图中包含一个轴。坐标轴包含一个line类型的对象。

通常は,使用するクラスターの数を決定する場合,交差検証された距離の二乗和が大幅な減少を示すクラスター数のうち最も数が大きいものを使用することを検討してください。この例の場合2つか3つのクラスターの使用が適切と考えられますが,3つを超えるクラスターの使用は適切と考えられません。

次のコ,ドは,関数clustfを作成します。

函数距离= clustf(Xtrain,Xtest,k) [Ztrain,Zmean,Zstd] = zscore(Xtrain);[~,C] = kmeans(Ztrain,k);%创建k个集群Ztest = (Xtest-Zmean)./Zstd;d = pdist2(C,Ztest,“欧几里得”“最小”1);距离= sum(d.^2);结束

10分割交差検証を使用して,回帰モデルの平均絶対誤差を計算します。

carsmallデ,タセットを読み込みます。予測子として変数加速度位移を指定し,応答として変数重量を指定します。

负载carsmallX1 =加速度;X2 =位移;y =重量;

カスタム関数regf(この例の終わりに掲載)を作成します。この関数は,学習デ,タに回帰モデルをあてはめ,検定セットで車両の重量を計算します。この関数は,車両の予測重量と真の値を比較して,平均絶対誤差(MAE)と検定セットの車両の重量の範囲に調整された美を計算します。

メモ:この例のラ▪▪ブスクリプトファ▪▪ルを使用している場合,関数regfは既にファ@ @ルの終わりに含まれています。それ以外の場合は,この関数をmファイルの終わりに作成するか,MATLAB®パス上のファイルとして追加する必要があります。

既定では,crossvalは10分割交差検証を実行します。X1X2,およびyに含まれるデタから得られた学習セットと検定セットの10個の分割のそれぞれにいて,関数regfを使用してmaeと調整済みmaeの値を計算します。美の平均値と調整済み美の平均値を求めます。

rng (“默认”%用于再现性values = crossval(@regf,X1,X2,y)
值=10×2319.2261 0.1132 342.3722 0.1240 214.3735 0.0902 174.7247 0.1128 189.4835 0.0832 249.4359 0.1003 194.4210 0.0845 348.7437 0.1700 283.1761 0.1187 210.7444 0.1325
意思是(值)
ans =1×2252.6701 - 0.1129

次のコ,ドは,関数regfを作成します。

函数errors = regf(X1train,X2train,ytrain,X1test,X2test,ytest) tbltrain = table(X1train,X2train,ytrain,...“VariableNames”, {“加速”“位移”“重量”});tbltest = table(X1test,X2test,ytest,...“VariableNames”, {“加速”“位移”“重量”});MDL = fitlm(tbltrain,“重量~加速度+位移”);Yfit = predict(mdl,tbltest);MAE =均值(abs(yfit-tbltest.Weight));adjMAE = MAE/range(tbltest.Weight);errors = [MAE adjMAE];结束

主成分分析(pca)と5分割交差検証を使用して,分類木の分類誤差を計算します。

fisheririsデ,タセットを読み込みます。には,150種類の花にいての花の測定値が格納されています。変数物种には,それぞれの花の種類がリストされています。

负载fisheriris

カスタム関数classf(この例の終わりに掲載)を作成します。この関数は,学習デ,タに分類木をあてはめ,検定デ,タを分類します。関数の内部では PCA を使用し、ツリー モデルの作成に使用する予測子の数を減らします。

メモ:この例のラ▪▪ブスクリプトファ▪▪ルを使用している場合,関数classfは既にファ@ @ルの終わりに含まれています。それ以外の場合は,この関数をmファイルの終わりに作成するか,MATLAB®パス上のファイルとして追加する必要があります。

層化5分割交差検証用に,cvpartitionオブジェクトを作成します。既定では,cvpartitionにより,学習セットと検定セットで花の種類の比率がほぼ同じになることが保証されます。

rng (“默认”%用于再现性CVP = cvpartition(species,“KFold”5);

予測子デ,タおよび応答変数物种を使用して,この分類木に対する5分割交差検証の分類誤差を計算します。

cvError = crossval(“宏”量,物种,“Predfun”@classf,“分区”本量利)
cvError = 0.1067

次のコ,ドは,関数classfを作成します。

函数yfit = classf(Xtrain,ytrain,Xtest)标准化训练预测数据。然后,找到为标准化训练预测因子的主成分%的数据。[Ztrain,Zmean,Zstd] = zscore(Xtrain);[coeff,scoreTrain,~,~,explained,mu] = pca(Ztrain);找出最小数量的主成分%,至少95%的可变性。N = find(cumsum(explained)>=95,1);找到标准化的n个主成分分数%训练预测器数据。训练一个分类树模型%仅使用这些分数。scoreTrain95 = scoreTrain(:,1:n);mdl = fitctree(scoreTrain95,ytrain);找出转换后的n个主成分得分%测试数据。分类测试数据。Ztest = (Xtest-Zmean)./Zstd;scoreTest95 = (Ztest-mu)*coeff(:,1:n);yfit = predict(mdl,scoreTest95);结束

判別分析モデルの10分割交差検証結果から,混同行列を作成します。

メモ:学習速度が重要となる場合は分类を使用します。そうでない場合はfitcdiscrを使用して判別分析モデルを作成します。この例と同じワ,クフロ,でfitcdiscrを使用する例にいては,交差検証予測を使用した混同行列の作成を参照してください。

fisheririsデ,タセットを読み込みます。Xは150種類の花にいての花の測定値を格納し,yはそれぞれの花の種類をリストします。花の種類の順序を指定する変数订单を作成します。

负载fisheririsX = meas;Y =物种;顺序=唯一(y)
订单=3 x1细胞{'setosa'} {'versicolor'} {'virginica'}

以下の手順を実行する関数用に,函数という名前の関数ハンドルを作成します。

  • 学習デタ(Xtrainおよびytrain)と検定デ,タ(Xtestおよび欧美)を取り込む。

  • 学習デ,タを使用して,新しいデ,タ(Xtest)を分類する判別分析モデルを作成する。このモデルを作成し,関数分类を使用して新しいデ,タを分類する。

  • 真の検定デタクラス(欧美)と予測された検定デ,タ値を比較し,関数confusionmatを使用してこの比較結果の混同行列を作成する。“秩序”,秩序を使用してクラスの順序を指定する。

func = @(Xtrain,ytrain,Xtest,ytest)...分类(Xtest Xtrain ytrain),“秩序”、订单);

層化10分割交差検証用に,cvpartitionオブジェクトを作成します。既定では,cvpartitionにより,学習セットと検定セットで花の種類の比率がほぼ同じになることが保証されます。

rng (“默认”%用于再现性CVP = cvpartition(y,“Kfold”10);

予測子デ,タXと応答変数yの各分割にいて,10個の検定セットの混同行列を計算します。confMatの各行は,1の検定セットから得られた混同行列に対応します。結果を集計し,最終結果の混同行列cvMatを作成します。

confMat = crossval(func,X,y,“分区”、本量利);cvMat =重塑(sum(confMat),3,3)
cvMat =3×350 0 0 0 48 2 0 1 49

confusionchartを使用して,混同行列を混同行列チャ,トとしてプロットします。

confusionchart (cvMat顺序)

图包含一个confusimatrixchart类型的对象。

入力引数

すべて折りたたむ

誤差推定値のタ@ @プ。mse的または“宏”のいずれかとして指定します。

説明
mse的 平均二乗誤差(mse) -回帰アルゴリズムにのみ適しています。
“宏” 誤分類率(誤分類された観測値の比率)-分類アルゴリズムにのみ適しています。

デ,タセット。列ベクトル、行列、または配列として指定します。Xの行は観測値に対応し,Xの列は一般に変数と対応します。複数のデ,タセットX1,…,XNcrossvalに渡す場合,すべてのデ,タセットの行数は同じでなければなりません。

デ,タ型:||逻辑|字符|字符串|细胞|分类

応答デ,タ。列ベクトルまたは文字配列として指定します。yの行は観測値に対応します。yの行数は,予測子デ,タXまたはX1,…,XNと同じでなければなりません。

デ,タ型:||逻辑|字符|字符串|细胞|分类

予測関数。関数ハンドルとして指定します。この関数は、無名関数、残りのコードが格納されている .m ファイルまたは .mlx ファイルの末尾で定義される関数、または MATLAB®パス上のファ@ @ルとして作成しなければなりません。

次の表は,crossvalに渡される予測子デ,タのタ,いて説明しています。

予測子デ,タ 関数の構文
@myfunction X

函数yfit = myfunction(Xtrain,ytrain,Xtest) %计算预测响应…结束

  • Xtrain-学習の予測子デタとして使用される,Xの観測値のサブセット。関数は,Xtrainytrainを使用して分類モデルまたは回帰モデルを構築します。

  • ytrain-学習の応答デタとして使用される,yの応答のサブセット。ytrainの行は,Xtrainの行の同じ観測値に対応します。関数は,Xtrainytrainを使用して分類モデルまたは回帰モデルを構築します。

  • Xtest-検定の予測子デタとして使用される,Xの観測値のサブセット。関数は,Xtestと,Xtrainおよびytrainで学習させたモデルを使用して,予測値yfitを計算します。

  • yfit- - - - - -Xtestの観測値に対する予測値のセット。yfitの値は,Xtestと同じ行数をも列ベクトルを形成します。

@myfunction X1,…,XN

function yfit = myfunction(X1train,…,XNtrain,ytrain,X1test,…,XNtest) %计算预测响应…结束

  • X1train,…,XNtrain-学習の予測子デタとして使用される,X1,…,XNの予測子デ,タの各サブセット。X1train,…,XNtrainの行は,同じ観測値に対応します。関数は,X1train,…,XNtrainytrainを使用して分類モデルまたは回帰モデルを構築します。

  • ytrain-学習の応答デタとして使用される,yの応答のサブセット。ytrainの行は,X1train,…,XNtrainの行の同じ観測値に対応します。関数は,X1train,…,XNtrainytrainを使用して分類モデルまたは回帰モデルを構築します。

  • X1test,…,XNtest-検定の予測子デタとして使用される,X1,…,XNの観測値の各サブセット。X1test,…,XNtestの行は,同じ観測値に対応します。関数は,X1test,…,XNtestと,X1train,…,XNtrainおよびytrainで学習させたモデルを使用して,予測値yfitを計算します。

  • yfit- - - - - -X1test,…,XNtestの観測値に対する予測値のセット。yfitの値は,X1test,…,XNtestと同じ行数をも列ベクトルを形成します。

例:@ (Xtrain ytrain Xtest) (Xtest *回归(ytrain Xtrain));

デ,タ型:function_handle

交差検証する関数。関数ハンドルとして指定します。この関数は、無名関数、残りのコードが格納されている .m ファイルまたは .mlx ファイルの末尾で定義される関数、または MATLAB パス上のファイルとして作成しなければなりません。

次の表は,crossvalに渡されるデ,タのタ,いて説明しています。

デタ 関数の構文
@myfunction X

函数值= myfunction(Xtrain,Xtest) %结束

  • Xtrain-学習デタとして使用される,Xの観測値のサブセット。関数は,Xtrainを使用してモデルを構築します。

  • Xtest-検定デタとして使用される,Xの観測値のサブセット。関数は,Xtestと,Xtrainで学習させたモデルを使用して,价值を計算します。

  • 价值-量または変数。ほとんどの場合,价值は推定損失を表す数値スカラ,です。学習デ,タと検定デ,タの各分割の配列サ,价值が配列となります。デタの分割に応じてサイズ変更可能な変数输出を返したい場合は,价值の代わりにcellスカラ{输出}を設定します。

@myfunction X1,…,XN

function value = myfunction(X1train,…,XNtrain,X1test,…,XNtest) %结束

  • X1train,…,XNtrain-学習デタとして使用される,X1,…,XNのデ,タの各サブセット。X1train,…,XNtrainの行は,同じ観測値に対応します。関数は,X1train,…,XNtrainを使用してモデルを構築します。

  • X1test,…,XNtest-検定デタとして使用される,X1,…,XNのデ,タの各サブセット。X1test,…,XNtestの行は,同じ観測値に対応します。関数は,X1test,…,XNtestと,X1train,…,XNtrainで学習させたモデルを使用して,价值を計算します。

  • 价值-量または変数。ほとんどの場合,价值は推定損失を表す数値スカラ,です。学習デ,タと検定デ,タの各分割の配列サ,价值が配列となります。デタの分割に応じてサイズ変更可能な変数输出を返したい場合は,价值の代わりにcellスカラ{输出}を設定します。

デ,タ型:function_handle

名前と値のペアの引数

オプションの名称,值引数のコンマ区切りペアを指定します。的名字は引数名で,价值は対応する値です。的名字は引用符で囲まなければなりません。Name1, Value1,…,的家のように,複数の名前と値のペアの引数を,任意の順番で指定できます。

例:crossval (mcr的量,物种,Predfun, @classf, KFold, 5,“分层”,物种)は,予測子デ,タと応答変数物种を使用して関数classfの層化5分割交差検証の誤分類率を計算するよう指定します。

ホ,ルドアウト検証に使用される観測値の比率または数。“坚持”と範囲(0,1)のスカラー値(または正の整数スカラー値)から構成されるコンマ区切りのペアとして指定します。

  • 坚持の値pが範囲(0,1)のスカラ値である場合,crossvalは,観測値の約p * 100%を無作為に選択して検定デタとして確保します。

  • 坚持の値pが正の整数スカラ,値である場合,crossvalは,p個の観測値を無作為に選択して検定デ,タとして確保します。

どらの場合も,crossvalは,残りのデ,タを使用して有趣的またはpredfunで指定されたモデルに学習させます。最終的に,この関数は,検定デ,タと学習済みのモデルを使用して,または犯错を計算します。

名前と値のペアの4の引数(坚持KFoldLeaveout,および分区)のう,いずれか1。

例:“坚持”,0.3

例:“坚持”,50岁

デ,タ型:|

K分割交差検証の分割数。“KFold”および1より大きい正の整数スカラ,から構成されるコンマ区切りのペアとして指定します。

KFold, kを指定した場合,crossvalはデ,タを無作為にk個のセットに分割します。関数は,各セットについて、そのセットを検定データとして確保し、それ以外のk- 1個のセットを使用して有趣的またはpredfunで指定されたモデルに学習させます。その後,crossvalは,検定デ,タと学習済みモデルを使用して,または犯错を計算します。

名前と値のペアの4の引数(坚持KFoldLeaveout,および分区)のう,いずれか1。

例:“KFold”,5

デ,タ型:|

放过一个交差検証。“Leaveout”および1から構成されるコンマ区切りのペアとして指定します。

“Leaveout”,1を指定した場合,各観測値にいて,crossvalはその観測値を検定デ,タとして確保し,それ以外の観測値を使用して有趣的またはpredfunで指定されたモデルに学習させます。その後,この関数は、検定観測値と学習済みのモデルを使用して、または犯错を計算します。

名前と値のペアの4の引数(坚持KFoldLeaveout,および分区)のう,いずれか1。

例:“Leaveout”,1

デ,タ型:|

検証用のモンテカルロ反復回数。“MCReps”と正の整数スカラ,から構成されるコンマ区切りのペアとして指定します。crossvalの最初の入力がmse的または“宏”である場合(标准を参照),crossvalはすべてのモンテカルロ反復におけるmseまたは誤分類率の平均を返します。それ以外の場合,crossvalは,1番目の次元に沿ったすべてのモンテカルロ反復の値を連結します。

分区MCRepsの両方を指定した場合,最初のモンテカルロ反復では,cvpartitionオブジェクト内に含まれる分割情報が使用され,残りの各反復で新しい分割を作成するときに,ソフトウェアによってオブジェクト関数重新分区が呼び出されます。

例:“MCReps”,5

デ,タ型:|

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

crossvalを使用する場合,分区分层の両方を指定することはできません。cvpartition分割オブジェクトを作成する場合は,代わりに層化区分を直接指定します。

名前と値のペアの4の引数(坚持KFoldLeaveout,および分区)のう,いずれか1。

階層化に使用するグル,プを指定する変数。“分层”と,デ,タXまたはX1,…,XNと同じ行数の列ベクトルから構成されるコンマ区切りのペアとして指定します。

分层を指定した場合,学習セットと検定セットはどらも,クラスの比率が分层とほぼ同じになります。分层内の,空の文字ベクトル,空の字符串,< >失踪値,および<定义>値はソフトウェアによって欠損デ,タとして扱われ,デ,タの対応する行は無視されます。

分類アルゴリズムを使用して交差検証を行う場合は,階層化を使用することをお勧めします。それ以外の場合,検定セットによってはクラスの観測値がすべて含まれないことがあります。

crossvalを使用する場合,分区分层の両方を指定することはできません。cvpartition分割オブジェクトを作成する場合は,代わりに層化区分を直接指定します。

デ,タ型:||逻辑|字符串|细胞|分类

並列計算と乱数ストリ,ム設定のオプション。構造体として指定します。statsetを使用して选项構造体を作成します。次の表は,オプションのフィールドとその値の一覧です。

フィ,ルド名 既定の設定
UseParallel 並列計算を行う場合は,この値を真正的に設定します。
UseSubstreams

再生可能な方法で並列計算する場合は,この値を真正的に設定します。

再現性のある計算を行うには,をサブストリムを許可する型(“mlfg6331_64”または“mrg32k3a”)に設定します。

RandStreamオブジェクトまたはそのようなオブジェクトで構成されるcell配列としてこの値を指定します。 を指定しなかった場合,crossvalは既定のストリ,ムを使用します。

メモ

並列計算を行うには,并行计算工具箱™が必要です。

例:“选项”,statset (UseParallel,真的)

デ,タ型:结构体

出力引数

すべて折りたたむ

平均二乗誤差または誤分類率。数値スカラとして返されます。誤差のタイプは标准の値によって異なります。

損失値。列ベクトルまたは行列として返されます。の各行は、学習デ、タと検定デ、タの1の分割に対する有趣的の出力に対応します。

有趣的によって返される出力が多次元の場合,crossvalは,の1の行に収まるように出力の形状を変更します。たとえば,交差検証を使用した混同行列の作成を参照してください。

ヒント

  • 分類アルゴリズムを使用して交差検証を行う場合は、階層化(分层を参照)を使用することをお勧めします。それ以外の場合,検定セットによってはクラスの観測値がすべて含まれないことがあります。

アルゴリズム

すべて折りたたむ

predfunの一般的な交差検証手順

predfunを使用する場合,関数crossvalは,通常,次のように10分割交差検証を実行します。

  1. 予測子デ,タXと応答変数yに含まれる観測値を,各グル,プの観測値の数がほぼ同じになるように10個のグル,プに分割します。

  2. 最後の9の観測値グルプを使用し,predfunの指定に従ってモデルの学習を実行します。最初の観測値グル,プを検定デ,タとして使用します。この検定の予測子デ,タを学習済みのモデルに渡し,predfunの指定に従って予測値を計算します。标准で指定された誤差を計算します。

  3. 最初の観測値グルプと最後の8の観測値グルプを使用し,predfunの指定に従ってモデルの学習を実行します。2番目の観測値グルプを検定デタとして使用します。この検定デ,タを学習済みのモデルに渡し,predfunの指定に従って予測値を計算します。标准で指定された誤差を計算します。

  4. すべての観測値グル,プが検定デ,タとして1回のみ使用されるように,同様の方法で処理を行います。

  5. スカラ,の犯错として平均誤差推定値を返します。

有趣的の一般的な交差検証手順

有趣的を使用する場合,関数crossvalは,通常,次のように10分割交差検証を実行します。

  1. Xに含まれるデ,タを,各グル,プの観測値の数がほぼ同じになるように10個のグル,プに分割します。

  2. 最後の9のデタグルプを使用し,有趣的の指定に従ってモデルの学習を実行します。最初のデ,タグル,プを検定セットとして使用します。この検定セットを学習済みのモデルに渡し,有趣的の指定に従って値(損失など)を計算します。

  3. 最初のデタグルプと最後の8のデタグルプを使用し,有趣的の指定に従ってモデルの学習を実行します。2番目のデタグルプを検定セットとして使用します。この検定セットを学習済みのモデルに渡し,有趣的の指定に従って同じ値を計算します。

  4. すべてのデータグループが検定セットとして1回のみ使用されるように,同様の方法で処理を行います。

  5. 計算された10個の値をベクトルとして返します。

代替機能

多くの分類関数や回帰関数では,交差検証を直接実行できます。

  • fitcsvmfitctree,およびfitrtreeなどの近似関数を使用する場合,名前と値のペアの引数を使用して交差検証のオプションを指定できます。または,これらの近似関数を使用してモデルをまず作成した後,オブジェクト関数crossvalを使用して,分割オブジェクトを作成することもできます。オブジェクト関数kfoldLosskfoldPredictを使用して,分割オブジェクトの損失値と予測値を計算します。詳細にいては,ClassificationPartitionedModelRegressionPartitionedModelを参照してください。

  • 套索lassoglmを使用して套索または弹性网正則化を実行するときに,交差検証オプションを指定することもできます。

拡張機能

R2008aで導入