Как использовать регуляризацию лассо для определения наиболее важных независимых переменных

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

Чтобы проиллюстрировать этот подход, я буду использовать в качестве примера хорошо известный набор данных о жилищном строительстве в Эймсе, штат Айова. В одном из наших проектов учебного лагеря по науке о данных нам была поставлена ​​задача спрогнозировать цену дома на продажу. Данные, использованные для этого проекта, включают около 3000 записей о продажах домов, имевших место в период с 2006 по 2010 год в Эймсе. Каждая продажа включала в себя характеристики, относящиеся к размеру, качеству, местоположению, удобствам и т. Д. Проданного дома. Набор данных можно найти здесь: http://jse.amstat.org/v19n3/decock/AmesHousing.txt

Пройдя через процесс очистки и систематизации данных, у меня осталось 168 независимых переменных. Кстати, если вы когда-нибудь захотите получить хорошую практику очистки данных или если вы думаете, что очистка данных - это очень весело, этот набор данных займет много времени, чтобы проработать этот набор данных. В любом случае, при таком большом количестве независимых переменных существует риск того, что модель будет иметь высокую дисперсию или будет чрезмерно соответствовать обучающим данным. Первоначально я построил модель линейной регрессии, которая включала все 168 из этих функций. Модель показала неплохие результаты, получив оценку 0,90 R² по невидимым данным. Однако, как и ожидалось, дисперсия модели оставила место для улучшения (оценка R2 на данных обучения составила 0,93).

Здесь и вступает в игру регуляризация лассо. Не углубляясь в математику, можно сказать, что регуляризация ограничивает чрезмерную подгонку, добавляя штрафной член к функции потерь, который обычно пропорционален сложности модели. Регуляризация Риджа, основной аналог регуляризации лассо, наказывает все переменные одинаково. Регуляризация лассо работает, по сути, за счет устранения отдельных функций, которые чрезмерно усложняют модель. Если коэффициент штрафа лассо слишком низкий, чрезмерная подгонка не будет полностью исправлена. Если штраф за лассо слишком высок, модель будет чрезмерно упрощена, и произойдет недостаточная подгонка. Цель состоит в том, чтобы оптимизировать штраф лассо, чтобы ненужные, неважные переменные были обнулены, а важные предикторы сохранены.

Функция потерь суммы квадратов ошибок с регуляризацией лассо составляет:

Первый член в этой функции представляет собой сумму квадратов ошибок. Второй член - это штраф лассо. Когда регуляризация лассо применяется с помощью scikit-learn, альфа-коэффициент определяется пользователем при создании экземпляра модели лассо (значение по умолчанию = 1). Этот термин представляет собой общую силу штрафа за регуляризацию. Бета-члены - это коэффициенты, которые применяются к каждой независимой переменной. Что касается выбора функций, это важный компонент, на котором нужно сосредоточиться. Это то, что будет обнулено для наименее важных функций. И наоборот, наиболее важные функции будут иметь самые высокие значения бета. Это означает, что мы можем определить, какие функции наиболее важны, просто взглянув на бета-значения для каждой из них. После подбора модели лассо эти коэффициенты можно увидеть для каждого объекта с атрибутом «.coef_». Эти значения могут быть добавлены в Pandas DataFrame вместе с именами переменных и отсортированы для облегчения анализа.

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

  • надземная жилая площадь
  • общее качество материалов и отделки
  • рейтинг подвала
  • год постройки
  • общая оценка состояния

Интуитивно понятно, что все эти переменные могут быть важными предикторами продажной цены дома. Одним из преимуществ определения этих переменных было то, что я мог вернуться и построить простую линейную модель, которая включала только самые важные независимые переменные. Я сделал это для 20 самых важных функций. Оценка R² для данных тестирования составила 0,89, так что это было небольшое снижение производительности по сравнению с исходной моделью со всеми включенными переменными, но дисперсия была устранена. Кроме того, из-за простоты новой модели полученные в результате коэффициенты наклона линейной модели улучшили интерпретируемость. Я думаю, что это хорошая идея рассмотреть этот тип упрощенной модели вместе с другими более сложными моделями, которые работают лучше за счет интерпретируемости.

Напомним, вот быстрый метод определения наиболее важных функций в задаче линейной регрессии:

  1. Постройте модель линейной регрессии со всеми включенными функциями
  2. Если модель чрезмерно соответствует обучающим данным, примените регуляризацию лассо.
  3. Выделите наиболее важные особенности, изучив бета-коэффициенты для каждой переменной в функции потерь.