В этом видео мы поговорим о спрямляющих пространствах, которые позволяют восстанавливать нелинейные зависимости с помощью линейных моделей, и начнем с простого примера. Представьте, что мы решаем задачу регрессии, в которой есть всего один признак, который отложен по оси X, и по этому признаку нужно восстановить целевую переменную y, которая отложена по оси Y. Если мы попробуем применить линейную модель, то она получится вот такой. Видно, что она плохо подходит для решения задачи. Зависимость y от x явно нелинейная. Давайте теперь попробуем немножко модифицировать нашу модель. Добавим к исходному признаку x еще три признака: x², x³ и x⁴. Если мы над этими новыми признаками надстроим линейную модель, в которой будет уже 5 коэффициентов, а не 2, как было раньше, то получим вот такую модель. Видно, что она практически идеально описывает данные. Она очень хорошо решает задачу и при этом не переобучается. Получается, что мы перешли к новому признаковому пространству, в котором 4 признака, а не 1, в нем построили линейную модель, а в исходном пространстве эта модель уже нелинейная, и она очень хорошо описывает данные. А вот другой пример. Задача классификации с двумя признаками, x₁ и x₂, которые отложены по осям. Опять же видно, что разделяющая поверхность здесь вовсе не линейная. Если мы настроим линейный классификатор, он получится вот таким. Все объекты будет относить к красному классу. Это лучшее, что он может сделать, но понятно, что это никуда не годится. Опять же попробуем добавить новых признаков, а именно x₁², x₂² и x₁ * x₂, то есть квадратичные признаки. Если над ними построить линейную модель, то разделяющая поверхность в исходном пространстве будет вот такой. Она будет иметь форму окружности и очень хорошо разделять красные точки и синие точки. Опять же, в новом признаковом пространстве, имеющем большую размерность, мы построили линейную модель, и это соответствует построению нелинейной разделяющей поверхности в исходном двумерном признаковом пространстве. Таким образом, мы приходим к понятию спрямляющего пространства. Это такое признаковое пространство, в котором задача хорошо решается линейной моделью. Давайте разберем несколько примеров, как такое пространство можно отстроить. И первый пример — это добавление квадратичных признаков. Пусть объект описывается признаками x₁, ..., xd. Всего d признаков. Тогда добавим к этим признакам еще несколько, а именно квадраты исходных признаков x₁², ..., xd² и попарные произведения x₁x₂, x₁x₃ и так далее до x(d−1)xd. Заметим, что число признаков увеличится на порядок. Если у вас было не очень много объектов, то есть риск переобучения в таком большом признаковом пространстве. Нужно быть осторожным при использовании спрямляющих пространств. Если же у вас объектов много и вы не боитесь переобучения, но при этом знаете, что зависимости очень нелинейные, можно попробовать полиномиальные признаки более высоких порядков, например признаки третьего порядка. В этом случае помимо квадратичных признаков мы добавим еще кубы исходных признаков, то есть x₁³, x₂³, ..., а также произведение всех троек признаков x i-тое * x j-тое * x k-тое, где i, j и k — это какие-то индексы признаков. Также можно брать другие нелинейные функции. Например представьте, что мы используем признак «стоимость книги в интернет-магазине». Мы уже обсуждали этот пример ранее. Как мы говорили, большинство книг будут иметь стоимость в районе нескольких сотен рублей, но при этом есть очень дорогие книги. Распределение значений этого признака будет иметь тяжелый правый хвост. Это не очень хорошо для линейных моделей. Известно, что они работают гораздо лучше, если распределение признаков близко к нормальному. Чтобы сделать такое распределение тяжелых хвостов более близким к нормальному, нужно его прологарифмировать. Итак, если признак принимает только неотрицательные значения, то мы берем значение данного признака xᵢ, прибавляем к нему единицу, чтобы не взять логарифм от нуля, и берем логарифм от xᵢ + 1. После этого распределение станет более похожим на нормальное. Или же, если признак принимает как положительные, так и отрицательные значения, то можно сначала взять модуль от значения этого признака, а затем уже прибавить единицу и взять логарифм. Можно пробовать и другие нелинейные функции, но не будем об этом говорить сейчас. Итак, мы обсудили, что далеко не все задачи хорошо решаются линейными моделями. Но линейные модели можно применить к восстановлению нелинейных зависимостей, если перейти в спрямляющее пространство, то есть перейти к новым признакам, которые гораздо более сложные, чем исходные. Порождать эти признаки можно самыми разными способами, например достроить квадратичные, или кубические, или полиномиальные признаки более высоких размерностей. Или, скажем, брать логарифмы от исходных признаков. В следующем видео мы поговорим о том, как применять линейные модели к категориальным признакам.