我正在使用岭回归处理一组数据。当将学习到的函数应用于数据时,我发现了一个非常有趣的现象。即当岭参数从零开始增大时,测试误差不断增大。但如果我们惩罚小系数(设置参数<0),测试误差甚至可以更小。
这是我的 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 为负数时误差最小?这是拟合不足的迹象吗?
最佳答案
您不应使用负 lambda。
从(概率)理论的角度来看,lambda与参数先验分布的方差的倒数有关,并且方差不能为负。
从计算的角度来看,它可以(假设小于协方差矩阵的最小特征值)将正定形式转变为不定形式,这意味着您将没有最大值,而是有一个鞍点。这也意味着在某些点上,您的目标函数可以像您想要的一样小(或一样大),因此您可以无限期地减少损失,并且根本不存在最小值/最大值。
你的优化算法只给你一个驻点,当且仅当形式是正定的时,它才是全局最大值。
关于matlab - 为什么当 lambda 为负时岭回归可以最小化测试成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26715247/