Одним из способов борьбы с мультиколлинеарностью является оценка ридж- или LASSO-регрессии. Перейдем к оценке ридж и LASSO-регрессии. Ридж и LASSO. Для этой регрессии требуется отдельно получить регрессоры в отдельную матрицу и в один вектор отдельный зависимую объясняемую переменную. Соответственно, y — это будет объясняемая переменная. Из набора данных h мы достаем переменную dist, а матрица х0 у нас уже есть. Но, давайте я для ясности скопирую ее код. Это наша матрица объясняющих переменных, то бишь регрессоров. И, соответственно, давайте сначала оценим LASSO. m_lasso равняется glmnet, команда, которая оценивает LASSO, ридж-регрессию и регрессию эластичной сети. Регрессоры берутся из матрицы х0. Зависимая переменная лежит в y. Alpha — это переменная, которая определяет, собственно, какой тип в регуляризации LASSO, ридж будет использоваться. LASSO соответствует alpha равному единичке. И дальше надо задать вектор потенциальных лямбд. Давайте зададим сначала вектор лямбд, это коэффициенты, с которыми у нас в RSS входит штраф за большой размер коэффициента β с крышкой. То есть введем вектор лямбда, lambdas, это будут разные лямбды. Это будет последовательность. Вот здесь единственный принципиальный момент, последовательность надо указывать от большего лямбда к меньшему, чтобы работала функции glmnet. Ну, пусть будет, скажем, lambda от 50 до 1 с шагом в... давайте даже до 0,1, и пусть будет там длина 30 разных лямбд. Соответственно, мы создали вектор разных лямбд, которые будут использоваться в алгоритме LASSO и ридж. Здесь мы указываем наши lambdas. Итак, компьютер оценил модель LASSO. Теперь мы можем построить ряд интересных графиков, которые нам позволяют визуализировать результаты оценивания лассо-регрессии. Во-первых, plot, модель lasso, по горизонтали отложим, собственно, лямбду. И давайте добавим на график отметки. Посмотрим, что получится. Перед нами следующий график. У нас в модели имеется коэффициент перед скоростью, перед скоростью в квадрате, перед скоростью в кубе. И, соответственно, по горизонтали здесь на графике отложим логарифм лямбды, а по вертикали отложим размер коэффициента. Вот единичка… Единичка — это размер первого коэффициента. Двоечка и троечка, здесь они сливаются, коэффициенты практически равны нулю. Это размер второго и третьего коэффициента. Что мы видим? Соответственно, если lambda очень маленький, то есть маленький минус 2 логарифм lambda — это означает очень маленький lambda. Это означает, что практически мы имеем МНК оценки, то есть никакого штрафа за размер β c крышкой у нас нет. Соответственно, здесь у нас первый коэффициент равен 2 с небольшим, а остальные два равны 0. Однако, если мы увеличиваем lambda, то при большом размере штрафа, при размере штрафа около, соответственно, Е. Ну то есть логарифм около одного, соответственно, сам коэффициент штрафа около 2,7. Резко падает первый коэффициент, ну и потихоньку при огромном-огромном размере штрафа все коэффициенты равны 0. Соответственно, у нас получается некая содержательная первая интерпретация. Как зависит от lambda размер каждого коэффициента, величина каждого коэффициента. Вторая картинка, которую мы можем здесь смотреть. Чуть-чуть другой график, по горизонтали можно отложить долю объясненной дисперсии. Соответственно, здесь мы на графике видим, что чем меньше размер, чем меньше коэффициент штрафной lambda, тем больше дисперсий разброса объясняемой переменной Y мы можем объяснить. Соответственно, если я хочу объяснить очень, ну практически максимум, который может объяснить метод наименьших квадратов разброса, то мне надо взять первый коэффициент, равный чуть больше 2, ну и остальные около 0. Однако, если я согласен пожертвовать небольшим количеством... смотрите, я жертвую совсем небольшим процентом объясненной дисперсии. То есть где-то от, ну, наверное, 0,67. Если я снижу желаемую долю объясненной дисперсии до 0,63, то коэффициент резко падает. Коэффициент резко приближается к 0. То есть, приблизив резко коэффициент к 0, вот такое вертикальное падение в процентах, оно очень большое, я получу всего лишь небольшую жертву в виде потери доли объясненной дисперсии. Соответственно, имеет смысл, если я хочу, чтобы коэффициенты были небольшие, с небольшой дисперсией, соответственно, можно чуть-чуть пожертвовать долей объясненной дисперсии зависимой переменной. И еще один график — можно разложить штраф на составляющие. То есть по горизонтали можно отложить норму вектора. Здесь по горизонтали отложена, собственно, величина штрафа, то есть это сумма модулей β с крышкой. Модуль β_1 с крышкой + модуль β_2 с крышкой + модуль β_3 с крышкой. То есть это суммарный вклад в штраф, который вносят все β. А здесь он разложен по вертикали по коэффициентам. И мы видим, что первый коэффициент, он, собственно, практически полностью определяет нам величину штрафа. Чем больше совокупная сумма модулей β_1 с крышкой + β_2 с крышкой + β_3 с крышкой, тем больше первый коэффициент, а два остальных колеблются около 0. Соответственно, можно посмотреть на сами коэффициенты. Ну, давайте выберем, например, коэффициенты модели m_lasso и укажем конкретное значение lambda, например, возьмем lambda равное 0,1 и lambda равное 1. Соответственно, я показал как выглядят оценки lasso, коэффициентов в LASSO-регрессии для двух разных лямбд, для lambda равного 0,1 и для lambda равного 1. Вот здесь видно, что коэффициент при квадрате скорости точно попал в ноль. А остальные коэффициенты не нули.