Ответ
Это задача бинарной классификации, но с важным нюансом: мы часто хотим получить не просто класс (зашел/не зашел), а вероятность принадлежности к классу.
Почему классификация? Целевая переменная — дискретная (бинарная): 1 (пользователь зашел) или 0 (не зашел).
Почему важна вероятность? Для бизнеса часто критично ранжировать пользователей по этой вероятности, чтобы, например, показывать таргетированные предложения самым "горячим" из них.
Практический пример из моего опыта (прогноз клика по рекламе):
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.calibration import CalibratedClassifierCV
from sklearn.metrics import roc_auc_score, log_loss
# Допустим, у нас есть лог действий пользователей
# Цель — predict_proba для события 'app_launch'
df['target'] = (df['event'] == 'app_launch').astype(int)
features = df[['session_count', 'time_since_last_visit', 'os', 'campaign_id']]
# ... (кодирование категориальных признаков)
X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, stratify=target)
# Используем алгоритм, который дает хорошо калиброванные вероятности
model = GradientBoostingClassifier(n_estimators=200, learning_rate=0.05)
# Иногда применяю калибровку, особенно для SVM или нейросетей
calibrated_model = CalibratedClassifierCV(model, method='isotonic', cv=5)
calibrated_model.fit(X_train, y_train)
# Получаем вероятности
probabilities = calibrated_model.predict_proba(X_test)[:, 1]
# Оцениваем качество вероятностных предсказаний
print(f"ROC-AUC: {roc_auc_score(y_test, probabilities):.4f}") # Оценивает ранжирование
print(f"Log Loss: {log_loss(y_test, probabilities):.4f}") # Оценивает "уверенность" модели
# Бизнес-метрика: доля пользователей в топ-10% по предсказанной вероятности, которые действительно зашли
top_10_idx = probabilities.argsort()[-len(probabilities)//10:]
conversion_in_top_10 = y_test.iloc[top_10_idx].mean()
print(f"Conversion in top-10%: {conversion_in_top_10:.1%}")
Таким образом, мы решаем задачу классификации, но используем метрики и подходы, ориентированные на работу с вероятностями.