このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
loss
学習した特徴量の重みの精度をテスト データに対して評価
構文
説明
は、モデル err
= loss(mdl
,Tbl
,ResponseVarName
)mdl
、table Tbl
内の予測子の値、および table Tbl
内の変数 ResponseVarName
に対する精度の尺度として平均二乗誤差を err
に返します。この構文は、mdl
が元々は table で学習させたものである場合に使用します。
入力引数
mdl
— 回帰用の近傍成分分析モデル
FeatureSelectionNCARegression
オブジェクト
回帰用の近傍成分分析モデル。FeatureSelectionNCARegression
オブジェクトを指定します。
Tbl
— 標本データ
テーブル
標本データ。テーブルとして指定します。Tbl
の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。
データ型: table
ResponseVarName
— 応答変数名
Tbl
内の変数の名前
応答変数の名前。Tbl
内の変数の名前で指定します。table 内の残りの変数は予測子です。
データ型: char
| string
X
— 予測子変数の値
n 行 p 列の行列
予測子変数の値。n 行 p 列の行列として指定します。ここで、n は観測値の数、p はモデルmdl
の学習に使用した予測子変数の数です。
データ型: single
| double
Y
— 応答値
長さ n の実数数値ベクトル
応答値。長さ n の実数数値ベクトルを指定します。n は観測値の個数です。Y
が table Tbl
に含まれている場合は省略できます。
データ型: single
| double
lossFunc
— 損失関数のタイプ
'mse'
(既定値) | 'mad'
損失関数のタイプ。次の値のいずれかとして指定します。
損失関数のタイプ | 説明 |
---|---|
'mse' | 平均二乗誤差 |
'mad' | 平均絶対偏差 |
例: 'LossFunction','mse'
出力引数
err
— 学習した特徴量の重みに対する、小さいほど優秀とする精度の尺度
スカラー値
学習した特徴量の重みに対する、小さいほど優秀とする精度の尺度。スカラー値として返されます。精度の尺度は、名前と値のペアの引数 LossFunction
を使用して指定できます。
例
loss
と predict
の使用による回帰用の NCA モデルの調整
標本データを読み込みます。
住宅データ [1] を UCI Machine Learning Repository [2] からダウンロードします。このデータセットには、506 個の観測値が含まれています。最初の 13 列には予測子の値が、最後の列には応答値が含まれています。目標は、ボストン郊外にある持ち家の数の中央値を 13 個の予測子の関数として予測することです。
データを読み込み、応答ベクトルと予測子行列を定義します。
load('housing.data');
X = housing(:,1:13);
y = housing(:,end);
層化区分のグループ化変数として 4 番目の予測子を使用して、データを学習セットとテスト セットに分割します。これにより、各グループから同じ量の観測値が各分割に含まれることが保証されます。
rng(1) % For reproducibility cvp = cvpartition(X(:,4),'Holdout',56); Xtrain = X(cvp.training,:); ytrain = y(cvp.training,:); Xtest = X(cvp.test,:); ytest = y(cvp.test,:);
cvpartition
は、56 個の観測値をテスト セットに、残りのデータを学習セットに無作為に割り当てます。
既定設定の使用による特徴選択の実行
回帰用の NCA モデルを使用して特徴選択を実行します。予測子の値を標準化します。
nca = fsrnca(Xtrain,ytrain,'Standardize',1);
特徴量の重みをプロットします。
figure()
plot(nca.FeatureWeights,'ro')
無関係な特徴量の重みはゼロに近くなると考えられます。fsrnca
は、2 つの特徴量が無関係であると特定しています。
回帰損失を計算します。
L = loss(nca,Xtest,ytest,'LossFunction','mad')
L = 2.5394
テスト セットについて予測される応答値を計算し、実際の応答に対してプロットします。
ypred = predict(nca,Xtest); figure() plot(ypred,ytest,'bo') xlabel('Predicted response') ylabel('Actual response')
実際の値に完全に一致すると、45°の直線になります。このプロットでは、予測された応答値と実際の応答値がこの直線の周辺に分布しているように見えます。通常は、 (正則化パラメーター) の値を調整すると、性能の改善に役立ちます。
10 分割交差検証の使用による正則化パラメーターの調整
の調整とは、回帰損失が最小になる の値を求めることを意味します。10 分割の交差検証を使用して を調整する手順は次のようになります。
1.はじめに、データを 10 個の分割に分割します。各分割について、cvpartition
はデータの 1/10 を学習セットとして、9/10 をテスト セットとして割り当てます。
n = length(ytrain);
cvp = cvpartition(Xtrain(:,4),'kfold',10);
numvalidsets = cvp.NumTestSets;
探索用の の値を割り当てます。損失値を格納する配列を作成します。
lambdavals = linspace(0,2,30)*std(ytrain)/n; lossvals = zeros(length(lambdavals),numvalidsets);
2.各分割の学習セットを使用して、 の各値について近傍成分分析 (NCA) モデルに学習をさせます。
3.選択された特徴量を使用して、ガウス過程回帰 (GPR) モデルを当てはめます。次に、この GPR モデルを使用して、分割内の対応するテスト セットの回帰損失を計算します。損失の値を記録します。
4.これを の各値および各分割に対して繰り返します。
for i = 1:length(lambdavals) for k = 1:numvalidsets X = Xtrain(cvp.training(k),:); y = ytrain(cvp.training(k),:); Xvalid = Xtrain(cvp.test(k),:); yvalid = ytrain(cvp.test(k),:); nca = fsrnca(X,y,'FitMethod','exact',... 'Lambda',lambdavals(i),... 'Standardize',1,'LossFunction','mad'); % Select features using the feature weights and a relative % threshold. tol = 1e-3; selidx = nca.FeatureWeights > tol*max(1,max(nca.FeatureWeights)); % Fit a non-ARD GPR model using selected features. gpr = fitrgp(X(:,selidx),y,'Standardize',1,... 'KernelFunction','squaredexponential','Verbose',0); lossvals(i,k) = loss(gpr,Xvalid(:,selidx),yvalid); end end
の各値について、分割から得られる平均損失を計算します。平均損失と の値をプロットします。
meanloss = mean(lossvals,2); figure; plot(lambdavals,meanloss,'ro-'); xlabel('Lambda'); ylabel('Loss (MSE)'); grid on;
損失値が最小になる の値を求めます。
[~,idx] = min(meanloss); bestlambda = lambdavals(idx)
bestlambda = 0.0251
最良の 値を使用して回帰用の特徴選択を実行します。予測子の値を標準化します。
nca2 = fsrnca(Xtrain,ytrain,'Standardize',1,'Lambda',bestlambda,... 'LossFunction','mad');
特徴量の重みをプロットします。
figure()
plot(nca.FeatureWeights,'ro')
特徴量の選択には使用されなかったテスト データに対して新しい NCA モデルを使用して、損失を計算します。
L2 = loss(nca2,Xtest,ytest,'LossFunction','mad')
L2 = 2.0560
正則化パラメーターの調整は、関連がある特徴量を識別して損失を減らすために役立ちます。
予測された応答値とテスト セット内の実際の応答値をプロットします。
ypred = predict(nca2,Xtest);
figure;
plot(ypred,ytest,'bo');
予測された応答値は、実際の値に十分近いように見えます。
参考文献
[1] Harrison, D. and D.L., Rubinfeld. "Hedonic prices and the demand for clean air." J. Environ. Economics & Management. Vol.5, 1978, pp. 81-102.
[2] Lichman, M. UCI Machine Learning Repository, Irvine, CA:University of California, School of Information and Computer Science, 2013. https://archive.ics.uci.edu/ml
バージョン履歴
R2016b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)