60 дней фильмов
и сериалов по промокоду:
VC60
Забрать
60 дней подписки Яндекс Плюс бесплатно для новых пользователей, ранее не оформлявших подписку Яндекс Плюс либо подписки, её включающие, при условии привязки банковской карты. Далее — автопродление: 199 ₽/месяц. Действует на территории РФ. Активировать до 30.08.2021 г. https://hd.kinopoisk.ru/gift. Условия: clck.ru/FMQND.
18+
Личный опыт
MagicScore

Stepwise алгоритм выбора фичей

В текущую эпоху больших данных, при построении классификационных моделей машинного обучения с учителем (supervised learning algorithm), часто возникает вопрос отбора построенных фичей (features), которые следует включить в модель/ Особенно остро возникает эта проблема при генерации тысяч и десятков тысяч переменных. Каким образом возможно отсеять "ненужные" и оставить те, что обладают наибольшей ранжирующей способностью?

В этой статье попробуем ответить на этот вопрос реализуя на языке Python "умный" алгоритм выбора фичей или stepwise selection algorithm.

Проблематика

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

  • Переобучение модели (overfitting). Модель потеряет способность обобщать на новых данных и подстроится под обучающую и валидационные выборки.
  • Сложность во внедрении и сопровождении такой модели.
  • Невозможность интерпретации результата принятия решения. Например, в случае внедрения моделей в банковском секторе при наличии отказа клиенту в займе, регулятор может попросить предоставить обоснование, почему такое решение было принято, и указывать описание тысяч переменных, которые были учтены при этом крайне затруднительно.

Метрика оценки

Поскольку мы рассматриваем классифкационные модели, в частности, модели с двумя исходами, то нашей метрикой оценки качества будет площадь под ROC-кривой (Area Under Curve или ROC AUC). В некоторых реализациях можно встретить оценку по методу наименьших квадратов (Ordinary Least Squares).

Алгоритм

1) Определить множество F всех фичей-кандидатов и целевую переменную (учителя или target).
2) Выбрать среди всех кандидитов ту переменную-фичу f1, модель с которой обладает наибольшим значением ROC AUC.
3) Исключить из множества F фичу f1.
4) Выбрать среди оставшихся кандидитов такую фичу f2, что в комбинации с выбранной ранее даёт модель с наибольшим значением ROC AUC.
5) Повторить 3-4 до тех пор, пока не закончатся переменные или не превысится ограничение на их количество.

Реализация

Для оценки ROC AUC будем использовать python-библиотеку sklearn и классическую логистическую регрессию.

from sklearn import linear_model from sklearn.metrics import roc_auc_score

Сперва реализуем функцию расчёта нашей метрики ROC AUC, которая принимает на вход обучающую выборку, обучает модель и вычисляет показатель:

def auc(variables, target, basetable): X = basetable[variables] y = basetable[target] logreg = linear_model.LogisticRegression() logreg.fit(X, y) predictions = logreg.predict_proba(X)[:, 1] auc = roc_auc_score(y, predictions) return auc

Затем, реализуем функцию отбора кандидата с наибольшим ROC AUC:

def select_next(current_variables, candidate_variables, target, basetable): best_auc = -1 best_variable = None for v in candidate_variables: auc_v = auc(current_variables + [v], target, basetable) if auc_v > best_auc: best_auc = auc_v best_variable = v return best_variable

Наконец, соединяем всё вместе и реализуем stepwise selection алгоритм:

# Определяем переменные кандидаты из таблицы candidate_variables = list(basetable.columns.values) candidate_variables.remove("target") # Инициализируем лист отобранных фичей current_variables = [] # Алгоритм stepwise с ограничением в 5 фичей number_iterations = 5 for i in range(0, number_iterations): next_variable = select_next(current_variables, candidate_variables, ["target"], basetable) current_variables = current_variables + [next_variable] candidate_variables.remove(next_variable) print("Переменная добавленная на шаге %s:\t%s " % (i+1, next_variable)) print(current_variables)

⚠ Замечание

Изолированно, некоторые фичи могут иметь больший вес ROC AUC сами по себе, но такие переменные могут быть не включены алгоритмом, например, из-за наличия высокой корреляции с другмими переменными.

Вместо заключения

Большое спасибо за внимание к статье, ей мы запускаем рубрику технического характера, в которой будем раскрывать проблематику прогнозирование дефолта заёмщика и разные ее аспекты.

Если статья показалась вам полезной, не забудьте поставить лайк и подписаться на наш блог, чтобы отслеживать появление нового материала.😉Будем благодарны за любые комментарии под статьей. В особенности ждем ваши пожелания по темам для дальнейшего разбора в нашей рубрике.

Для получения подробного описания сервисов компании MagicScore и интеграции с нами, пожалуйста, пишите в ЛС или оставляйте заявки на нашем сайте.

{ "author_name": "MagicScore", "author_type": "self", "tags": [], "comments": 5, "likes": 9, "favorites": 21, "is_advertisement": false, "subsite_label": "life", "id": 261270, "is_wide": true, "is_ugc": true, "date": "Mon, 21 Jun 2021 22:58:16 +0300", "is_special": false }
0
5 комментариев
Популярные
По порядку
3

А когда кросс-валидация?

Ответить
0

Артур, спасибо за вопрос! Статья на эту тему уже запланирована. Следите за обновлениями. 😊 

Ответить
2

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

Ответить
1

Последний абзац как бы намекает на то, что неплохо бы сначала провести анализ корреляции и проверить на мультиколинеарность VIF после построения модели.
"переменную-фичу f1 что обладает наибольшим значением ROC AUC." - фичи никаким AUROC не обладают, обладает модель с этой фичей, давайте будем точны в терминологии. Если помните, как строится ROC-кривая - мы плавно меняем cut-off линию от 0 к 1 и считаем accuracy и sensitivity модели (по сути наши X и Y на графике)
"бинарные модели с двумя исходами" - масло масляное, ок)
Вы забыли упомянуть, что stepwise может работать в обе стороны, как исключение, так и пошаговое включение фичей.
В целом, если статья рассчитана на новичков, неплохо бы начинать с самых азов.

Ответить
1

Антон, поправили, спасибо за замечание. А по поводу азов сказать что обязательно будем делать цикл статей от адама и евы☺️

Ответить
Читать все 5 комментариев
Можно ли продолжать работать в той же компании после выгорания: история продакт-менеджера Тинькофф

В Тинькофф — 28 000 сотрудников, и у каждого своя история. Кто-то легко справляется с работой, и после всех задач спокойно отключается и идет отдыхать. Другим все может даваться труднее, даже сложно в уйти в отпуск — думает, «как я всё здесь брошу». Мы начинаем серию статей от лица наших сотрудников, которые делятся своим опытом: какие появлялись…

«Стартап-полка»: Самокат набирает производителей альтернативных продуктов

Онлайн-ритейлер Самокат совместно с Ассоциацией Производителей Альтернативных Пищевых Продуктов объявляют сбор заявок от инновационных производителей продуктов для участия в «стартап-полке» Самоката. Лучшие продукты попадут в постоянный ассортимент Самоката в раздел «Супермаркет» уже этой осенью.

На конференции «B Word» Илон Маск в очередной раз поменял свою позицию по биткоину

В ходе конференции где также присутствовали Джек Дорси и Кэти Вуд, Маск отметил, что он является владельцем биткойнов не только через баланс Tesla и SpaceX, но и лично владеет биткойнами, эфиром и Dogecoin.

Возможности, как в корпорации, а гибкость, как у стартапа. Что думают о своей работе сотрудники DiDi

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

Восточная Техника успешно автоматизирует процессы управления складами на базе решения Columbus-WMS
ЦБ повысил ключевую ставку с 5,5% до 6,5% — это самое резкое повышение с 2014 года Статьи редакции

И четвёртое повышение с начала 2021 года.

The Insider и пятерых журналистов включили в список СМИ-иноагентов Статьи редакции

Информация об этом появилась на сайте Минюста.

Сбежал с $80 млн, пообещав построить фермы: история основателя игры Farm Bank, который обманул 130 тысяч человек Статьи редакции

Как Мехмет Айдын, создатель виртуальной фермы, создал схему Понци и обманул тысячи пользователей, вложивших реальные деньги в приложение — в пересказе Rest of World.

Айдын на основанной им ферме Daily Sabah
«Тинькофф» открыл центр разработки в Минске Статьи редакции

В команду ищут как студентов техвузов, так и продвинутых разработчиков — но предпочтение будут отдавать кандидатам со знанием английского языка.

Как кидают на авито… Половина машины
Украина ввела санкции против российского интернет-магазина Wildberries Статьи редакции

Под санкции попала и основательница компании Татьяна Бакальчук.

null