主要内容

损失

类:FeatureSelectionNCARegression

评估学习到的特征权重在测试数据上的准确性

语法

err = loss(mdl,X,Y)
err = loss(mdl,X,Y,Name,Value)

描述

犯错=损失(mdlXY返回均方误差作为精度的测量犯错,为模型mdl,预测值X中的响应值Y

犯错=损失(mdlXY名称,值返回精度的度量,犯错属性指定的附加选项名称,值对参数。

输入参数

全部展开

回归的邻域成分分析模型,指定为FeatureSelectionNCARegression对象。

预测变量值,指定为n——- - - - - -p矩阵,n观察的次数和p是预测变量的数量。

数据类型:|

响应值,指定为长度的数字实向量n,在那里n是观测的数量。

数据类型:|

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

损失函数类型,指定为逗号分隔的对,由的损失函数下面是其中之一。

损失函数类型 描述
mse的 均方误差
“疯了” 平均绝对偏差

例子:“LossFunction”、“mse的

输出参数

全部展开

学习到的特征权重的精度越小越好,作为标量值返回。属性指定精度度量LossFunction名称-值对参数。

例子

全部展开

加载样例数据。

从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中引入