损失
类:FeatureSelectionNCARegression
评估学习到的特征权重在测试数据上的准确性
语法
err = loss(mdl,X,Y)
err = loss(mdl,X,Y,Name,Value)
输入参数
mdl
- - - - - -回归的邻域成分分析模型
FeatureSelectionNCARegression
对象
回归的邻域成分分析模型,指定为FeatureSelectionNCARegression
对象。
X
- - - - - -预测变量值
n——- - - - - -p矩阵
预测变量值,指定为n——- - - - - -p矩阵,n观察的次数和p是预测变量的数量。
数据类型:单
|双
Y
- - - - - -响应值
数字实长度向量n
响应值,指定为长度的数字实向量n,在那里n是观测的数量。
数据类型:单
|双
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
LossFunction
- - - - - -损失函数类型
mse的
(默认)|“疯了”
损失函数类型,指定为逗号分隔的对,由的损失函数
下面是其中之一。
损失函数类型 | 描述 |
---|---|
mse的 |
均方误差 |
“疯了” |
平均绝对偏差 |
例子:“LossFunction”、“mse的
输出参数
犯错
-学习特征权重的精度越小越好
标量值
学习到的特征权重的精度越小越好,作为标量值返回。属性指定精度度量LossFunction
名称-值对参数。
例子
调整回归使用的NCA模型损失
而且预测
加载样例数据。
从UCI机器学习知识库[2]下载房屋数据[1]。该数据集有506个观测值。前13列包含预测值,最后一列包含响应值。目标是预测波士顿郊区自住住房的中位数价值作为13个预测因子的函数。
加载数据并定义响应向量和预测矩阵。
负载(“housing.data”);X =壳体(:,1:13);Y =壳体(:,end);
将数据划分为训练集和测试集,使用第4个预测器作为分组变量进行分层划分。这确保了每个分区包括来自每个组的相似数量的观察结果。
rng (1)%用于再现性cvp = cvpartition(X(:,4),“坚持”56);Xtrain = X(cvp.training,:);Ytrain = y(cvp.training,:);Xtest = X(cvp.test,:);Ytest = y(cvp.test,:);
cvpartition
随机将56个观察值分配到一个测试集,其余数据分配到一个训练集。
使用默认设置执行特征选择
使用NCA模型进行回归特征选择。标准化预测值。
nca = fsrnca(Xtrain,ytrain,“标准化”1);
绘制特征权重。
图()(nca情节。FeatureWeights,“罗”)
不相关的特征的权重期望趋近于零。fsrnca
将两个不相关的特性标识出来。
计算回归损失。
L = loss(nca,Xtest,ytest,“LossFunction”,“疯了”)
L = 2.5394
计算测试集的预测响应值,并将它们与实际响应绘制出来。
ypred = predict(nca,Xtest);图()图(ypred,欧美,“波”)包含(“预测响应”) ylabel (“实际响应”)
与实际值完美匹配形成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 = 0(长度(lambdavals),numvalidsets);
2.训练邻域成分分析(nca)模型 在每个折叠中使用训练集的值。
3.使用所选特征拟合高斯过程回归(gpr)模型。接下来,使用gpr模型计算折叠中相应测试集的回归损失。记录损失值。
4.对每个人重复这个步骤 价值与每一折。
为I = 1:长度(lambda)为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”,“准确”,...“λ”lambdavals(我),...“标准化”, 1“LossFunction”,“疯了”);使用特征权重和相对值选择特征%的阈值。Tol = 1e-3;Selidx = nca。FeatureWeights > tol*max(1,max(nca.FeatureWeights));使用选定的特征拟合非ard GPR模型。gpr = fitrgp(X(:,selidx),y,“标准化”, 1...“KernelFunction”,“squaredexponential”,“详细”, 0);lossvals(i,k) = loss(gpr,Xvalid(:,selidx),yvalid);结束结束
计算从每个折叠中获得的平均损失 价值。画出平均损失和 值。
Meanloss = mean(lossvals,2);图;情节(lambdavals meanloss,“ro - - - - - -”);包含(“λ”);ylabel (“损失(MSE)”);网格在;
找到 产生最小损失值的值。
[~,idx] = min(meanloss);Bestlambda = lambdavals(idx)
Bestlambda = 0.0251
使用最好的方法进行回归的特征选择 价值。标准化预测值。
nca2 = fsrnca(Xtrain,ytrain,“标准化”, 1“λ”bestlambda,...“LossFunction”,“疯了”);
绘制特征权重。
图()(nca情节。FeatureWeights,“罗”)
在测试数据上使用新的nca模型计算损失,该模型不用于选择特征。
L2 =损失(nca2,Xtest,ytest,“LossFunction”,“疯了”)
L2 = 2.0560
调优正则化参数有助于识别相关特征并减少损失。
在测试集中绘制预测响应值与实际响应值。
ypred = predict(nca2,Xtest);图;情节(ypred,欧美,“波”);
预测的响应值似乎也更接近实际值。
参考文献
[1]哈里森,D.和D. l .鲁宾菲尔德。“享乐的价格和对清洁空气的需求。”j .包围。经济与管理。Vol.5, 1978, pp. 81-102。
[2] Lichman, M. UCI机器学习库,加州尔湾:加州大学信息与计算机科学学院,2013年。https://archive.ics.uci.edu/ml。
版本历史
在R2016b中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。