我想使用广义交叉验证来计算岭回归的最佳岭参数。
由Golub等人(1979)提出的公式是
GCV(k)=(1/n Sum_i=1^n e_i(k)^2)/(1/n Sum_i=1^n(1-h_ii(k)))^2
其中e_1(k)....e_n(k)
是对给定k应用岭回归的残差。
H(K)=X(X'X+kI)^{-1}X'
。
其中X是设计矩阵。
和h_ii(k)
是H(k)
的数字元素。
我有脊回归公式,所以我可以很容易地计算分子。
但是我不确定如何计算分母?
我发现this set of tools有一个函数gcv(),但我无法理解它是如何计算G函数的?
事实上,在它的计算中似乎没有使用x? 这个功能是否符合我的要求?如果是这样,有人可以向我解释它是如何工作的吗?
答案 0 :(得分:2)
对于某些问题,可以在不实际进行任何交叉验证的情况下计算广义交叉验证。对于普通(非正则化)普通最小二乘(OLS,对于搜索机器人),跟踪(H_ols),假设X' X实际上是可逆的,则= trace(新的(X' X)X') = trace(X' X * inv(X' X))= trace(I)= p这是OLS模型中的参数数量。对于任何相同大小的问题,这都是常数。
我不是Ridge Regression的专家,但也许gcv.m正在做类似的事情?毕竟 trace(H_ridge)= trace(X * inv(X。' * X + k * ones(size(X)))* X。')= trace(X' X * inv(X& #39; X + k * 1))
抱歉ASCII数学。
答案 1 :(得分:1)
(1/n Sum_i=1^n(1-h_ii(k)))^2=(sum(1-diag(H))/n)^2