Nano Hash - криптовалюты, майнинг, программирование

Как мне наложить лассо и подборы регрессии гребня (Glmnet) на данные?

У меня есть данные (ниже), и я провел линейную регрессию, регрессию гребня и лассо. Для регрессии лассо и гребня я нашел оптимальную лямбду с помощью перекрестной проверки. Теперь я хочу наложить подогнанные модели на график y vs x моих исходных данных. У меня есть линейная модель на графике, я просто не могу понять, как заставить появиться две другие. Я пробовал это в ggplot, но ответ в базе R тоже был бы очень полезен! Даже если бы вы могли указать мне правильное направление, это было бы здорово.

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

код для создания данных

set.seed(1)
x <- rnorm(100)
y <- 1 + .2*x+3*x^2+.6*x^3 + rnorm(100)
d <- data.frame(x=x,y=y)
d$x2 <- d$x^2
d$x3 <- d$x^3
d$x4 <-d$x^4
d$x5 <-d$x^5

линейная регрессия

f <- lm(y ~ ., data=d)

регресс гребня

library(glmnet) 
x <- model.matrix(y ~ ., data=d)
y <- d$y

grid <- 0.001:50
ridge.fit <- glmnet(x,y,alpha=0, lambda = grid)

cv <- cv.glmnet(x,y)
r.fit.new <-  glmnet(x,y,alpha=0, lambda = cv$lambda.min)

лассо

lasso.fit <- glmnet(x,y,alpha=1, lambda = grid) 
l.fit.new <- glmnet(x,y,alpha=1, lambda = cv$lambda.min)

график

ggplot(data=d, aes(x=x, y=y)) + geom_point() + geom_line(aes(y=fitted(f)), colour="blue") 
30.04.2019

  • вам нужно tidy это вверх. взгляните на это: varianceexplained.org/broom-gallery/snippets/broom- glmnet.html 30.04.2019
  • просто перечитайте свой вопрос и поняли, что вы хотите супер-наложить каждую из посадок, а не просто смотреть на диагностику посадки гребня и лассо. добавил свой ответ 01.05.2019

Ответы:


1

немного изменил ваш код для создания данных

set.seed(1)
x <- rnorm(100)
y <- 1 + .2*x+3*x^2+.6*x^3 + rnorm(100)
d <- data.frame(x.values=x,y=y)
d$x2 <- d$x.values^2
d$x3 <- d$x.values^3
d$x4 <-d$x.values^4
d$x5 <-d$x.values^5

остальная часть вашего кода для создания матрицы моделей и создания моделей как есть.

Некоторые попытки отформатировать данные для построения графика

library(dplyr)
data.for.plot <- d%>%
select(x.values,y) %>%
mutate(fitted_lm = as.numeric(fitted(f)),
fitted_ridge_lm = as.numeric(predict(r.fit.new, newx= x)),
fitted_lasso_lm = as.numeric(predict(l.fit.new, newx= x)))

#Plot
ggplot(data.for.plot, aes(x = x.values, y = y)) + 
  geom_point() + 
  geom_line(aes(y=fitted_lm), colour="blue") + 
  geom_line(aes(y=fitted_ridge_lm), colour="red") + 
  geom_line(aes(y= fitted_lasso_lm),color="grey75") + theme_bw()

введите здесь описание изображения

Теперь вы заметите, что посадки сложно разглядеть, поскольку они довольно близки друг к другу (отлично, модели согласны). Итак, давайте немного отформатируем данные и воспользуемся фасетированием в ggplot, чтобы увидеть соответствие индивидуально.

library(tidyr)
data.for.plot.long <- gather(data.for.plot, key= fit_type, value = fits, -x.values,-y)
ggplot(data.for.plot.long, aes(y = y, x = x.values)) +
    geom_point() + 
    geom_line(aes(y = fits,colour=fit_type))+facet_wrap(~fit_type, ncol = 1,scales = "free") + theme_bw()

Результирующий график:  введите описание изображения здесь

30.04.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..