Понимание результатов регрессии гребня

9

Я новичок в Ридж регрессии. Когда я применил линейную регрессию гребня, я получил следующие результаты:

>myridge = lm.ridge(y ~ ma + sa + lka + cb  + ltb , temp, lamda = seq(0,0.1,0.001))
> select(myridge)
modified HKB estimator is 0.5010689 
modified L-W estimator is 0.3718668 
smallest value of GCV  at 0 

Вопросов:

  • Это нормально, чтобы получить ноль для GCV?
  • Что именно это значит?
  • Есть ли проблема с моей моделью?
  • Как я могу найти значение ?р2myridge
samarasa
источник
Поменяйте лямду на лямбду. Я думаю, что указанная вами последовательность была проигнорирована.

Ответы:

20

Вы могли бы быть лучше с наказываться пакета или glmnet пакета; оба реализуют лассо или эластичную сетку, поэтому комбинируют свойства лассо (выбор признаков) и регрессии гребня (обработка коллинеарных переменных). наказан также ридж. Эти два пакета гораздо более полнофункциональны, чем lm.ridge()в пакете MASS для таких вещей.

В любом случае, подразумевает нулевой штраф, поэтому оценки наименьших квадратов являются оптимальными в том смысле, что у них был самый низкий показатель GCV (обобщенная перекрестная проверка). Тем не менее, вы, возможно, не допустили достаточно большой штраф; другими словами, оценки наименьших квадратов были оптимальными из небольшого набора значений вы просматривали. Постройте путь гребня (значения коэффициентов как функцию от и посмотрите, стабилизировались ли следы или нет. Если нет, увеличьте диапазон значений оцениваемых.λзнак равно0λλλ

Гэвин Симпсон
источник
5

Причина, по которой вы получаете 0 GCV, заключается в том, что вы использовали:

myridge = lm.ridge (y ~ ma + sa + lka + cb + ltb, temp, lamda = seq (0,0.1,0.001))

вместо

myridge = lm.ridge (y ~ ma + sa + lka + cb + ltb, temp, lambda = seq (0,0.1,0.001))

Prashanth
источник