← Назад к вопросам

Что такое задача классификации?

1.2 Junior🔥 301 комментариев
#Машинное обучение

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Задача классификации в машинном обучении

Классификация — это задача supervised learning, где требуется предсказать дискретный класс (категорию) для объекта на основе его признаков (features). Модель обучается на размеченных примерах и затем делает предсказания для новых данных.

Основные типы

Бинарная классификация (Binary Classification) Делим объекты на два класса:

  • Спам/не спам -病болен/не болен (medical diagnosis)
  • Мошенничество/легитимная транзакция

Многоклассовая классификация (Multiclass) Один объект принадлежит одному из N классов (N > 2):

  • Распознавание цифр (0-9): 10 классов
  • Классификация тональности текста: positive, neutral, negative
  • Предсказание вида животного на фото

Многолейбловая классификация (Multilabel) Один объект может принадлежать нескольким классам одновременно:

  • Тег статьи может быть: ["ML", "Python", "Tutorial"]
  • Фильм: ["Action", "Thriller", "Drama"]

Основные этапы решения

1. Подготовка данных

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# Разделение на train/test
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

# Нормализация признаков
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

2. Выбор и обучение модели

from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression

# Логистическая регрессия для быстрого baseline
model_lr = LogisticRegression()
model_lr.fit(X_train_scaled, y_train)

# Random Forest для более сложных зависимостей
model_rf = RandomForestClassifier(n_estimators=100, random_state=42)
model_rf.fit(X_train, y_train)

3. Оценка производительности

from sklearn.metrics import (
    accuracy_score, precision_score, recall_score, f1_score,
    confusion_matrix, roc_auc_score, roc_curve
)

y_pred = model.predict(X_test)
y_pred_proba = model.predict_proba(X_test)[:, 1]

print(f"Accuracy: {accuracy_score(y_test, y_pred):.3f}")
print(f"Precision: {precision_score(y_test, y_pred):.3f}")
print(f"Recall: {recall_score(y_test, y_pred):.3f}")
print(f"F1: {f1_score(y_test, y_pred):.3f}")
print(f"ROC-AUC: {roc_auc_score(y_test, y_pred_proba):.3f}")

Популярные алгоритмы

АлгоритмПлюсыМинусы
Logistic RegressionБыстро, интерпретируемоЛинейные зависимости
Decision TreeЛегко понять, handles non-linearПереобучение
Random ForestВысокая точность, feature importanceЧерный ящик
SVMХорошо на высоких размерностяхМедленно на больших данных
Gradient Boosting (XGBoost)SOTA на структурированных данныхТребует tuning
Neural NetworksОчень мощныеТребуют много данных

Метрики оценки

Для сбалансированных классов: Accuracy Для несбалансированных: F1, Precision-Recall, ROC-AUC Для бизнеса: Recall (если важнее не пропустить позитивный класс) или Precision (если важнее не ошибиться)

Типичные ошибки

  1. Data leakage — информация из test набора попала в train
  2. Неправильное разделение — stratified split для несбалансированных данных
  3. Переобучение — валидировать на отдельном hold-out наборе
  4. Игнорирование дисбаланса — использовать class_weight или переsampling