Перейти к содержимому

3 задачи на Байеса с собеседований аналитика

5 минут чтения
Содержание

Если вы готовитесь к собеседованию на аналитика или data scientist-а, задачи на формулу Байеса и теорему о полной вероятности вам практически гарантированы.

Почему? Не знаю, могу только предположить. Вероятно, они достаточно просты, чтобы решить их на собеседовании, но при этом проверяют базу по ТВ. При этом они являются лакмусовой бумажкой, есть ли опыт в теории вероятности у кандидата, ведь очень просто поддаться интуиции. Правильный ответ почти всегда контринтуитивен

Сегодня разберём три классические задачи. Формула одна и та же, контексты разные, ловушки тоже.


Формула, которую нужно помнить

Формула Байеса:

P(AB)=P(BA)P(A)P(B)P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}

При этом нам также нужно помнить формулу полной вероятности.

P(B)=P(BA)P(A)+P(BAˉ)P(Aˉ)P(B) = P(B|A) \cdot P(A) + P(B|\bar{A}) \cdot P(\bar{A})

На этом всё. Три задачи ниже – это три подстановки в одну и ту же формулу. Но попробуйте сначала ответить интуитивно, а потом посчитать.


Задача 1. Ночное такси

В городе 85% такси — синие, 15% — зелёные. Ночью произошло ДТП с участием такси. Свидетель утверждает, что такси было зелёное. В ходе проверки установлено, что свидетель правильно определяет цвет машины в темноте в 80% случаев. Какова вероятность, что такси действительно было зелёное?

Интуитивный ответ

Большинство людей говорят «80%» или «где-то 75–80%». Свидетель же надёжен на 80%, значит, скорее всего прав. Верно?

Решение

Обозначим:

  • GG — такси зелёное
  • WW — свидетель говорит «зелёное»

Что нам дано:

  • P(G)=0.15P(G) = 0.15, P(Gˉ)=0.85P(\bar{G}) = 0.85
  • P(WG)=0.80P(W|G) = 0.80 — свидетель правильно опознаёт зелёное
  • P(WGˉ)=0.20P(W|\bar{G}) = 0.20 — свидетель ошибочно называет синее зелёным

По формуле Байеса:

P(GW)=P(WG)P(G)P(WG)P(G)+P(WGˉ)P(Gˉ)P(G|W) = \frac{P(W|G) \cdot P(G)}{P(W|G) \cdot P(G) + P(W|\bar{G}) \cdot P(\bar{G})}
P(GW)=0.800.150.800.15+0.200.85=0.120.12+0.17=0.120.290.41P(G|W) = \frac{0.80 \cdot 0.15}{0.80 \cdot 0.15 + 0.20 \cdot 0.85} = \frac{0.12}{0.12 + 0.17} = \frac{0.12}{0.29} \approx 0.41

Ответ: ≈ 41%. Несмотря на показания свидетеля, вероятность того, что такси зелёное — меньше половины.

Почему интуиция ошибается

Ловушка называется base rate neglect (игнорирование базовой частоты). Зелёных такси в городе всего 15%. Даже при надёжном свидетеле (80%) огромная база синих такси (85%) генерирует достаточно ложных срабатываний, чтобы перевесить.

Представьте 100 ДТП. В 15 участвует зелёное такси, в 85 синее. Свидетель правильно опознает 12 из 15 зелёных. Но он также ошибочно назовёт зелёными 17 из 85 синих. Итого «зелёных» по показаниям 29, из них реально зелёных 12. Это и есть 12/29 ≈ 41%.


Задача 2. Медицинский тест

Распространённость заболевания в популяции — 1%. Тест имеет чувствительность 95% (если человек болен, тест положительный в 95% случаев) и специфичность 90% (если здоров, тест отрицательный в 90% случаев). Пациент получил положительный результат. Какова вероятность, что он действительно болен?

Интуитивный ответ

«Тест точный на 95%, значит вероятность болезни процентов 90»

Решение

Обозначим:

  • DD — пациент болен
  • ++ — тест положительный

Дано:

  • P(D)=0.01P(D) = 0.01, P(Dˉ)=0.99P(\bar{D}) = 0.99
  • P(+D)=0.95P(+|D) = 0.95 — чувствительность
  • P(+Dˉ)=0.10P(+|\bar{D}) = 0.10 — ложноположительный (1 − специфичность)
P(D+)=P(+D)P(D)P(+D)P(D)+P(+Dˉ)P(Dˉ)P(D|+) = \frac{P(+|D) \cdot P(D)}{P(+|D) \cdot P(D) + P(+|\bar{D}) \cdot P(\bar{D})}
P(D+)=0.950.010.950.01+0.100.99=0.00950.0095+0.099=0.00950.10850.088P(D|+) = \frac{0.95 \cdot 0.01}{0.95 \cdot 0.01 + 0.10 \cdot 0.99} = \frac{0.0095}{0.0095 + 0.099} = \frac{0.0095}{0.1085} \approx 0.088

Ответ: ≈ 8.8%. Положительный тест — и вероятность болезни меньше 9%.

Почему интуиция ошибается

Та же ловушка — base rate. Больных всего 1%. На 10 000 человек: 100 больных, 9 900 здоровых. Тест правильно найдёт 95 больных. Но он также ошибочно покажет положительный результат у 990 здоровых. Итого положительных — 1 085, из них реально больных — 95. Это 95/1085 ≈ 8.8%.

Этот результат известен как false positive paradox: при редком заболевании даже хороший тест даёт больше ложных срабатываний, чем истинных.

Можно задать вопрос «А что будет, если распространённость — 10%?» Подставьте в формулу — получите ≈ 51%. Base rate решает.


Задача 3. Спам-фильтр

5% входящих писем — спам. Спам-фильтр правильно определяет спам в 99% случаев (recall), но ошибочно помечает нормальное письмо как спам в 2% случаев (false positive rate). Письмо попало в папку «Спам». Какова вероятность, что оно действительно спам?

Интуитивный ответ

«Фильтр ловит 99% спама, значит если письмо в спаме — оно почти наверняка спам. Процентов 95+.»

Решение

Обозначим:

  • SS — письмо спам
  • FF — фильтр пометил как спам

Дано:

  • P(S)=0.05P(S) = 0.05, P(Sˉ)=0.95P(\bar{S}) = 0.95
  • P(FS)=0.99P(F|S) = 0.99 — recall
  • P(FSˉ)=0.02P(F|\bar{S}) = 0.02 — false positive rate
P(SF)=P(FS)P(S)P(FS)P(S)+P(FSˉ)P(Sˉ)P(S|F) = \frac{P(F|S) \cdot P(S)}{P(F|S) \cdot P(S) + P(F|\bar{S}) \cdot P(\bar{S})}
P(SF)=0.990.050.990.05+0.020.95=0.04950.0495+0.019=0.04950.06850.72P(S|F) = \frac{0.99 \cdot 0.05}{0.99 \cdot 0.05 + 0.02 \cdot 0.95} = \frac{0.0495}{0.0495 + 0.019} = \frac{0.0495}{0.0685} \approx 0.72

Ответ: ≈ 72%. Почти треть писем в папке «Спам» — не спам.

Важность задачи в контексте ML

Эта задача — прямая иллюстрация того, почему precision зависит от base rate, а не только от качества модели. Recall фильтра — 99%, но precision — всего 72%. И это при false positive rate всего 2%.

Если вы работаете с моделями классификации, вы узнаете формулу:

Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}

Это ровно та же формула Байеса, записанная другими буквами. На 1 000 писем: 50 спам, 950 нормальных. Фильтр поймает 49.5 спам-писем и ошибочно пометит 19 нормальных. Precision = 49.5 / 68.5 ≈ 72%.

На собеседовании это часто переходит в вопрос: «Как улучшить precision, не меняя модель?» Ответ: изменить порог классификации (повысить threshold), что снизит recall, но уменьшит FP. Или — если возможно — работать с выборкой, где base rate выше.


Что объединяет все три задачи

Одна формула, один паттерн ошибки. Во всех трёх случаях интуиция игнорирует базовую частоту события и цепляется за «точность теста». Байес заставляет учитывать обе части: и качество сигнала, и частоту события в популяции.

Также советую обратить внимание на то, почему ответ такой. Очень важно уметь объяснить, почему 80%-й свидетель даёт только 41% уверенности — задача не засчитана.

Base rate neglect — ловушка, в которую попадают даже опытные аналитики. Лучший способ не попасться – читать мой блог 🙃.