【发布时间】:2014-12-30 04:02:48
【问题描述】:
我正在使用岭回归处理一组数据。将学习到的函数应用于数据时,我发现了一个非常有趣的现象。即,当岭参数从零开始增加时,测试误差不断增加。但是如果我们惩罚小系数(设置参数
这是我的 matlab 代码:
for i = 1:100
beta = ridgePolyRegression(ty_train,tX_train,lambda(i));
sqridge_train_cost(i) = computePolyCostMSE(ty_train,tX_train,beta);
sqridge_test_cost(i) = computePolyCostMSE(ty_valid,tX_valid,beta);
end
plot(lambda,sqridge_test_cost,'color','b');
lambda 是岭参数。 ty_train 是训练数据的输出,tX_train 是训练数据的输入。此外,我们在这里使用二次函数回归。
function [ beta ] = ridgePolyRegression( y,tX,lambda )
X = tX(:,2:size(tX,2));
tX2 = [tX,X.^2];
beta = (tX2'*tX2 + lambda * eye(size(tX2,2))) \ (tX2'*y);
end
为什么当 lambda 为负数时误差最小?是不是拟合不足的迹象?
【问题讨论】:
-
我建议您在stats.stackexchange.com 或scicomp.stackexchange.com 提出这个问题
-
一个与交叉验证密切相关的问题:stats.stackexchange.com/questions/328630/…
标签: matlab machine-learning regression