kfoldLoss
学習で使用しない観測値の回帰損失
説明
入力引数
CVMdl
- - - - - -交差検証済みの線形回帰モデル
RegressionPartitionedLinear
モデルオブジェクト
交差検証済み線形回帰モデル。RegressionPartitionedLinear
モデルオブジェクトとして指定します。RegressionPartitionedLinear
モデルを作成するには,fitrlinear
を使用し,交差検証用の名前と値のペアの引数のいずれかCrossVal
など)を指定します。
推定値を取得するため,kfoldLossは線形回帰モデルの交差検証に使用したものと同じデ,タ(X
およびY
)を適用します。
名前と値の引数
オプションの引数のペアをName1 = Value1,…,以=家
として指定します。ここで的名字
は引数名,价值
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021aより前では,名前と値をそれぞれコンマを使って区切り,的名字
を引用符で囲みます。
折叠
- - - - - -応答の予測に使用する分割の@ @ンデックス
1: CVMdl。KFold
(既定値) |正の整数の数値ベクトル
応答の予測に使用する分割の@ @ンデックス。“折叠”
と正の整数の数値ベクトルから構成されるコンマ区切りのペアとして指定します。折叠
の要素は1
からCVMdl。KFold
の範囲でなければなりません。
例:“折叠”,[1 4 10]
デ,タ型:单
|双
LossFun
- - - - - -損失関数
mse的
(既定値) |“epsiloninsensitive”
|関数ハンドル
損失関数。“LossFun”
と組み込み損失関数名または関数ハンドルから構成されるコンマ区切りのペアとして指定します。
次の表は,使用可能な損失関数の一覧です。対応する文字ベクトルまたは字符串スカラ,を使用して,いずれかを指定します。また,この表では です。
βはp個の係数のベクトルです。
Xはp個の予測子変数による観測値です。
Bはスカラバアスです。
値 説明 “epsiloninsensitive”
プシロン不感応損失: mse的
均方误差: “epsiloninsensitive”
は支持向量机学習器のみに適しています。関数ハンドル表記を使用して独自の関数を指定します。
n
をX
の観測値数とします。使用する関数のシグネチャは次のようになっていなければなりません。lossvalue =
lossfun
(Y, Yhat W)出力引数
lossvalue
はスカラ,です。関数名 (
lossfun
)を選択します。Y
は観測された応答のn
次元ベクトルです。kfoldLoss
には入力引数Y
でY
を渡します。Yhat
は予測された応答のn
次元ベクトルです。これは预测
の出力と同様です。W
は,観測値の重みのn
行1列の数値ベクトルです。
“LossFun”@
を使用して独自の関数を指定します。lossfun
デ,タ型:字符
|字符串
|function_handle
模式
- - - - - -損失の集約レベル
“平均”
(既定値) |“个人”
損失の集約レベル。“模式”
と“平均”
または“个人”
から構成されるコンマ区切りのペアとして指定します。
値 | 説明 |
---|---|
“平均” |
分割全体で平均した損失を返す |
“个人” |
各分割にいて損失を返す |
例:“模式”,“个人”
出力引数
l
-交差検証回帰損失
数値スカラ,|数値ベクトル,|数値行列
例
k分割平均二乗誤差の推定
次のモデルにより,10000個の観測値をシミュレ,トします。
は,10%の要素が非ゼロ標準正規である10000行1000列のスパ,ス行列です。
eは,平均が0,標準偏差が0.3のランダムな正規誤差です。
rng (1)%用于再现性N = 1e4;D = 1e3;Nz = 0.1;X = sprandn(n,d,nz);Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);
支持向量机学習器を使用する線形回帰モデルを交差検証します。
rng (1);%用于再现性CVMdl = fitrlinear(X,Y,“CrossVal”,“上”);
CVMdl
はRegressionPartitionedLinear
モデルです。既定では,10分割交差検証が実行されます。“KFold”
名前と値のペアの引数を使用して分割数を変更できます。
検定標本のmseの平均を推定します。
mse = kfoldLoss(cvdl)
Mse = 0.1735
または,名前と値のペアの引数“模式”,“个人”
をkfoldLoss
で指定することにより,分割ごとのmseを取得できます。
カスタム回帰損失の指定
K分割平均二乗誤差の推定で説明されているようにデ,タをシミュレ,トします。
rng (1)%用于再现性N = 1e4;D = 1e3;Nz = 0.1;X = sprandn(n,d,nz);Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);X = X';将观察结果列在栏中,以便更快地训练。
10分割の交差検証を使用して線形回帰モデルを交差検証します。SpaRSAを使用して目的関数を最適化します。
CVMdl = fitrlinear(X,Y,“CrossVal”,“上”,“ObservationsIn”,“列”,...“规划求解”,“sparsa”);
CVMdl
はRegressionPartitionedLinear
モデルです。このモデルに含まれている训练有素的
プロパティは,学習セットを使用して学習を行ったRegressionLinear
モデルが格納されている10行1列のcell配列です。
次の胡贝尔損失( = 1)を評価する無名関数を作成します。
ここで
は観測値jの残差です。カスタム損失関数は特定の形式で記述しなければなりません。カスタム損失関数の記述に関するルルにいては,名前と値のペアの引数“LossFun”
を参照してください。
huberloss = @ (Y, Yhat, W)和(W . * ((0.5 * (abs (Y-Yhat) < = 1)。* (Y-Yhat) ^ 2) +...((abs (Y-Yhat) > 1)。* abs (Y-Yhat) -0.5))) / (W)之和;
分割全体に対する平均の胡贝尔損失を推定します。また,各分割の胡贝尔損失も取得します。
mseAve = kfoldLoss(cvdl,“LossFun”huberloss)
mseAve = -0.4447
mseFold = kfoldLoss(CVMdl,“LossFun”huberloss,“模式”,“个人”)
mseFold =10×1-0.4454 -0.4473 -0.4452 -0.4469 -0.4434 -0.4427 -0.4471 -0.4430 -0.4438 -0.4426
交差検証の使用による適切な套索ペナルティの特定
最小二乗を使用する線形回帰モデルに適した套索ペナルティの強度を決定するため,5分割の交差検証を実装します。
次のモデルにより,10000個の観測値をシミュレ,トします。
は,10%の要素が非ゼロ標準正規である10000行1000列のスパ,ス行列です。
eは,平均が0,標準偏差が0.3のランダムな正規誤差です。
rng (1)%用于再现性N = 1e4;D = 1e3;Nz = 0.1;X = sprandn(n,d,nz);Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);
~ の範囲で対数間隔で配置された15個の正則化強度を作成します。
Lambda = logspace(-5,-1,15);
モデルを交差検証します。実行速度を向上させるため,予測子デ,タを転置し,観測値が列単位であることを指定します。SpaRSAを使用して目的関数を最適化します。
X = X';CVMdl = fitrlinear(X,Y,“ObservationsIn”,“列”,“KFold”5,“λ”λ,...“学习者”,“leastsquares”,“规划求解”,“sparsa”,“正规化”,“套索”);numCLModels = nummel (CVMdl.Trained)
numCLModels = 5
CVMdl
はRegressionPartitionedLinear
モデルです。fitrlinear
は5分割の交差検証を実装するので,各分割にいて学習させる5のRegressionLinear
モデルがCVMdl
に格納されます。
1番目の学習済み線形回帰モデルを表示します。
Mdl1 = CVMdl。训练有素的{1}
Mdl1 = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x15 double]偏差:[-0.0049 -0.0049 -0.0049 -0.0049 -0.0048…[1.0000e-05 1.9307e-05 3.7276e-05 7.1969e-05…]学习者:'最小二乘'属性,方法
Mdl1
はRegressionLinear
モデルオブジェクトです。fitrlinear
は最初の4の分割に対して学習を行うことによりMdl1
を構築しました。λ
は正則化強度のシ,ケンスなので,Mdl1
はそれぞれがλ
の各正則化強度に対応する15個のモデルであると考えることができます。
交差検証されたmseを推定します。
mse = kfoldLoss(CVMdl);
λ
の値が大きくなると,予測子変数がスパ,スになります。これは回帰モデルの品質として優れています。データセット全体を使用し,モデルの交差検証を行ったときと同じオプションを指定して,各正則化強度について線形回帰モデルに学習をさせます。モデルごとに非ゼロの係数を特定します。
Mdl = fitrlinear(X,Y,“ObservationsIn”,“列”,“λ”λ,...“学习者”,“leastsquares”,“规划求解”,“sparsa”,“正规化”,“套索”);numNZCoeff = sum(Mdl.Beta~=0);
同じ図に,各正則化強度にいての交差検証されたmseと非ゼロ係数の頻度をプロットします。すべての変数を対数スケ,ルでプロットします。
figure [h,hL1,hL2] = plotyy(log10(Lambda),log10(mse),...log10(λ)log10 (numNZCoeff));hL1。标志=“o”;hL2。标志=“o”;ylabel (h (1),“log_ {10} MSE的) ylabel (h (2),'log_{10}非零系数频率')包含(“log_{10}λ的)举行从
予測子変数のスパ,ス性とmseの低さのバランスがとれている正則化強度(λ(10)
など)の选区ンデックスを選択します。
idxFinal = 10;
最小のmseに対応するモデルを抽出します。
MdlFinal = selectModels(Mdl,idxFinal)
MdlFinal = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double]偏差:-0.0050 Lambda: 0.0037学习者:'最小二乘'属性,方法
idxNZCoeff = find(MdlFinal.Beta~=0)
idxNZCoeff =2×1100 200
EstCoeff = Mdl.Beta(idxNZCoeff)
EstCoeff =2×11.0051 - 1.9965
MdlFinal
は,1の正則化強度があるRegressionLinear
モデルです。非ゼロ係数EstCoeff
は,デ,タをシミュレ,トした係数に近くなっています。
バ,ジョン履歴
R2016aで導入
Matlabコマンド
次のmatlabコマンドに対応するリンクがクリックされました。
コマンドをmatlabコマンドウィンドウに入力して実行してください。Webブラウザ,はMATLABコマンドをサポ,トしていません。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。