Создание взаимодействий и полиномиальных признаков
PolynomialFeatures, ручные признаки взаимодействия, относительные признаки и разбиение непрерывных переменных на интервалы.
«Создание взаимодействий и полиномиальных признаков» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Зачем создавать новые признаки
Линейные модели способны выявлять только прямолинейные зависимости. Создавая признаки взаимодействия и полиномиальные признаки, Вы позволяете простым моделям описывать кривые и совместное влияние переменных.
Что такое признаки взаимодействия
Взаимодействие перемножает два признака, например area = length * width. Оно отражает эффекты, зависящие сразу от обоих входных признаков, которые по отдельности не объясняются.
Основы PolynomialFeatures
PolynomialFeatures автоматически создаёт степени и произведения признаков до выбранной степени degree. Степень 2 добавляет квадраты и попарные произведения.
from sklearn.preprocessing import PolynomialFeatures
import numpy as np
X = np.array([[2, 3]])
poly = PolynomialFeatures(degree=2)
print(poly.fit_transform(X))
# 1, x1, x2, x1^2, x1*x2, x2^2Режим interaction_only
Параметр interaction_only=True сохраняет произведения разных признаков, но удаляет чистые степени, например x1^2. Это полезно, когда Вам нужны только совместные эффекты, а не кривизна зависимостей.
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2, interaction_only=True, include_bias=False)
X_int = poly.fit_transform(X)Остерегайтесь взрыва числа признаков
Высокие степени создают множество признаков и повышают риск переобучения. Для 10 входных признаков степень 3 порождает сотни столбцов. Ограничивайте степень значением 2 или 3 и сочетайте преобразование с отбором признаков или регуляризацией.
Признаки отношений, созданные вручную
Знания предметной области часто эффективнее полного перебора. Созданные вручную отношения, например цена за квадратный метр или число кликов на один показ, передают смысл, который полиномиальное разбиение не обнаружило бы.
import pandas as pd
df["price_per_sqm"] = df["price"] / df["area"]
df["ctr"] = df["clicks"] / df["impressions"]Разбиение на интервалы с помощью pd.cut
Разбиение на интервалы превращает непрерывную переменную в категории. pd.cut разделяет столбец на интервалы, что полезно для выявления нелинейных эффектов или группировки возрастов, доходов и других значений.
import pandas as pd
df["age_group"] = pd.cut(
df["age"],
bins=[0, 18, 35, 60, 120],
labels=["minor", "young", "adult", "senior"],
)Разбиение на интервалы с одинаковой частотой
pd.qcut создаёт интервалы примерно с одинаковым числом элементов (квантили). Это удобно, когда распределение асимметрично и Вам нужны сбалансированные группы.
import pandas as pd
df["income_quartile"] = pd.qcut(df["income"], q=4, labels=False)Обработка асимметрии с помощью логарифмического преобразования
Признаки с правосторонней асимметрией (доходы, цены, количества) ухудшают работу многих моделей. Логарифмическое преобразование сжимает большие значения и делает распределение более симметричным.
import numpy as np
# log1p handles zeros safely: log(1 + x)
df["log_income"] = np.log1p(df["income"])Квадратный корень и другие преобразования
Преобразование с помощью квадратного корня также уменьшает асимметрию, но мягче, чем логарифм, поэтому хорошо подходит для данных о количествах. Выбирайте преобразование, которое лучше всего делает гистограмму симметричной.
import numpy as np
df["sqrt_count"] = np.sqrt(df["count"])
# inspect df["sqrt_count"].hist() to confirm reduced skewОбъединение подходов
Сочетайте разные подходы: применяйте логарифмическое преобразование к асимметричным столбцам, разбивайте на интервалы там, где важны пороги, добавляйте отношения из предметной области и используйте PolynomialFeatures для взаимодействий. Всегда проверяйте, действительно ли новые признаки улучшают оценки при перекрёстной проверке.
Быстрая проверка
Проверьте свои знания о конструировании признаков.
Итоги
Итоги: Конструируйте признаки, чтобы помогать простым моделям. PolynomialFeatures с параметрами degree и interaction_only добавляет произведения и степени — следите за резким ростом их числа. Создавайте отношения вручную, опираясь на знания предметной области, разбивайте данные на интервалы с помощью pd.cut/pd.qcut и устраняйте асимметрию с помощью логарифмического преобразования или преобразования квадратным корнем. Всегда проверяйте улучшения.
Часто задаваемые вопросы
Урок «Создание взаимодействий и полиномиальных признаков» бесплатный?
Да — полный текст урока «Создание взаимодействий и полиномиальных признаков» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Создание взаимодействий и полиномиальных признаков»?
PolynomialFeatures, ручные признаки взаимодействия, относительные признаки и разбиение непрерывных переменных на интервалы. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Создание взаимодействий и полиномиальных признаков»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Методы отбора признаков
- Создание взаимодействий и полиномиальных признаков
- Целевое кодирование и расширенная обработка категорий
- Автоматизированное конструирование признаков с Featuretools