Перейти к основному содержимому

Преобразование целевой переменной

Помимо предобработки признаков можно преобразовывать и саму целевую переменную yy. Например, удалять объекты, у которых отклик получился аномально большим или малым. Аномальные отклики могут быть вызваны ошибками в измерениях или нетипичными случаями, удаление которых повысит стабильность настройки модели.

Также часто проще прогнозировать не исходный отклик yy, а некоторую его преобразованную версию g(y)g(y). Например, при построении линейной регрессии может выясниться, что признаки и отклик связаны не линейно, а по экспоненциальному закону.

Тогда нужно нелинейно преобразовывать целевую переменную:

yg(y),y\to g(y),

после чего обучать модель на выборке

{(x1,g(y1),(x2,g(y2),...(xN,g(yN)}.\{(\mathbf{x}_1,g(y_1),(\mathbf{x}_2,g(y_2),... (\mathbf{x}_N,g(y_N)\}.

После применения модели её прогнозы нужно возвращать в исходную шкалу изменения отклика:

y^(x)g1(y^(x)),\hat{y}(\mathbf{x}) \to g^{-1}(\hat{y}(\mathbf{x})),

где g1()g^{-1}(\cdot) - обратная функция к g()g(\cdot).

Для откликов, принимающих только положительные значения, популярным преобразованием является логарифмирование и последующее экспоненцирование:

g(u)=ln(u),g1(u)=eu.g(u)=\ln(u),\quad g^{-1}(u)=e^u.

Более общий способ: подобрать такое преобразование целевой переменной, при котором отклик становится распределённым по нормальному закону распределения [1].

Если F()F(\cdot) - исходная функция распределения yy [2], а G()G(\cdot) - целевая функция распределения (например, стандартного нормального распределения), то преобразование G1(F(y))G^{-1}(F(y)) будет монотонным преобразованием, а преобразованный таким образом отклик иметь желаемое распределение G()G(\cdot). Такое преобразование реализовано в библиотеке sklearn [3].

Литература

  1. Википедия: нормальное распределение.
  2. Википедия: функция распределения.
  3. Sklearn: TransformedTargetRegressor.