Image

Инструкция по бесплатной GPT генерации новых фичей для наращивания точности ML модели

523fa51be18660cbdf1f23ceb6a93084

Одним из самых важных навыков любого специалиста по данным или ML инженера является умение извлекать информативные признаки из исходного набора данных. Этот процесс называемый feature engineering (инженерия признаков), — одна из самых полезных техник при построении моделей машинного обучения.

Работа с данными требует значительных инженерных усилий. Хотя современные библиотеки вроде scikit-learn помогают нам с большей частью рутинных операций, по-прежнему критически важно понимать структуру данных и адаптировать её под задачу, которую вы решаете.

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

Разумеется, feature engineering — это времязатратный, креативный и нередко утомительный процесс, требующий экспериментов и опыта.

Недавно я наткнулся на интересный инструмент — Upgini. Следуя тренду на использование Large Language Models (LLM), Upgini применяет GPT от OpenAI, чтобы автоматизировать процесс feature engineering для ваших данных.

Подробнее о python библиотеке Upgini можно почитать на GitHub странице проекта.

👉 GitHub — upgini/upgini: Data search library for Machine Learning

Use case: задача Amazon Fine Food Reviews

Для примера возьмём известный датасет Amazon Fine Food Reviews (публичная лицензия CC0).

Он содержит около 500 000 отзывов на продукты питания с Amazon. Он охватывает период более 10 лет и включает примерно 500 000 отзывов, опубликованных до октября 2012 года.

Каждый отзыв содержит:

  • информацию о товаре и пользователе,

  • оценку (рейтинг),

  • текст отзыва в свободной форме.

Также в датасет входят отзывы из других категорий Amazon, не только “Fine Food”.

Используя эти данные, мы попробуем решить задачу предсказания релевантности отзыва, которую часто решают Ecom площадки при модерации отзывов на товары.

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

Установка пакетов и подготовка данных

Начнём с установки Upgini:

pip install upgini

Загрузим датасет и приведём его к удобному виду:

import pandas as pd import numpy as np # Чтение данных df_full = pd.read_csv(«/content/Reviews.csv») # Преобразуем столбец времени df_full[‘Time’] = pd.to_datetime(df_full[‘Time’], unit=’s’) # Упорядочим колонки df_full = df_full[[‘Time’, ‘ProfileName’, ‘Summary’, ‘Text’, ‘HelpfulnessNumerator’, ‘HelpfulnessDenominator’, ‘Score’]]

953192eee2f3013f965278106e5e9c69

Оставим только отзывы, опубликованные после 2011-01-01 и имеющие более 10 оценок полезности:

df_full = df_full[(df_full[‘HelpfulnessDenominator’] > 10) & (df_full[‘Time’] >= ‘2011-01-01’)]

Создадим бинарное целевое событие — метку релевантности отзыва:

df_full.loc[:, ‘Helpful’] = np.where( df_full.loc[:, ‘HelpfulnessNumerator’] / df_full.loc[:, ‘HelpfulnessDenominator’] > 0.5, 1, 0)

Теперь объединим текст заголовка отзыва и содержания отзыва в один столбец:

df_full[«combined»] = ( «Title: » + df_full[«Summary»].str.strip() + » ; Content: » + df_full[«Text»].str.strip()) df_full.drop([‘Summary’, ‘Text’, ‘HelpfulnessNumerator’, ‘HelpfulnessDenominator’], axis=1, inplace=True) df_full.drop_duplicates(subset=[‘combined’], inplace=True) df_full.reset_index(drop=True, inplace=True)

Генерация признаков с помощью Upgini

Теперь можно начать генерацию новых признаков. В Upgini это делается с помощью объекта FeaturesEnricher. Базовая функция этого метода — находить новые полезные фичи.

Он принимает на вход SearchKey — перечень колонок в вашем датафрейме, по которому будет выполняться поиск новых фичей (например, дата, email, IP, телефон и т.д.). В нашем датафрейме из всех типов поддерживаемых ключей есть только Дата. Укажем ее.

from upgini import FeaturesEnricher, SearchKey enricher = FeaturesEnricher(search_keys={‘Time’: SearchKey.DATE}) enricher.fit(df_full[[‘Time’, ‘ProfileName’, ‘Score’, ‘combined’]], df_full[‘Helpful’])

После выполнения поиска Upgini вернет список найденных признаков — потенциально полезных фичей для дальнейшего обогащения ими ваших выборок.

Каждому признаку соответствует значение SHAP, показывающее его вклад в качество модели, а также источник данных.

Видно что значимым является только поле Score из исходного датафрейма, которое означает оценку выставленную пользователем (от 1 до 5).

00adcdf8349cca8e96045a1adb9d42e9

Кроме того, библиотека оценивает качество модели на отобранных фичах с доверительным интервалом.

f8328b3e0fc8fcbdf8736b96a24f4e8a

Генерация новых фичей с помощью GPT

В документации указано, что FeaturesEnricher поддерживает параметр generate_features, который позволяет создавать признаки на основе текстовых столбцов — как в нашем случае combined и ProfileName.

Запустим процесс генерации:

enricher = FeaturesEnricher( search_keys={‘Time’: SearchKey.DATE}, generate_features=[‘combined’, ‘ProfileName’] ) enricher.fit(df_full[[‘Time’, ‘ProfileName’, ‘Score’, ‘combined’]], df_full[‘Helpful’])

Результат — 9 новых значимых признака. Для каждого из них доступен отчёт с SHAP-оценкой, источником и охватом данных.

cb12bd875e91cd8e66b818fa033ed38f

Среди значимых фичей — две являются результатом Автогенерации поверх GPT — Кластер на текстовых эмбеддингах GPT и Расстояние до центроида на нормализованных векторах:

fb05185e1550494acee8506d74c19721

Интересно, что эти фичи поверх эмбеддингов на GPT дали вклад 20% в суммарный SHAP. Эту информацию также видно в отчете.

7278493bcf0dfa3f6bdbf3ece427eb4f

Благодаря добавленным признакам качество модели выросло с 0.522 Gini только на поле Score до 0.656 Gini. Итого поиск и ненерация новых фичей в Upgini позволили увеличить метрику Gini на 25.7%.

cd4b4368af2bf87c2aa01ba8d6236db5

Теперь попробуем обогатить нашу выборку найденными фичами для дальнейшего моделирования уже локально:

df_full_enrich = enricher.transform(df_full)

При запуске Upgini вернул ошибку:

3fb3390981aa0063b1baf21689e7ed68

Эта ошибка означает, что обогащение данным типом фичей невозможно без регистрации. Окей, регистрация в Upgini бесплатная. Идем на сайт, нажимаем Войти (Sign In). Система запрашивает мой email:

ff60a5ab272c1cb4818c5d1d647e4484

После ввода email-а и нажатия Login, на почту которую я ввел пришла уникальная ссылка для авторизации.

7b6e7ac91e6c259b7c3105a1321fa849

Нажимаем Sign-In и получаем доступ в Личный Кабинет с персональным API KEY.

ddd58137d138bc19f6932b22762503f5

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

enricher = FeaturesEnricher( search_keys={‘Time’: SearchKey.DATE}, generate_features=[‘combined’, ‘ProfileName’], api_key=»УКАЖИТЕ_СВОЙ_КЛЮЧ» ) enricher.fit(df_full[[‘Time’, ‘ProfileName’, ‘Score’, ‘combined’]], df_full[‘Helpful’])

Результат вернулся из кэша моментально, поскольку этот поиск уже запускался мной ранее, правда без авторизации.

Снова запускаем обогащение:

df_full_enrich = enricher.transform(df_full)

Upgini обогатил нашу выборку новыми фичами, полученными по ключу Дата, и фичами полученными с помощью генерации, включая генерацию с использованием GPT.

0e5c74212d2602c759dd9c217ebe646b

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

Заключение

Upgini — новая Python библиотека с открытым кодом, которая позволяет экономить тонну времени специалистам по данным и ML инженерам. Он упрощает рутину генерации признаков, находит полезные внешние данные, а использование GPT-моделей делает возможным автоматическое создание информативных признаков из текстов. Все это в совокупности помогает значимо улучшить качество вашей модели и продемонстрировать лучший результат либо в каком-нибудь соревновании, либо на работе.

Я продолжаю исследовать возможности пакета, но уже сейчас могу сказать: GPT-генерация признаков — это действительно крутая штука, которая помогает увеличить точность моделей.

Попробуйте на своих данных и поделитесь результатами!

Источник: habr.com

✅ Найденные теги: Инструкция, новости

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

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

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Фото сгенерированных лиц: исследование показывает, что люди не могут отличить настоящие лица от сгенерированных
Нейросети построили капитализм за трое суток: 100 агентов Claude заперли…
Скетч: цифровой осьминог и виртуальный мир внутри компьютера с человечком.
Сцена с жестами пальцами, где один жест символизирует "VPN", а другой "KHP".
‼️Paramount купила Warner Bros. Discovery — сумма сделки составила безумные…
Скриншот репозитория GitHub "Claude Scientific Skills" AI для научных исследований.
Структура эффективного запроса Claude с элементами задачи, контекста и референса.
Эскиз и готовая веб-страница платформы для AI-дизайна в современном темном режиме.
ideipro logotyp
Image Not Found
Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.

Система оповещения обсерватории Рубина отправила 800 000 сигналов в первую ночь наблюдений.

Астрономы будут получать оповещения о небесных явлениях в течение нескольких минут после их обнаружения. Теренс О'Брайен, редактор раздела «Выходные». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной…

Мар 2, 2026
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.

Расследование в отношении 61-фунтовой машины, которая «пожирает» пластик и выплевывает кирпичи.

Обзор компактного пресса для мягкого пластика Clear Drop — и что будет дальше. Шон Холлистер, старший редактор Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего…

Мар 2, 2026
Черный углеродное волокно с текстурой плетения, отражающий свет.

Материал будущего: как работает «бессмертный» композит

Учёные из Университета штата Северная Каролина представили композит нового поколения, способный самостоятельно восстанавливаться после серьёзных повреждений.  Речь идёт о модифицированном армированном волокном полимере (FRP), который не просто сохраняет прочность при малом весе, но и способен «залечивать» внутренние…

Мар 2, 2026
Круглый экран с изображением замка и горы, рядом электронная плата.

Круглый дисплей Waveshare для креативных проектов

Круглый 7-дюймовый сенсорный дисплей от Waveshare создан для разработчиков и дизайнеров, которым нужен нестандартный экран.  Это IPS-панель с разрешением 1 080×1 080 пикселей, поддержкой 10-точечного ёмкостного сенсора, оптической склейкой и защитным закалённым стеклом, выполненная в круглом форм-факторе.…

Мар 2, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых