4 Библиотеки Python для Feature Engineering, которые вам стоит использовать в 2023 году

“Feature Engineering” (отбор признаков)- это процесс использования предметной области данных для создания признаков. Feature Engineering является фундаментом для приложений машинного обучения, a также процессом трудным и затратным. Необходимости ручного конструирования признаков можно избежать при автоматизации прикладного обучения признакам.

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

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

Другими словами,  feature – это переменная (столбец в таблице датафрейма), которая описывает отдельную характеристику объекта данных. Признаки являются основой в задачах машинного обучениям, на их основании строятся предсказания в моделях.

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

Feature Engineering на Python направлен на повышение общей производительности моделей машинного обучения и создание наборов данных.

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

4 Библиотеки Python для Feature Engineering, которые вам стоит использовать в 2023 году

Feature Engineering

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

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

В этой статье я покажу вам 4 популярные библиотеки Python для автоматизированного отбора признаков с которыми каждый Data Science-разработчик должен быть знаком.

1. Featuretools

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

  • Сущности
  • Глубокий синтез признаков (DFS)
  • Функциональные примитивы

В Featuretools мы используем сущности для включения содержимого исходного фрейма данных Pandas, а EntitySet состоит из разных сущностей.

Ядром Featuretools является Deep Feature Synthesis (DFS), который представляет собой метод разработки функций, позволяющий создавать новые признаки из одного или нескольких фреймов данных.

DFS создаёт функции из примитивов, указанных в EntitySet. Например, функция mean в примитивах вычислит среднее значение переменных при агрегировании.

а) Подготовка данных

Скачайте и установите Featuretools от pip:

$ pip install featuretools

Запустите следующий код из официальной демо-версии:

import featuretools as ft
data = ft.demo.load_mock_customer()

customers_df = data["customers"]
customers_df
4 Библиотеки Python для Feature Engineering, которые вам стоит использовать в 2023 году
sessions_df = data["sessions"]
sessions_df.sample(5)
4 Библиотеки Python для Feature Engineering, которые вам стоит использовать в 2023 году
transactions_df = data["transactions"]
transactions_df.sample(5)
4 Библиотеки Python для Feature Engineering, которые вам стоит использовать в 2023 году

Ниже мы указываем словарь, содержащий каждый фрейм данных в датасете. Если в наборе данных есть столбец “id”, мы передаём его вместе с фреймами данных, как показано на рисунке ниже.

dataframes = {
    "customers": (customers_df, "customer_id"),
    "sessions": (sessions_df, "session_id", "session_start"),
    "transactions": (transactions_df, "transaction_id", "transaction_time"),
}

Далее мы определяем связи между фреймами данных. В этом примере у нас есть два отношения:

relationships = [
    ("sessions", "session_id", "transactions", "session_id"),
    ("customers", "customer_id", "sessions", "customer_id"),
]

b) Глубокий синтез признаков

Далее мы можем генерировать объекты с помощью DFS, для чего требуются три основных входных данных: “Фреймы данных”, “Список связей” и “Имя целевого фрейма данных”:

feature_matrix_customers, features_defs = ft.dfs(
    dataframes=dataframes,
    relationships=relationships,
    target_dataframe_name="customers",
)
feature_matrix_customers
4 Библиотеки Python для Feature Engineering, которые вам стоит использовать в 2023 году

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

feature_matrix_sessions, features_defs = ft.dfs( dataframes=dataframes, relationships=relationships, target_dataframe_name="sessions"
)
feature_matrix_sessions.head(5)
4 Библиотеки Python для Feature Engineering, которые вам стоит использовать в 2023 году

c) Визуализированный вывод функций

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

feature = features_defs[18]
feature
4 Библиотеки Python для Feature Engineering, которые вам стоит использовать в 2023 году

Вы можете найти более подробную информацию на официальном сайте.

2. TSFresh

TSFresh – это библиотека Python с открытым исходным кодом и мощными функциями извлечения данных временных рядов. Она применяет типичные алгоритмы статистики, анализа временных рядов, обработки сигналов и нелинейной динамики наряду с надёжными методами выбора признаков для завершения извлечения временных рядов.

TSFresh автоматически извлекает 100 объектов из временного ряда. Эти характеристики описывают основные факторы из временного ряда, такие как количество пиков и средние или максимальные значения, а также более сложные факторы, такие как симметричная распределение.

4 Библиотеки Python для Feature Engineering, которые вам стоит использовать в 2023 году

Следуя документации, вы можете легко протестировать её производительность, используя приведенные ниже коды:

$ pip install tsfresh
# example data download
from tsfresh.examples.robot_execution_failures import download_robot_execution_failures, load_robot_execution_failures
download_robot_execution_failures()
timeseries, y = load_robot_execution_failures()
# feature extraction
from tsfresh import extract_features
extracted_features = extract_features(timeseries, column_id="id", column_sort="time")

Вы можете найти более подробную информацию на официальном сайте.

3. Featurewiz

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

a) SULOV

Поиск некоррелированного списка переменных (SULOV):
Этот метод выполняет поиск в некоррелированном списке переменных для выявления допустимых пар. Он рассматривает пару переменных с наименьшей корреляцией и максимальным рейтингом MIS (оценка взаимной информации) для дальнейшей обработки.

4 Библиотеки Python для Feature Engineering, которые вам стоит использовать в 2023 году

b) Recursive XGBoost

Переменные, определённые в SULOV на предыдущем шаге, рекурсивно передаются в XGBoost, и функции, наиболее соответствующие целевому столбцу, выбираются с его помощью. В процессе объединяются и добавляются новые функции. Этот процесс повторяется до тех пор, пока не будут сгенерированы все допустимые варианты.

4 Библиотеки Python для Feature Engineering, которые вам стоит использовать в 2023 году

Простая демонстрация кода приведена ниже:

from featurewiz import FeatureWiz
features = FeatureWiz(corr_limit=0.70, feature_engg='', category_encoders='', dask_xgboost_flag=False, nrows=None, verbose=2)
X_train_selected = features.fit_transform(X_train, y_train)
X_test_selected = features.transform(X_test)
features.features  # the selected feature list #
# automated feature generation
import featurewiz as FW
outputs = FW.featurewiz(dataname=train, target=target, corr_limit=0.70, verbose=2, sep=',', 
                header=0, test_data='',feature_engg='', category_encoders='',
                dask_xgboost_flag=False, nrows=None)

Вы можете найти более подробную информацию на официальном сайте.

4) PyCaret

PyCaret – это библиотека машинного обучения с открытым исходным кодом на Python, которая автоматизирует рабочие процессы машинного обучения. Это комплексный инструмент машинного обучения и управления моделями, который ускоряет циклы экспериментов и повышает производительность.

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

Пример простого кода, реализованного на PyCaret:

$ pip install pycaret
# load dataset
from pycaret.datasets import get_data
insurance = get_data('insurance')
# setup
from pycaret.regression import *
reg1 = setup(data = insurance, target = 'charges', feature_interaction = True, feature_ratio = True)

Приведённая ниже таблица содержит функции, которые были сгенерированы автоматически:

4 Библиотеки Python для Feature Engineering, которые вам стоит использовать в 2023 году

Надеюсь, вы найдете что-то полезное в этой статье, спасибо за чтение!

@bigdatai – больше практических инструментов по работе с данными.

+1
0
+1
3
+1
1
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *