Архив рубрики ~Лента новостей~

Инструкция по бесплатной 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

✅ Найденные теги: Инструкция, новости
Читайте также
Архив рубрики ~Обо всем~ В трейлере фильма «Социальный расплата» Джереми Стронг играет непокорного Марка Цукерберга. Архив рубрики ~Обо всем~ 7+ настроек конфиденциальности телефона, которые следует проверить и отключить как можно скорее, чтобы избежать раскрытия ваших личных данных. Архив рубрики ~Обо всем~ Привет, Siri! Теперь ты — основа для умных очков Apple. Архив рубрики ~Обо всем~ Помимо функции extract_text: два слоя PDF-файла, определяющие качество RAG. Архив рубрики ~Обо всем~ AT&T теперь предлагает дневные абонементы за 3 доллара на «безлимитный» мобильный интернет для iPad. Архив рубрики ~Обо всем~ Как смотреть Чемпионат мира по футболу FIFA 2026: 10 способов трансляции (включая бесплатные варианты) Архив рубрики ~Обо всем~ Байесовские сети и сети Маркова: интуитивно понятное руководство по структурированной неопределенности Архив рубрики ~Обо всем~ Премия EPICS от IEEE присуждается выдающимся студентам и преподавателям. Архив рубрики ~Обо всем~ Компания Waymo создала виртуального водителя-человека для улучшения своих роботакси. Архив рубрики ~Обо всем~ Мы создаём паноптикум с помощью краудсорсинга. Архив рубрики ~Обо всем~ Электромобили GM вскоре будут поддерживать больше типов общественных зарядных станций. Архив рубрики ~Обо всем~ Удаленная работа ухудшила психическое здоровье. Причиной стало увеличение времени в одиночестве Архив рубрики ~Обо всем~ Первый тест-драйв: Rivian R2 2027 года полностью меняет правила игры в мире электромобилей. Архив рубрики ~Обо всем~ Загадочный случай исчезновения носимого устройства Архив рубрики ~Обо всем~ В трейлере фильма «Социальный расплата» Джереми Стронг играет непокорного Марка Цукерберга. Архив рубрики ~Обо всем~ 7+ настроек конфиденциальности телефона, которые следует проверить и отключить как можно скорее, чтобы избежать раскрытия ваших личных данных. Архив рубрики ~Обо всем~ Привет, Siri! Теперь ты — основа для умных очков Apple. Архив рубрики ~Обо всем~ Помимо функции extract_text: два слоя PDF-файла, определяющие качество RAG. Архив рубрики ~Обо всем~ AT&T теперь предлагает дневные абонементы за 3 доллара на «безлимитный» мобильный интернет для iPad. Архив рубрики ~Обо всем~ Как смотреть Чемпионат мира по футболу FIFA 2026: 10 способов трансляции (включая бесплатные варианты) Архив рубрики ~Обо всем~ Байесовские сети и сети Маркова: интуитивно понятное руководство по структурированной неопределенности Архив рубрики ~Обо всем~ Премия EPICS от IEEE присуждается выдающимся студентам и преподавателям. Архив рубрики ~Обо всем~ Компания Waymo создала виртуального водителя-человека для улучшения своих роботакси. Архив рубрики ~Обо всем~ Мы создаём паноптикум с помощью краудсорсинга. Архив рубрики ~Обо всем~ Электромобили GM вскоре будут поддерживать больше типов общественных зарядных станций. Архив рубрики ~Обо всем~ Удаленная работа ухудшила психическое здоровье. Причиной стало увеличение времени в одиночестве Архив рубрики ~Обо всем~ Первый тест-драйв: Rivian R2 2027 года полностью меняет правила игры в мире электромобилей. Архив рубрики ~Обо всем~ Загадочный случай исчезновения носимого устройства

Подписка на рассылку

Получайте свежие новости и идеи на почту. Без спама — только самое интересное.

Нажимая «Подписаться», вы соглашаетесь с политикой конфиденциальности.