"Машинное обучение"

Выбор регрессионных признаков с помощью Kydavra LassoSelector

Все мы знаем бритву Оккама:

Из набора решений взял самое простое.

Этот принцип применяется при регуляризации линейных моделей в машинном обучении. L1-регуляризация (также известная как LASSO) имеет тенденцию уменьшать размеры линейной модели до 0, в то время как L2-регуляризация (известная как Ridge), как правило, сохраняет общую сложность как можно более простой за счет минимизации нормы векторных весов модели. Один из селекторов Kydavra использует лассо для выбора лучших характеристик. Итак, давайте посмотрим, как это применить.

Использование Kydavra LassoSelector.

Если вы все еще не установили Kydavra, просто введите следующее в командной строке.

pip install kydavra

Затем нам нужно импортировать модель, создать селектор и применить его к нашим данным:

from kydavra import LassoSelector
selector = LassoSelector()
selected_cols = selector.select(df, ‘target’)

Функция выбора принимает в качестве параметров фрейм данных панды и имя целевого столбца. Кроме того, у него есть параметр по умолчанию «cv» (по умолчанию он равен 5), он представляет количество сверток, используемых при перекрестной проверке. LassoSelector () принимает следующие параметры:

  • alpha_start (float, default = 0) начальное значение альфы.
  • alpha_finish (float, default = 2) окончательное значение альфы. Эти два параметра определяют пространство поиска алгоритма.
  • n_alphas (int, по умолчанию = 300) количество альф, которые будут проверены во время поиска.
  • extend_step (int, default = 20), если алгоритм определит, что наиболее оптимальным значением alpha является alpha_start или alpha_finish, он расширит диапазон поиска с помощью extend_step, таким образом, будучи уверенным, что он не закрепится и наконец найдет оптимальное ценить.
  • power (int, default = 2), используемый в формуле 10 ^ -power, определяет максимально допустимое значение, которое следует принять за 0.

Таким образом, алгоритм после нахождения оптимального значения альфа просто увидит, какие веса выше 10 ^ -степени.

Рассмотрим пример:

Чтобы продемонстрировать его эффективность, я выбрал набор данных Avocado Цены.

После небольшой очистки и обучения его следующим функциям:

'Total Volume', '4046', '4225', '4770', 'Small Bags', 'Large Bags', 'XLarge Bags', 'type', 'year'

LinearRegression имеет среднюю абсолютную ошибку, равную 0,2409683103736682.

Когда LassoSelector применяется к этому набору данных, он выбирает следующие функции:

'type', 'year'

Используя только эти функции, мы получили MAE = 0,24518692823037008.

Неплохой результат (учтите, мы используем всего 2 функции).

Примечание. Иногда рекомендуется применять лассо к масштабированным данным. В этом случае, применительно к данным, селектор не выбрасывал никаких функций. Вам предлагается поэкспериментировать и попробовать с масштабированными и немасштабированными значениями.

Бонус.

Этот модуль также имеет функцию построения графиков. После применения функции выбора вы можете увидеть, почему селектор выбрал одни функции, а другие - нет. Для построения просто введите:

selector.plot_process()

Пунктирные линии - это объекты, которые были отброшены, потому что их веса были слишком близки к 0. Центрально-вертикальная пунктирная линия - оптимальное значение альфа, найденное алгоритмом.

Функция plot_process () имеет следующие параметры:

  • eps (float, default = 5e-3) длина пути.
  • title (string, default = ‘Lasso coef Plot’) - название сюжета.
  • save (boolean, default = False), если установлено значение true, он попытается сохранить график.
  • file_path (string, default = None), если для параметра save установлено значение true, график будет сохранен с использованием этого пути.

Заключение

LassoSelector - это селектор, который использует алгоритм LASSO для выбора наиболее полезных функций. Иногда бывает полезно масштабировать функции, мы настоятельно рекомендуем попробовать и то, и другое.

Если вы попробовали kydavra, приглашаем вас поделиться впечатлениями, заполнив эту форму.

Сделано с ❤ от Sigmoid.

Полезные ссылки: