R - гамма оценки в регрессии ядра Риджа - DataScientist
0 голосов
/ 10 мая 2019

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

$$ \min_{\boldsymbol{\beta} \in \mathbb{R}^{d}} \ \sum_{i = 1}^{n} (y_{i} - \left \langle \boldsymbol{\beta}, \phi(\boldsymbol{x_{i}}) \right \rangle )^{2} + \lambda \left \| \boldsymbol{\beta} \right \|^{2}$$

В частности, я нашел функцию krr () из пакета listdtr ( здесь официальная документация) особенно интересной. Действительно, часть его эффективности, учитывая ядро ​​Гаусса, оценивает конкретную $\gamma_{j}$ для каждой из $k$ переменных. Например, для двух индивидуумов $\boldsymbol{x_{i}}$ и $\boldsymbol{x_{j}}$ соответствующее ядро ​​Гаусса:

$$K(\boldsymbol{x_{i}}, \boldsymbol{x_{h}}) = exp \left \{ -\sum_{j = 1}^{k}\gamma_{j}(x_{i,j} - x_{h,j})^{2} \right \}$$

где, для полноты описания:

$$\left \langle \phi(\boldsymbol{x_{i}}),\phi(\boldsymbol{x_{h}}) \right \rangle = K(\boldsymbol{x_{i}}, \boldsymbol{x_{h}})$$.

При представлении кода обратите внимание, что «Holdout» - это набор, используемый для обучения модели и оценки лямбды и гаммы, 35% набора данных, тогда как «оценивают» оставшиеся 65% для вычисления MSE.

Код для выполнения вычисления следующий:

library(listdtr)
set.seed(42)
krr_values <- krr(x = as.matrix(X_34_holdout), y = as.matrix(y_34_holdout))
test_predict_krr <- predict(krr_values, as.matrix(X_34_estim))
MSE_KRR_each_gamma <- colMeans((y_34_estim - test_predict_krr)^(2))

Теперь у меня есть несколько вопросов: учтите, что исходный код недоступен (или, по крайней мере, я не смог его найти):

1) Какие значения гиперпараметров учитываются при определении лямбды и гаммы?

2) Я понимаю, что могу извлечь гамму (по одной на каждую из моих 8 функций) с помощью:

krr_values<span class="math-container">$model$</span>gamma
#realnumber1  realnumber2 realnumber3  realnumber4  realnumber5  
#realnumber6 realnumber7  realnumber8

Проблема сейчас в том, как мне узнать каждую из них, к каким переменным относятся? Например, одному из них около 20, но он запускает один и тот же сценарий с двумя разными начальными значениями, как только я оценил, что 18 в находился в четвертой позиции, а в другой раз около 20 во второй позиции: это явно $\gamma_{j}$, связанный с та же самая переменная, но как я могу тогда связать все остальные?

Было бы особенно полезно получить ответ от кого-то, кто уже имел некоторый опыт работы с вышеупомянутой функцией, но любой комментарий или ответ будут высоко оценены.

...