matlab - 为什么当 lambda 为负时岭回归可以最小化测试成本

标签 matlab machine-learning regression

我正在使用岭回归处理一组数据。当将学习到的函数应用于数据时,我发现了一个非常有趣的现象。即当岭参数从零开始增大时,测试误差不断增大。但如果我们惩罚小系数(设置参数<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

绘制的图片为:plot

为什么当 lambda 为负数时误差最小?这是拟合不足的迹象吗?

最佳答案

您不应使用负 lambda。

从(概率)理论的角度来看,lambda与参数先验分布的方差的倒数有关,并且方差不能为负。

从计算的角度来看,它可以(假设小于协方差矩阵的最小特征值)将正定形式转变为不定形式,这意味着您将没有最大值,而是有一个鞍点。这也意味着在某些点上,您的目标函数可以像您想要的一样小(或一样大),因此您可以无限期地减少损失,并且根本不存在最小值/最大值。

你的优化算法只给你一个驻点,当且仅当形式是正定的时,它才是全局最大值。

关于matlab - 为什么当 lambda 为负时岭回归可以最小化测试成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26715247/

相关文章:

python - 如何在keras conv层中进行零填充?

python - Python 中的 ElasticNetCV 与 R 中的 cvglmnet

python - 导出特征重要性时添加额外列

c++ - 用2个方阵模拟matlab的mrdivide

matlab - 导出和导入 MATLAB 映射结构

python - OpenAI gym 和 Python 线程

python - tensorflow 中的2层神经网络

r - 使用 purrr :map2 to perform regression where the predictor and the criterion are stored in different objects

matlab - 在 MATLAB 中将两个 2 向量相乘时出现数字类型错误

ado.net - 从 MATLAB 调用 ADO.NET