Что такое feature в ML

Коротко

Feature (фича, признак) — входной параметр ML-модели, который используется для предсказания.

Если модель предсказывает churn пользователя, features могут быть:

  • Возраст аккаунта.
  • Количество заходов за 30 дней.
  • Суммарные траты.
  • Платформа (iOS/Android).
  • Канал привлечения.

Виды features

1. Numerical (числовые)

age = 25
total_spent = 15000
sessions_last_week = 7

2. Categorical (категориальные)

platform = 'iOS' | 'Android' | 'Web'
country = 'Russia' | 'USA' | ...

Перед подачей в модель преобразуют:

  • One-hot encoding: ['iOS', 'Android'][[1,0], [0,1]].
  • Label encoding: ['iOS', 'Android'][0, 1].
  • Target encoding: заменяем категорию на средний target.

3. Binary (бинарные)

is_paid_user = 1 | 0
has_email = 1 | 0

4. Временные

day_of_week = 3 (среда)
is_weekend = 1
days_since_signup = 45

5. Текстовые

Преобразуют в числа через:

  • TF-IDF — важность слов.
  • Word embeddings — Word2Vec, BERT.
  • Bag of words — просто частоты.

Feature Engineering

Feature engineering — процесс создания features из сырых данных.

Часто 80% успеха ML — это правильные features, а не алгоритм.

Примеры

Имеем: user_id, event_time, event_name, amount.

Создаём features:

df['sessions_last_7d'] = df.groupby('user_id')['event_time'].apply(
    lambda x: (x > pd.Timestamp.now() - pd.Timedelta(days=7)).sum()
)

df['total_spent'] = df.groupby('user_id')['amount'].transform('sum')

df['days_since_last_event'] = (
    pd.Timestamp.now() - df.groupby('user_id')['event_time'].transform('max')
).dt.days

df['avg_order_size'] = df.groupby('user_id')['amount'].transform('mean')

df['is_weekend'] = df['event_time'].dt.dayofweek >= 5

Каждая — новая feature для модели.

Попробовать силы на подобных вопросах проще всего в тренажёре Карьерник — прямо в Telegram, без регистрации через сайт.

Типичные features для аналитика

Churn prediction

  • days_since_last_event
  • sessions_last_30d
  • total_lifetime_value
  • tenure_months
  • changes_in_activity

Segmentation

  • rfm_recency, rfm_frequency, rfm_monetary
  • platform_usage
  • channel

Fraud detection

  • transaction_amount
  • time_from_registration
  • device_fingerprint_mismatch
  • ip_country != billing_country

Feature Selection

Отбор важных features из многих:

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier()
model.fit(X_train, y_train)
feature_importance = pd.Series(model.feature_importances_, index=X.columns)
feature_importance.sort_values(ascending=False).head(20)

Топ-20 фич объясняют 80% результата.

Feature Scaling

Многие модели (линейная регрессия, SVM, нейросети) требуют масштабирования:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

Deep trees (XGBoost, Random Forest) — не требуют.

Leakage — главная ошибка

Data leakage — когда feature содержит информацию, которой не могло быть в момент предсказания.

Пример:

  • Хотите предсказать churn на 30 дней вперёд.
  • Добавили фичу had_support_ticket_in_next_week.
  • Модель покажет 99% accuracy.
  • В реальности — бесполезна (в момент предсказания этой информации нет).

Всегда проверяйте: доступна ли feature в момент prediction?

Пройти 30–50 задач по теме за вечер можно в Telegram-тренажёре. Это то, что отличает «знаю» от «уверенно отвечу на собесе».

Аналитик и ML

Джуниор-аналитик

Features обычно не делает. Даёт данные, DS строит модели.

Middle+ аналитик

Участвует в feature engineering — лучше понимает бизнес и данные, чем DS.

Senior / Analytics Engineer

Владеет feature store, делает production-ready features.

Feature Store

Для крупных ML-пайплайнов — централизованное хранилище фич:

  • Один раз посчитал → используют все модели.
  • Консистентные имена и определения.
  • Real-time feature serving для production.

Популярные решения: Feast, Tecton, собственные внутренние.

Читайте также

FAQ

Feature или column?

Feature — в контексте ML (вход модели). Column — в контексте данных (столбец таблицы). На практике часто взаимозаменяемы.

Сколько features нужно?

Начинайте с 10–20. Больше может привести к переобучению. XGBoost справляется с сотнями, линейная регрессия — до десятков.

Что такое feature store?

Централизованный каталог фич для ML-моделей. Используется в больших компаниях (Airbnb, Uber).

Надо ли аналитику знать feature engineering?

На middle+ — да. Это главный вклад аналитика в ML-проекты.