60 дней фильмов и сериалов
по промокоду:
VC60
Забрать
60 дней подписки Яндекс Плюс бесплатно для новых пользователей, ранее не оформлявших подписку Яндекс Плюс либо подписки, её включающие, при условии привязки банковской карты. Далее — автопродление: 199 ₽/месяц. Действует на территории РФ. Активировать до 31.10.2021 г. https://hd.kinopoisk.ru/gift. Условия: clck.ru/FMQND.
Личный опыт
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": 20, "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 комментариев
Минтранс разработал новые правила проезда по платным дорогам — с ограничениями за долги и возможностью вернуть деньги Статьи редакции

Операторы будут не обязаны указывать информацию об изменении тарифов на табло и в пунктах оплаты.

Электромобиль компании Lucid бывшего сотрудника Tesla опередил Model S по дальности пробега на одном заряде в 1,3 раза Статьи редакции

Американский регулятор зарегистрировал рекордный результат в 836 км.

Lucid Air Dream Edition Range Lucid
19 этикеток вина, которые намного больше, чем просто этикетка

Что может быть лучше, чем этикетка для вина, чтобы рассказать историю. Я веду канал «Логотип побольше», где за более чем год собрал 19 этикеток вина, которые созданы не просто так, а имеют замечательную, порой красивую, а иногда и поразительную идею.

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

Благодаря партнёрству ритейлер планирует сократить время доставки с 1–2 часов до 15 минут.

«Оптимальный портфель» – новая стратегия автоследования от «БКС Мир инвестиций»

«БКС Мир инвестиций» запустил новую стратегию «Оптимальный портфель» на площадке Fintarget – маркетплейсе инвестиционных стратегий.

Как успешно продавать кондиционеры с минимальными затратами на рекламу

Владелица магазина кондиционеров Светлана Исюк рассказала, как полезный контент и внимание к клиентам помогают выделиться на фоне конкурентов и как виртуальный маркетолог Макс помог продать 150 акционных моделей.

Осталось всего 3 дня, чтобы подать заявку в Finlanding
Disney построил дом Винни-Пуха в английском лесу — его можно арендовать на ночь через Airbnb Статьи редакции

Ночь стоит от 7633 рублей.

Спальная зона Airbnb
«Яндекс.Маркет» начнёт выпускать продукты и электронику под собственной маркой Статьи редакции

Товары под брендом «Кстати, на Маркете» будут продаваться только на маркетплейсе.

В Москве стартовал прием заявок на соискание премий в области охраны окружающей среды

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

фото: Департамент природопользования и охраны окружающей среды города Москвы

Премия разделена на два блока и предусматривает финансовое вознаграждение. Один блок – конкурс в области охраны окружающей среды – включает 8 премий. Сумма награды составляет по 200 тысяч рублей и по 100 тысяч рублей в 4-х номинациях.

null