NTA

Создание новых признаков для повышения качества машинного обучения

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

  1. Математическое преобразование
  2. Групповое преобразование
  3. Счет количества признаков

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

  1. Снижение скорости расчета или требуемого объема данных.
  2. Улучшение интерпретируемость модели.
  3. Повышение точности предсказаний.

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

Для сравнения результатов точности модели будет использоваться показатель RMSLE (среднеквадратичная логарифмическая ошибка).

model = XGBRegressor() log_y = np.log(y) score = cross_val_score(model, X, log_y, cv=5, scoring="neg_mean_squared_error") score = -1 * score.mean() score = np.sqrt(score)

Взаимная информация (Mutual Information)

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

Пример реализации представлен на наборе данных цен на недвижимость, размещенного на портале Kaggle. (ссылка)

Импорт библиотеки:

from sklearn.feature_selection import mutual_info_regression

Все дискретные признаки должны иметь тип данных integer. Проверим дополнительно выполнение этого условия:

discrete_features = X.dtypes == int

Расчет показателя взаимной информации:

mi_sc = mutual_info_regression(X, y, discrete_features=discrete_features, random_state=0) mi_sc= pd.Series(mi_scores, name="MI Scores", index=X.columns) mi_sc = mi_scores.sort_values(ascending=False)

Стоит учесть, что для расчета взаимной информации, следует обработать пропуски в данных, а также категориальные переменные заменить на числовые (например с помощью команды df[‘название столбца’].factorize())

Выведем признаки с самым большим значением показателя MI:

mi_sc.head(8)

Выведем признаки с самым маленьким значением MI:

mi_sc.tail(8)

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

Тем не менее, когда признаков много, можно пожертвовать несколькими в угоду более быстрому расчету.

Удалим неинформативный признаки следующей командой:

X = X.loc[:, mi_sc > 0.0]

Математическое преобразование

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

X['bath_to_bedr'] = (X['FullBath'] + X['HalfBath']) / X.TotRmsAbvGrd

Счет количества признаков

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

porch_cols = ["EnclosedPorch", "Threeseasonporch", "WoodDeckSF", "OpenPorchSF", "ScreenPorch"]

Методом gt проверяем, чтобы значения в столбцах были больше нуля и переводим в булевые значения. Метод sum суммирует значения, принимающие True

X["Types_of_Porch"] = X[porch_cols].gt(0.0).sum(axis=1)

Групповое преобразование

Создадим признак, который отражает среднее значение жилой площади дома в данном районе.

X["Med_LivArea"] = X.groupby("Neighborhood")["GrLivArea"].transform("median")

Результаты

После проведенных преобразований был рассчитан показатель RMSLE, значение которого улучшилось:

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

Экспериментируйте, применяйте различные подходы и повышайте качество работы ваших моделей. Успехов!

Примечание: Картинка сгенерирована нейросетью ruDALL-E.

0
0 комментариев
Популярные
По порядку
Читать все 0 комментариев
Анастасии звонят чаще, чем Владимиры — Yota подготовила статистику клиентов по именам

По данным Yota за 2021 год, самые часто встречающиеся мужские имена среди пользователей мобильного оператора – Александр, Сергей, Алексей. Женские – Елена, Наталья, Татьяна. При этом Александров на 21,4% больше, чем Елен.

Принятие решений со скоростью потоков событий на живом примере

В 2022 году, согласно прогнозам Gartner, организации будут объединять данные из десятков внутренних и внешних систем, сокращать зазор между поступлением данных и их обработкой с дней до секунд, создавать инфраструктуру для аналитики, прогнозирования и принятия решений в реальном времени.

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

Почему сейлзы должны работать в CRM, а не в «1C», и как это сделать

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

Давайте проследим за популярными инвесторами из «Пульса» в «Тинькофф Инвестициях» в столь непростые для рынка времена

Моя предыдущая статья “Популярные авторы «Пульса» в «Тинькофф Инвестициях» торгуют в убыток” набрала около 25к просмотров в первые 12 часов и более 43к на данный момент. Поэтому было принято решение продолжить тематику инвестиций и публикации результатов популярных инвесторов социальность сети «Пульс».

Панельного неба скульптура: Никита Анохин делает ночники в виде советских домов, а их покупают в России и за рубежом Статьи редакции

Мастерская Nikita Anokhin Store началась на кухне со шкатулок-сердец. В 2021 году он заработал на «Брежневках», «Свечках» и других проектах 3,6 млн рублей чистой прибыли.

Ночники Brezhnevka и «Свечка». Фото предоставлены мастерской.
Как работает реферальная программа в Playgendary

30-40% принятых офферов — это рекомендации, которых мы получаем по 200-300 ежемесячно. Рассказываем, как пришли к такому результату.

Ресторан в США потребовал от сотрудников получать хорошие отзывы на Google Maps — менеджера уволили за эту идею Статьи редакции

Объявления с угрозами уволить «недорабатывающих» сотрудников опубликовали на Reddit и сообщество завалило заведение плохими оценками.

Какие митапы Evrone готовит в этом году?
Самое интересное из интервью автора Vim Брама Моленара для Evrone

Брам Моленар — первый автор, координатор проекта, менеджер релизов и «великодушный пожизненный диктатор» очень популярного среди программистов и опытных пользователей текстового редактора Vim, развившего идеи vi. Evrone поговорил с ним о функциональности, монетизации и развитии Vim.

Python-разработчик, UX-писатель и Product-менеджер. На кого учатся россияне и сколько тратят на онлайн-образование

Ко Дню студента мы выяснили, как в 2021 году изменился спрос на онлайн-образование по сравнению с 2020 годом. Рассказываем, что изменилось за год, и какие направления онлайн-образования пользуются наибольшей популярностью.

null