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

Что такое ошибки первого и второго рода?

2.3 Middle🔥 192 комментариев
#Машинное обучение

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

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

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

Ошибки первого и второго рода

Ошибки первого и второго рода — это фундаментальные концепции в статистическом тестировании гипотез и классификации. Они описывают два способа, которыми статистический тест или классификатор может ошибиться при принятии решения.

Определения

Ошибка первого рода (Type I Error, False Positive, α — alpha): Отклонение нулевой гипотезы (H₀) когда она на самом деле истинна. То есть, мы говорим что произошло событие, хотя на самом деле оно не произошло.

Нулевая гипотеза верна, но мы её отклоняем
Вероятность: α (уровень значимости)

Ошибка второго рода (Type II Error, False Negative, β — beta): Необходимо принять нулевую гипотезу (H₀) когда она на самом деле ложна (альтернативная гипотеза H₁ истинна). То есть, мы не обнаруживаем событие, которое на самом деле произошло.

Нулевая гипотеза ложна, но мы её принимаем
Вероятность: β
Мощность теста: 1 - β (вероятность правильно отклонить ложную гипотезу)

Таблица ошибок (Confusion Matrix)

                    Предсказание
                    Позитив (H₁)    Негатив (H₀)
Фактическое Позитив  True Positive   False Negative
(H₁ верна)           (TP)            (FN) — Ошибка II рода

Фактическое Негатив  False Positive  True Negative
(H₀ верна)           (FP) — Ошибка I рода  (TN)

Практический пример: Медицинское тестирование

Предположим, тест определяет наличие редкого заболевания:

H₀ (Нулевая): У человека нет заболевания
H₁ (Альтернативная): У человека есть заболевание

Ошибка первого рода (α):
- Тест говорит "у вас есть болезнь", но на самом деле её нет
- Последствия: ненужное лечение, психологический стресс
- Вероятность обычно устанавливается на уровне 0.05 (5%)

Ошибка второго рода (β):
- Тест говорит "у вас нет болезни", но на самом деле она есть
- Последствия: отсутствие лечения, прогрессирование болезни
- Связана с мощностью теста (1-β)

Пример в классификации: Спам-фильтр

from sklearn.metrics import confusion_matrix, classification_report
import numpy as np

# Данные: письма (0=хорошее, 1=спам)
y_true = [0, 1, 1, 0, 0, 1, 1, 0, 1, 0]
y_pred = [0, 1, 0, 0, 1, 1, 1, 0, 0, 0]

cm = confusion_matrix(y_true, y_pred)
print(cm)

# Output:
# [[5 1]     TN=5  FP=1
#  [2 1]]    FN=2  TP=1

# Ошибка первого рода (FP): 1 хорошее письмо помечено как спам
# Ошибка второго рода (FN): 2 письма со спамом не обнаружены

print(classification_report(y_true, y_pred))

# Output:
# precision = TP / (TP + FP) = 1/2 = 50% — точность
# recall = TP / (TP + FN) = 1/3 = 33% — полнота (чувствительность)
# specificity = TN / (TN + FP) = 5/6 = 83% — специфичность

Связанные метрики

Для ошибки первого рода (False Positive Rate, FPR):

FPR = FP / (FP + TN) = FP / N_negative

Доля отрицательных примеров, ошибочно предсказанных как положительные.

Для ошибки второго рода (False Negative Rate, FNR):

FNR = FN / (FN + TP) = FN / N_positive

Доля положительных примеров, ошибочно предсказанных как отрицательные.

Чувствительность (Sensitivity, True Positive Rate, TPR):

TPR = TP / (TP + FN) = 1 - FNR

Доля положительных примеров, правильно классифицированных.

Специфичность (Specificity, True Negative Rate, TNR):

TNR = TN / (TN + FP) = 1 - FPR

Доля отрицательных примеров, правильно классифицированных.

ROC-кривая и связь α и β

ROC-кривая (Receiver Operating Characteristic) показывает компромисс между TPR и FPR при изменении порога классификации:

from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt

y_scores = [0.9, 0.8, 0.7, 0.6, 0.4, 0.3, 0.2, 0.1, 0.05, 0.02]
y_true = [1, 1, 1, 0, 0, 1, 0, 0, 1, 0]

fpr, tpr, thresholds = roc_curve(y_true, y_scores)
auc_score = auc(fpr, tpr)

plt.plot(fpr, tpr, label=f'ROC (AUC={auc_score:.2f})')
plt.plot([0, 1], [0, 1], 'k--', label='Random')
plt.xlabel('False Positive Rate (α)')
plt.ylabel('True Positive Rate (1-β)')
plt.legend()
plt.show()

При движении по ROC-кривой влево-вверх снижается α (меньше false positives), но увеличивается β (больше false negatives).

Выбор threshold и баланс ошибок

# Строгий фильтр спама (низкий α, высокий β):
# Требуем высокую уверенность, чтобы пометить письмо как спам
threshold_strict = 0.95
# Результат: мало хороших писем в спаме, но много спама в входящих

# Мягкий фильтр спама (высокий α, низкий β):
# Даже малая уверенность маркирует как спам
threshold_loose = 0.3
# Результат: много хороших писем в спаме, но мало спама в входящих

Стоимость ошибок

Важно понимать, что разные ошибки могут иметь разные последствия:

# Пример 1: Медицинская диагностика (редкое заболевание)
# Стоимость Type I (ложный диагноз): лечение, стресс, деньги
# Стоимость Type II (пропущенный диагноз): смерть
# Type II ошибка гораздо дороже → нужна мощность ≥ 95%

# Пример 2: Спам-фильтр
# Стоимость Type I (хорошее письмо в спаме): потеря важного письма
# Стоимость Type II (спам в входящих): раздражение
# Примерно равные стоимости → сбалансируем precision и recall

# Пример 3: Кредитное скорингу
# Стоимость Type I (отклонить хорошего клиента): потеря дохода
# Стоимость Type II (одобрить плохого клиента): убыток
# Type II обычно дороже → устанавливаем низкий threshold для одобрения

F1-score и баланс

F1-score объединяет precision и recall в единую метрику:

from sklearn.metrics import f1_score

f1 = 2 * (precision * recall) / (precision + recall)

# F1 высокий, когда обе метрики сбалансированы
# Полезен, когда нужно избежать обеих ошибок

Уровень значимости (α) в статистическом тестировании

from scipy import stats

# t-тест: сравнение средних двух выборок
t_stat, p_value = stats.ttest_ind(sample1, sample2)

alpha = 0.05  # Уровень значимости
if p_value < alpha:
    print("Отклоняем H₀ (риск ошибки I рода = 5%)")
else:
    print("Не отклоняем H₀ (но может быть ошибка II рода β)")

Мощность теста (Power = 1 - β)

Мощность — это вероятность правильно отклонить ложную нулевую гипотезу:

Мощность = P(отклонить H₀ | H₁ верна) = 1 - β

Высокая мощность (обычно 0.8 или 0.9) означает, что если гипотеза действительно верна, тест её с высокой вероятностью обнаружит.

Практические рекомендации

  • Медицина, безопасность: минимизируем β (максимизируем мощность)
  • Контроль качества: минимизируем α (недопустимы ложные тревоги)
  • Маркетинг, реклама: часто допустимы ошибки, нужен баланс
  • Выбор α: обычно 0.05, но можно 0.01 для критичных решений
  • Объём выборки: больший размер выборки снижает обе ошибки

Выводы

Ошибки первого и второго рода — это фундаментальный компромисс в статистике и машинном обучении. Понимание этих концепций критично для:

  • Интерпретации результатов статистических тестов
  • Выбора порога классификации
  • Оценки качества моделей
  • Принятия обоснованных решений на основе данных

В каждой задаче нужно понимать стоимость обеих ошибок и выбирать порог/уровень значимости соответственно.

Что такое ошибки первого и второго рода? | PrepBro