Следует ли добавить в модель новую функцию различия (z = x1-x2)?
В последнее время я задумываюсь над этим вопросом: следует ли добавлять новые функции на основе различий необработанных функций?
Настройка
Предположим, у меня есть 50 тыс. Данных и 20 функций, и это задача регрессии. В практике обработки данных мы обычно добавляем новые функции на основе необработанных функций. Однако я не знаю, когда нам следует добавить новую функцию z (z = x1 - x2) в нашу модель .
Мои мысли
Вот мое понимание: поскольку функция будет сброшена в модели, то, нормально ли она работает, зависит как от функции, так и от модели.
Возьмем для примера линейную регрессию:
head(mtcars)
fit1 = lm(mpg~ cyl+disp +hp +vs, data = mtcars)
summary(fit1)$adj.r.squared
data_add = cbind(mtcars,'c1' = mtcars$disp - mtcars$hp)
fit2 = lm(mpg~ cyl+disp + hp +vs + c1, data = data_add)
summary(fit2)$adj.r.squared
summary(fit2)
add_noise <- function(n){
res = NULL
for(i in 1:n){
data_add_noise = cbind(mtcars,'c1' = mtcars$disp - mtcars$hp + rnorm(nrow(mtcars),0,1))
fit3 = lm(mpg~ cyl+disp + hp +vs + c1, data = data_add_noise)
res = c(res,summary(fit3)$adj.r.squared)
}
return(mean(res))
}
add_noise(10000)
Выходы:
> summary(fit1)$adj.r.squared
[1] 0.7359967
> summary(fit2)$adj.r.squared
[1] 0.7359967
> add_noise(10000)
[1] 0.7359121
В линейной регрессии, если мы поместим z = x1-x2 в нашу модель, мы получим сингулярную матрицу проектирования, что означает, что R не будет использовать z для подбора коэффициентов. Другими словами, новая функция z не повлияет на производительность нашей модели.
Если мы используем z = x1- x2 + rnorm (n = 1, mean = 0, sd = 1) в нашей модели, мы снизим производительность нашей модели, так как мы вносим в нашу модель дополнительный шум.
Однако, если мы используем модели lgbm / xgboost / rf, поскольку древовидная модель разбивает узлы на основе коэффициента усиления информации / коэффициента усиления информации / примеси Джини, наша новая функция z = x1 - x2 может помочь с производительностью нашей модели.
Резюме
Следует ли нам добавлять нашу новую функцию различия (z = x1- x2) в нашу модель, зависит от модели, которую мы используем. Буду очень признателен увидеть любые другие идеи!
Ответы
Определяющей характеристикой линейной модели является то, что она линейна. Это означает, что результат$y$моделируется как линейная функция бесшумных характеристик$x_1, x_2$.
$$ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2+ \epsilon $$
Допустим, мы добавляем бесшумную функцию $x_3=x_1 - x_2$. Если мы посмотрим, как выражается эта модель, должно быть очевидно, что она ничем не отличается от нашей исходной модели. $$\begin{align} y &= \beta_0 + \tilde{\beta}_1 x_1 + \tilde{\beta}_2 x_2 + {\beta}_3 (x_1 - x_2)+ \epsilon \\ y &= \beta_0 + (\tilde{\beta}_1 + {\beta}_3) x_1 + (\tilde{\beta}_2 - {\beta}_3) x_2+ \epsilon \\ y &= \beta_0 + \beta_1 x_1 + \beta_2 x_2+ \epsilon \\ \end{align}$$ Другими словами, коэффициент при $x_3$ не определяется в этой модели, потому что это точно линейная комбинация $x_1$ а также $x_2$.
В вашем примере используется шум $x_3 = x_1 - x_2 + \eta$чтобы избежать неидентификации. Однако это равносильно добавлению коэффициента шума$\eta$: $$\begin{align} y &= \beta_0 + \tilde{\beta}_1 x_1 + \tilde{\beta}_2 x_2 + {\beta}_3 (x_1 - x_2 + \eta) + \epsilon\\ y &= \beta_0 + (\tilde{\beta}_1 + {\beta}_3) x_1 + (\tilde{\beta}_2 - {\beta}_3) x_2 + {\beta}_3\eta + \epsilon \\ y &= \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 \eta + \epsilon \\ \end{align}$$
Другими словами, шум $\eta$это третья особенность модели. Предполагается, что шум не связан с$y$, поэтому мы знаем, что истинный эффект $\eta$ на $y$равно нулю; включая$\eta$ вероятно повредит предсказаниям всякий раз, когда $\hat{\beta}_3 \neq 0$.
Вывод : не добавляйте$x_1-x_2+\eta$ к модели линейной регрессии, потому что в ней нет новой информации о $y$.
Модель ансамбля деревьев (случайный лес, xgboost) нелинейна: для любого двоичного разбиения дочерние узлы дают различные постоянные функции. Результатом многих таких двоичных разделений является разделение пространства признаков на ряд прямоугольников, выровненных по оси, каждый с различной оценкой.
Произвольно много двоичных разделений, выровненных по оси, могут аппроксимировать сложную границу с помощью более простых форм. Классическим примером является рассмотрение задачи двоичной классификации с идеальной линейной границей решения на линии$x_1 - x_2 > c$. Это проявляется в виде диагонального раскола. Очевидно, что разделение по одной оси не может очень хорошо аппроксимировать диагональ, но при многих разделениях с выравниванием по оси вы можете создать форму «ступеньки», которая может сколь угодно хорошо аппроксимировать диагональ . Точно так же то же самое верно и для аппроксимации соотношений, таких как логарифмы, квадраты, синусоиды и т. Д.
С другой стороны, добавление функции $x_1 - x_2$ к набору функций может улучшить модель, потому что двоичное разбиение сможет точно восстановить $x_1 - x_2 > c$. Такая разработка функций может улучшить модель, если вы заранее знаете, что эта функция полезна. С другой стороны, весь смысл использования продвинутых моделей, таких как случайный лес или усиленные деревья, состоит в том, чтобы восстановить полезные функции, когда мы не знаем точно, как все функции связаны с результатом.
Вывод : добавление$x_1 - x_2$ может улучшить модель, если $x_1 - x_2 > c$ важно для $y$.
Дополнительная информация: Последствия добавления столбцов преобразованных объектов для случайных лесов и лассо?