Как избежать переобучения в множественной линейной регрессии (lm) в R, поскольку степень полинома увеличивается вместе с статистикой подгонки [закрыто]

Я подгоняю несколько линейных регрессий к набору данных, в котором подобранная плоскость должна аппроксимировать значения, равные 99; красновато-оранжевые точки на рисунке ниже. Я тестирую посадки со степенью полинома от 1 до 7.

Моя проблема в том, что при использовании общих показателей производительности линейной модели, чем выше степень полинома, тем лучше соответствие (очевидно), но это (i) не имеет смысла с научной точки зрения, и (ii) модель (подобранная поверхность) не может быть впоследствии использовался из-за своей формы (местами загибается назад). Для того, чтобы иметь возможность использовать функцию самолета после я должен был бы монотонная гладкая поверхность наклон в заданном направлении , как это: .

Модель первой степени обеспечивает именно это, но хуже всего подходит для AIC, BIC, прил. R2 и т. Д.

Данные здесь (mdata_nem_interp2) и использование I - код модели в R это один.

      
library(performance)
library(stats)

centrum=99

Weight_nem_interp=1/(centrum-mdata_nem_interp2$value)^2
Weight_nem_interp[mapply(is.infinite, Weight_nem_interp)] <- 1

per_lm1 <- lm(variable ~ polym(Unc, Window, degree=1, raw=TRUE),data = mdata_nem_interp2, weights = Weight_nem_interp)
per_lm2 <- lm(variable ~ polym(Unc, Window, degree=2, raw=TRUE),data = mdata_nem_interp2, weights = Weight_nem_interp)
per_lm3 <- lm(variable ~ polym(Unc, Window, degree=3, raw=TRUE),data = mdata_nem_interp2, weights = Weight_nem_interp)
per_lm4 <- lm(variable ~ polym(Unc, Window, degree=4, raw=TRUE),data = mdata_nem_interp2, weights = Weight_nem_interp)
per_lm5 <- lm(variable ~ polym(Unc, Window, degree=5, raw=TRUE),data = mdata_nem_interp2, weights = Weight_nem_interp)
per_lm6 <- lm(variable ~ polym(Unc, Window, degree=6, raw=TRUE),data = mdata_nem_interp2, weights = Weight_nem_interp)
per_lm7 <- lm(variable ~ polym(Unc, Window, degree=7, raw=TRUE),data = mdata_nem_interp2, weights = Weight_nem_interp)


#Evaluation

#Get the performance metrics
model_performance(per_lm1)
# Indices of model performance

AIC       |       BIC |    R2 | R2 (adj.) |   RMSE |  Sigma
-----------------------------------------------------------
56882.588 | 56907.695 | 0.282 |     0.282 | 76.943 | 18.289

> model_performance(per_lm2)
# Indices of model performance

AIC       |       BIC |    R2 | R2 (adj.) |   RMSE |  Sigma
-----------------------------------------------------------
56824.623 | 56868.562 | 0.293 |     0.293 | 56.366 | 18.147

> model_performance(per_lm3)
# Indices of model performance

AIC       |       BIC |    R2 | R2 (adj.) |   RMSE |  Sigma
-----------------------------------------------------------
56801.164 | 56870.210 | 0.299 |     0.298 | 52.652 | 18.084

> model_performance(per_lm4)
# Indices of model performance

AIC       |       BIC |    R2 | R2 (adj.) |   RMSE |  Sigma
-----------------------------------------------------------
56790.610 | 56891.041 | 0.303 |     0.300 | 45.092 | 18.048

> model_performance(per_lm5)
# Indices of model performance

AIC       |       BIC |    R2 | R2 (adj.) |   RMSE |  Sigma
-----------------------------------------------------------
56786.532 | 56924.623 | 0.306 |     0.302 | 47.961 | 18.025

> model_performance(per_lm6)
# Indices of model performance

AIC       |       BIC |    R2 | R2 (adj.) |   RMSE |  Sigma
-----------------------------------------------------------
56775.245 | 56957.276 | 0.310 |     0.305 | 59.946 | 17.984

> model_performance(per_lm7)
# Indices of model performance

AIC       |       BIC |    R2 | R2 (adj.) |   RMSE |  Sigma
-----------------------------------------------------------
56755.145 | 56987.390 | 0.316 |     0.310 | 62.748 | 17.920

Мои вопросы),

  • (i) какие альтернативные метрики я мог бы использовать для оценки производительности моделей с другого аспекта, что дает штраф за переобучение,
  • (ii) стоит ли попробовать использовать другую модель?
  • (iii) есть ли литература, которую я мог бы использовать, чтобы спорить, почему я должен использовать линейную аппроксимацию?

Спасибо за любые предложения.

0 ответов

Другие вопросы по тегам