← Назад к вопросам
В чём разница между supervised learning и unsupervised learning?
1.0 Junior🔥 151 комментариев
#Machine Learning#Статистика и теория вероятностей
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Разница между supervised learning и unsupervised learning
Основное определение
Supervised Learning (обучение с учителем):
- У каждого примера в данных есть правильный ответ (метка)
- Модель учится на примерах: вход → выход
- Цель: предсказать выход для новых неизвестных входов
Unsupervised Learning (обучение без учителя):
- Данные НЕ имеют меток (правильных ответов)
- Модель сама ищет закономерности и структуру в данных
- Цель: найти скрытые паттерны, группировки, зависимости
Ключевые отличия
| Аспект | Supervised | Unsupervised |
|---|---|---|
| Метки (labels) | Обязательны | Не требуются |
| Данные для обучения | (X, y) пары | Только X |
| Задача | Предсказание | Разведочный анализ |
| Контроль качества | Просто (сравниваем с y) | Сложно (нет истины) |
| Примеры задач | Классификация, регрессия | Кластеризация, сегментация |
Примеры Supervised Learning
1. Классификация (Classification)
- Задача: предсказать категорию
- Примеры:
- Спам vs не спам в письмах
- Одобрить vs отклонить кредит
- Класс: кошка vs собака vs птица
# Данные с метками
X = [
[20, "A"], # возраст, уровень образования
[45, "B"],
[30, "A"]
]
y = ["low_risk", "high_risk", "medium_risk"] # МЕТКИ!
# Модель учится предсказывать y по X
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X, y)
# Предсказание для нового клиента
new = [[35, "B"]]
prediction = model.predict(new) # ['high_risk']
2. Регрессия (Regression)
- Задача: предсказать число
- Примеры:
- Цена дома по характеристикам
- Продажи компании в следующем месяце
- Оценка фильма (1-10)
# Данные с целевым значением
X = [[100], [150], [200]] # площадь в м²
y = [2.5, 3.8, 5.1] # цена в млн ₽
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)
# Предсказание цены
new_house = [[175]]
price = model.predict(new_house) # [4.45]
Примеры Unsupervised Learning
1. Кластеризация (Clustering)
- Задача: разделить клиентов на группы
- Цель: найти схожие объекты
- Метрики: нет настоящих ответов, используем силуэт, инерцию
from sklearn.cluster import KMeans
# НЕТУ МЕТОК!
X = [
[25, 50000], # возраст, доход
[45, 120000],
[28, 55000],
[65, 80000]
]
# Разделяем на 2 группы (молодые vs старые)
model = KMeans(n_clusters=2)
labels = model.fit_predict(X)
print(labels) # [0, 1, 0, 1] — автоматически найденные кластеры
2. Снижение размерности (Dimensionality Reduction)
- Задача: сжать 1000 признаков в 50
- Цель: визуализация, ускорение обучения
- Пример: PCA (Principal Component Analysis)
from sklearn.decomposition import PCA
# 1000 признаков
X = [[...], [...], ...]
# Сжимаем до 50 главных компонент
pca = PCA(n_components=50)
X_compressed = pca.fit_transform(X)
3. Поиск аномалий (Anomaly Detection)
- Задача: найти необычные транзакции
- Цель: обнаружить мошенничество
from sklearn.ensemble import IsolationForest
# Нету меток аномалий!
X = [[100], [105], [103], [500]] # сумма транзакций
model = IsolationForest(contamination=0.1)
outliers = model.fit_predict(X) # [1, 1, 1, -1] где -1 = аномалия
Реальные примеры использования
Supervised:
- Предсказание оттока клиентов (churn prediction)
- Скоринг кредитоспособности
- Рекомендации товаров (если есть история покупок)
- Диагностика болезней (если есть исторические данные пациентов)
Unsupervised:
- Сегментация клиентов для маркетинга
- Анализ текстов (topic modeling — какие темы в корпусе?)
- Рекомендации товаров (на основе схожести товаров)
- Визуализация высокомерных данных
Гибридный подход: Semi-Supervised Learning
Иногда часть данных имеет метки, часть нет:
# 1000 примеров, но только 100 имеют метку
X_labeled = [...]
y_labeled = [...]
X_unlabeled = [...] # остальные 900 примеров
# Модель учится на обоих типах данных
from sklearn.semi_supervised import LabelPropagation
model = LabelPropagation()
model.fit(np.vstack([X_labeled, X_unlabeled]),
np.append(y_labeled, [-1]*len(X_unlabeled)))
Заключение
Supervised: когда ты знаешь правильные ответы → используй для предсказания Unsupervised: когда ты хочешь найти закономерности → используй для исследования