主要内容

基于NCA的回归鲁棒特征选择

使用NCA中的自定义鲁棒损失函数执行对异常值鲁棒的特征选择。

生成带有异常值的数据

为回归生成样本数据,其中响应依赖于三个预测因子,即预测因子4、7和13。

rng (123“旋风”%的再现性n = 200;X = randn (n, 20);y = cos (X (:, 7)) + sin (X(:, 4)。* X (:, 13)) + 0.1 * randn (n, 1);

向数据中添加异常值。

numoutliers = 25;outlieridx =地板(linspace (10 90 numoutliers));y (outlieridx) = 5 * randn (numoutliers, 1);

图数据。

图绘制(y)

图中包含一个axes对象。axis对象包含一个类型为line的对象。

使用非鲁棒损失函数

特征选择算法的性能在很大程度上取决于正则化参数的取值。一个好的实践是调整正则化参数,以获得在特征选择中使用的最佳值。使用五倍交叉验证优化正则化参数。使用均方误差(MSE):

均方误差 1 n 1 n y - y j 2

首先,将数据划分为五层。在每一次折叠中,软件使用4/5的数据进行训练,1/5的数据进行验证(测试)。

本量利= cvpartition(长度(y),“kfold”5);numtestsets = cvp.NumTestSets;

计算要测试的lambda值,并创建一个数组来存储丢失的值。

lambdavals = linspace(50 0 3) *性病(y) /长度(y);lossvals = 0(长度(lambdavals), numtestsets);

执行NCA并计算每种损失 λ 价值和每一次折叠。

i = 1:长度(lambdavals)Xtrain = X(cvv .training(k),:);ytrain = y (cvp.training (k):);Xtest = X (cvp.test (k):);欧美= y (cvp.test (k):);nca = fsrnca (Xtrain ytrain,“FitMethod”“准确”...“规划求解”“lbfgs”“详细”0,“λ”lambdavals(我),...“LossFunction”mse的);lossvals (i (k) =损失(nca, Xtest,欧美,“LossFunction”mse的);结束结束

画出每个λ值对应的平均损失。

图meanloss = mean(loss,2);情节(lambdavals meanloss,“ro - - - - - -”)包含(“λ”) ylabel (“损失(MSE)”网格)

图中包含一个axes对象。axis对象包含一个类型为line的对象。

找到 λ 产生最小平均损失的值。

[~, idx] = min(意味着(lossvals, 2));bestlambda = lambdavals (idx)
bestlambda = 0.0231

用最好的方法进行特性选择 λ 价值和MSE。

nca = fsrnca (X, y,“FitMethod”“准确”“规划求解”“lbfgs”...“详细”, 1“λ”bestlambda,“LossFunction”mse的);
o求解器= LBFGS, HessianHistorySize = 15,LineSearchMethod = weakwolfe  |====================================================================================================| | ITER | |娱乐价值规范研究生| |规范一步曲线|γ|α|接受  | |====================================================================================================| | 0 | 6.414642 e + 00 e-01 | 8.430 | 0.000 e + 00 | | 7.117 e-01 | 0.000 e + 00 |是| | 1 | 6.066100 e + 00 e-01 | 9.952 | 1.264 e + 00 |好| 3.741 e-01 | 1.000 e + 00 |是| | 2 | 5.498221 e + 00 e-01 | 4.2674.016 | 4.250 e-01 |好| e-01 | 1.000 e + 00 |是| | 3 | 5.108548 e + 00 | 3.933 e-01 e-01 8.564 | |好| 3.599 e-01 | 1.000 e + 00 |是| | 4 | 4.808456 e + 00 | 2.505 e-01 e-01 9.352 | |好| 8.798 e-01 | 1.000 e + 00 |是| | 5 | 4.677382 e + 00 | 2.085 e-01 e-01 6.014 | |好e + 00 | 1.052 | 1.000 e + 00 |是| | 6 | 4.487789 e + 00 e-01 | 4.726 | 7.374 e-01 | e-01好| 5.593 | 1.000 e + 00 |是| | 7 | 4.310099 e + 00 e-01 | 2.484 | 4.253 e-01 |好| 3.367 e-01 | 1.000 e + 00 |是| | 8 e + 00 | 4.258539 | 3.629 e-01 e-01 4.521 | | |e-01 e-01 4.705 | 5.000 |是| | 9 e + 00 | 4.175345 | 1.972 e-01 e-01 2.608 | |好| 4.018 e-01 | 1.000 e + 00 |是| | 10 e + 00 | 4.122340 | 9.169 e-02 e-01 2.947 | |好| 3.487 e-01 | 1.000 e + 00 |是| | 11 | 4.095525 e + 00 | 9.798 e-02 e-01 2.529 | |好| 1.188 e + 1.000 e + 00 00 | |是| | 12 | 4.059690 e + 00 e-01 | 1.584 | 5.213 e-01 | e-01好| 9.930 | 1.000 e + 00 |是| | 13 e + 00 | 4.029208 | 7.411 e-02 e-01 | 2.076 | 4.886好| e-01 | 1.000 e + 00 |是| | 14 | 4.016358 e + 00 e-01 | 1.068 | 2.696 e-01 |好| 6.919 e-01 |1.000 e + 00 |是| | 15 | 4.004521 e + 00 e-02 | 5.434 | 1.136 e-01 |好| 5.647 e-01 | 1.000 e + 00 |是| | 16 e + 00 | 3.986929 | 6.158 e-02 e-01 2.993 | |好e + 00 | 1.353 | 1.000 e + 00 |是| | 17 | 3.976342 e + 00 e-02 | 4.966 | 2.213 e-01 | e-01好| 7.668 | 1.000 e + 00 |是| | 18 e + 00 | 3.966646 | 5.458 e-02 e-01 2.529 | |好| 1.988 e + 1.000 e + 00 00 | |是| | 19 | 3.959586 e + 00 e-01 | 1.046 | 4.169 e-01 |好| 1.858 e + 1.000 e + 00 00 | | ||====================================================================================================| | ITER | |娱乐价值规范研究生| |规范一步曲线|γ|α|接受  | |====================================================================================================| | 20 | 3.953759 e + 00 e-02 | 8.248 | 2.892 e-01 |好| 1.040 e + 1.000 e + 00 00 | |是| | 21 e + 00 | 3.945475 | 3.119 e-02 e-01 1.698 | |好| 1.095 e + 1.000 e + 00 00 | |是| | 22 e + 00 | 3.941567 | 2.350 e-02 e-01 1.293 | | |1.117 e + 1.000 e + 00 00 | |是| | 23 e + 00 | 3.939468 | 1.296 e-02 e-01 1.805 | |好| 2.287 e + 1.000 e + 00 00 | |是| | 24 | 3.938662 e + e 03 00 | 8.591 | 5.955 e-02 |好| 1.553 e + 1.000 e + 00 00 | |是| | 25 | 3.938239 e + e 03 00 | 6.421 | 5.334 e-02 |好| 1.102 e + 1.000 e + 00 00 | |是| | 26 | 3.938013 e + e 03 00 | 5.449 | 6.773 e-02 |好| 2.085 e + 1.000 e + 00 00 | |是| | | 27日3.937896 e + e 03 00 | 6.226 | 3.368 e-02 | e-01好| 7.541 | 1.000 e + 00 |是| | | 28日3.937820 e + e 03 00 | 2.497 | 2.397 e-02 |好| 7.940 e-01 |1.000 e + 00 |是| | | 29日3.937791 e + e 03 00 | 2.004 | 1.339 e-02 |好| 1.863 e + 1.000 e + 00 00 | |是| | 30 e + 00 | 3.937784 | 2.448 e 03 e-02 | 1.265 | 9.667好| e-01 | 1.000 e + 00 |是| | | 3.937778 e + 31日00 e-04 | 6.973 | 2.906 e 03 | e-01好| 4.672 | 1.000 e + 00 |是| | 32 e + 00 | 3.937778 | 3.038 e-04 e-04 9.502 | |好| 1.060 e + 1.000 e + 00 00 | |是| | | 3.937777 e + 00 33 e-04 | 2.327 | 1.069 e 03 |好| 1.597 e + 1.000 e + 00 00 | |是| | 34 e + 00 | 3.937777 | 1.959 e-04 | 1.537 e 03 |好| 4.026 e + 1.000 e + 00 00 | |35是的| | | 3.937777 e + 00 | 1.162 e-04 | 1.464 e 03 |好e + 00 | 3.418 | 1.000 e + 00 |是| | 36 e + 00 | 3.937777 | 8.353 e-05 e-04 3.660 | |好| 7.304 e-01 e-01 | 5.000 |是| | 37 e + 00 | 3.937777 | 1.412 e-05 e-04 1.412 | |好| 7.842 e-01 | 1.000 e + 00 |是| | 38 e + 00 | 3.937777 | 1.277 e-05 e-05 3.808 | |好e + 00 | 1.021 | 1.000 e + 00 |是| | 39 | 3.937777 e + 00 e-06 | 8.614 | 3.698 e-05 |好| 2.561 e + 1.000 e + 00 00 | | ||====================================================================================================| | ITER | |娱乐价值规范研究生| |规范一步曲线|γ|α|接受  | |====================================================================================================| | 40 | 3.937777 e + 00 e-06 | 3.159 | 5.299 e-05 |好| 4.331 e + 1.000 e + 00 00 | |是| | 41 | 3.937777 e + 00 e-06 | 2.657 | 1.080 e-05 |好| 7.038 e-01 e-01 | 5.000 |是| | 42 e + 00 | 3.937777 | 7.054 e-07 e-06 7.036 | | | 9.519e-01 | 1.000e+00 | YES | Infinity norm of the final gradient = 7.054e-07 Two norm of the final step = 7.036e-06, TolX = 1.000e-06 Relative infinity norm of the final gradient = 7.054e-07, TolFun = 1.000e-06 EXIT: Local minimum found.

情节选择功能。

图(nca阴谋。FeatureWeights,“罗”网格)包含(“功能指数”) ylabel (“功能重量”

图中包含一个axes对象。axis对象包含一个类型为line的对象。

方法预测响应值nca对拟合(预测)响应值和实际响应值进行建模和绘制。

拟合图=预测(nca,X);情节(y,“r”。)举行情节(安装,“b -”)包含(“指数”) ylabel (的拟合值

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

fsrnca试图拟合数据中的每一个点,包括异常值。因此,除了预测器4,7和13之外,它还为许多特征分配了非零权重。

使用内置的鲁棒损耗功能

重复调整正则化参数的相同过程,这次使用内置的 ϵ 不敏感损失函数:

l y y j 马克斯 0 | y - y j | - ϵ

ϵ -不敏感损失函数对离群值的鲁棒性优于均方误差。

lambdavals = linspace(50 0 3) *性病(y) /长度(y);本量利= cvpartition(长度(y),“kfold”5);numtestsets = cvp.NumTestSets;lossvals = 0(长度(lambdavals), numtestsets);i = 1:长度(lambdavals)Xtrain = X(cvv .training(k),:);ytrain = y (cvp.training (k):);Xtest = X (cvp.test (k):);欧美= y (cvp.test (k):);nca = fsrnca (Xtrain ytrain,“FitMethod”“准确”...“规划求解”“sgd”“详细”0,“λ”lambdavals(我),...“LossFunction”“epsiloninsensitive”‘ε’, 0.8);lossvals (i (k) =损失(nca, Xtest,欧美,“LossFunction”mse的);结束结束

ϵ 使用的值取决于数据,最好的值也可以通过交叉验证来确定。但选择 ϵ 值超出了本示例的范围。的选择 ϵ 本例主要是为了说明该方法的鲁棒性。

画出每个λ值对应的平均损失。

图meanloss = mean(loss,2);情节(lambdavals meanloss,“ro - - - - - -”)包含(“λ”) ylabel (“损失(MSE)”网格)

图中包含一个axes对象。axis对象包含一个类型为line的对象。

找出产生最小平均损失的λ值。

[~, idx] = min(意味着(lossvals, 2));bestlambda = lambdavals (idx)
bestlambda = 0.0187

拟合邻域分量分析模型 ϵ -不敏感损失函数和最佳lambda值。

nca = fsrnca (X, y,“FitMethod”“准确”“规划求解”“sgd”...“λ”bestlambda,“LossFunction”“epsiloninsensitive”‘ε’, 0.8);

情节选择功能。

图(nca阴谋。FeatureWeights,“罗”网格)包含(“功能指数”) ylabel (“功能重量”

图中包含一个axes对象。axis对象包含一个类型为line的对象。

情节上的值。

拟合图=预测(nca,X);情节(y,“r”。)举行情节(安装,“b -”)包含(“指数”) ylabel (的拟合值

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

ϵ -不敏感损失对异常值来说似乎更强劲。它识别出的相关特征比MSE少。拟合表明,它仍然受到一些异常值的影响。

使用自定义鲁棒损失函数

定义一个自定义鲁棒损失函数,它对异常值具有鲁棒性,用于回归的特征选择:

f y y j 1 - 经验值 - | y - y j |

customlossFcn = @(yi,yj) 1 - exp(-abs(yi-yj'));

使用自定义的鲁棒损失函数调优正则化参数。

lambdavals = linspace(50 0 3) *性病(y) /长度(y);本量利= cvpartition(长度(y),“kfold”5);numtestsets = cvp.NumTestSets;lossvals = 0(长度(lambdavals), numtestsets);i = 1:长度(lambdavals)Xtrain = X(cvv .training(k),:);ytrain = y (cvp.training (k):);Xtest = X (cvp.test (k):);欧美= y (cvp.test (k):);nca = fsrnca (Xtrain ytrain,“FitMethod”“准确”...“规划求解”“lbfgs”“详细”0,“λ”lambdavals(我),...“LossFunction”, customlossFcn);lossvals (i (k) =损失(nca, Xtest,欧美,“LossFunction”mse的);结束结束

画出每个λ值对应的平均损失。

图meanloss = mean(loss,2);情节(lambdavals meanloss,“ro - - - - - -”)包含(“λ”) ylabel (“损失(MSE)”网格)

图中包含一个axes对象。axis对象包含一个类型为line的对象。

找到 λ 产生最小平均损失的值。

[~, idx] = min(意味着(lossvals, 2));bestlambda = lambdavals (idx)
bestlambda = 0.0165

使用自定义鲁棒损失函数和最佳执行特征选择 λ 价值。

nca = fsrnca (X, y,“FitMethod”“准确”“规划求解”“lbfgs”...“详细”, 1“λ”bestlambda,“LossFunction”, customlossFcn);
o求解器= LBFGS, HessianHistorySize = 15,LineSearchMethod = weakwolfe  |====================================================================================================| | ITER | |娱乐价值规范研究生| |规范一步曲线|γ|α|接受  | |====================================================================================================| | 0 | 8.610073 e-01 e-02 | 4.921 | 0.000 e + 00 | | 1.219 e + 01 | 0.000 e + 00 |是| | 1 | 6.582278 e-01 e-02 | 2.328 | 1.820 e + 00 |好01 | 1.000 | 2.177 e + e + 00 |是| | 2 | 5.706490 e-01 e-02 | 2.241| 2.360 e + 00 |好01 | 1.000 | 2.541 e + e + 00 |是| | 3 | 5.677090 e-01 e-02 | 2.666 | 7.583 e-01 |好01 | 1.000 | 1.092 e + e + 00 |是| | 4 | 5.620806 e-01 e 03 | 5.524 | 3.335 e-01 |好| 9.973 e + 1.000 e + 00 00 | |是| | 5 | 5.616054 e-01 e 03 | 1.428 | 1.025 e-01 |好01 | 1.000 | 1.736 e + e + 00 |是| | 6 | 5.614779 e-01 e-04 | 4.446 | 8.350 e-02 |好01 | 1.000 | 2.507 e + e + 00 |是| | 7 | 5.614653 e-01 e-04 | 4.118 | 2.466 e-02 |好01 | 1.000 | 2.105 e + e + 00 |是| | 8 | 5.614620 e-01 e-04 | 1.307 | 1.373 e-02 | |2.002 e + 01 | 1.000 e + 00 |是| | 9 | 5.614615 e-01 e-05 | 9.318 | 4.128 e 03 |好01 | 1.000 | 3.683 e + e + 00 |是| | 10 | 5.614611 e-01 e-05 | 4.579 | 8.785 e 03 |好01 | 1.000 | 6.170 e + e + 00 |是| | 11 | 5.614610 e-01 e-05 | 1.232 | 1.582 e 03 |好| 2.000 e + 01 | 5.000 e-01 |是| | 12 | 5.614610 e-01 e-06 | 3.174 | 4.742 e-04 |好01 | 1.000 | 2.510 e + e + 00 |是| | 13 | 5.614610 e-01 e-07 | 7.896 | 1.683 e-04 |好01 | 1.000 | 2.959 e + e + 00 |是|最终梯度的无穷范数= 7.896 e-07两个规范最后一步= 1.683e-04, TolX = 1.000e-06最终梯度的相对无穷大范数= 7.896e-07, TolFun = 1.000e-06 EXIT:发现局部最小值。

情节选择功能。

图(nca阴谋。FeatureWeights,“罗”网格)包含(“功能指数”) ylabel (“功能重量”

图中包含一个axes对象。axis对象包含一个类型为line的对象。

情节上的值。

拟合图=预测(nca,X);情节(y,“r”。)举行情节(安装,“b -”)包含(“指数”) ylabel (的拟合值

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

在这种情况下,损失不受异常值的影响,结果基于大多数观测值。fsrnca检测预测器4、7和13作为相关特征,不选择任何其他特征。

为什么损失函数的选择会影响结果?

首先,计算两个观测值之间的差的一系列值的损失函数。

δy = linspace (-10, 1000);

计算自定义损失函数值。

customlossvals = customlossFcn(δy, 0);

计算不敏感损失函数和值。

epsinsensitive = @ (yi yj E)马克斯(0,abs (yi-yj) - E);epsinsenvals = epsinsensitive(δy, 0, 0.5);

计算MSE损失函数和值。

Mse = @(yi,yj) (yi-yj').^2;msevals = mse(δy, 0);

现在,绘制损失函数图,看看它们之间的差异,以及它们为什么会以这种方式影响结果。

图绘制(δy, customlossvals“g -”δy epsinsenvals,“b -”δy msevals,的r -)包含(“(yi - yj)”) ylabel (“损失(咦,yj)”)传说(“customloss”“epsiloninsensitive”mse的20) ylim ([0])

图中包含一个axes对象。坐标轴对象包含3个line类型的对象。这些对象表示customloss, epsilonsensitive, mse。

当两个响应值之间的差值增加时,MSE呈二次增长,这使得它对异常值非常敏感。作为fsrnca为了尽量减少这种损失,它最终会识别出更多相关的特征。与MSE相比,epsilon不敏感损失对异常值的抵抗能力更强,但最终它确实开始随着两个观测值之间的差异的增加而线性增加。当两个观测值之间的差值增加时,鲁棒损失函数确实接近1,并保持在该值,即使观测值之间的差值不断增加。在三种情况中,它对异常值是最稳健的。

另请参阅

||||

相关的话题

Baidu
map