Теорема Байеса: вопросы для собеседования (часть 3)
Теорема Байеса — одна из самых популярных тем на собеседовании, потому что проверяет интуицию о вероятности. Классические задачи: болезнь и тест, спам-фильтр, обновление вероятности при новых данных. Интервьюеры ценят умение рассуждать пошагово и не путать P(A|B) с P(B|A).
Вопросы 11–15 из 20
11Событие A редкое: априорная вероятность (базовая частота) 0.1%. Есть два теста с одинаковым `P(B|A)` 90%, но у теста 1 `P(B|not A)` 5%, а у теста 2 `P(B|not A)` 0.5%. После положительного результата какого теста апостериорная вероятность `P(A|B)` будет выше?
AУ теста 2: меньшая `P(B|not A)` снижает вклад not A в `P(B)`, поэтому апостериорная вероятность `P(A|B)` после плюса выше
BУ теста 1: он чаще выдаёт результат B, и поэтому каждый отдельный плюс даёт больше информации о наступлении события A
CОдинаково для обоих, ведь чувствительность `P(B|A)` равна 90%, а априорная вероятность одна и та же — 0.1%
DЗависит только от априорной вероятности 0.1%; раз она одинаковая, разницы между двумя тестами в апостериорной вероятности не будет
Ответ: При низкой априорной вероятности снижение доли ложноположительных результатов сильно повышает апостериорную вероятность после положительного теста.
Когда событие редкое, большинство объектов — это not A, и именно ошибки на not A формируют большую часть положительных результатов. Поэтому тест с меньшей `P(B|not A)` даёт более «чистые» плюсы. По формуле Байеса уменьшается вклад `P(B|not A) * P(not A)` в знаменатель `P(B)`, и апостериорная `P(A|B)` растёт. У теста 2 `P(B|not A)` = 0.5% вместо 5% — поэтому именно у него апостериорная вероятность будет выше.
Подробный разбор → 12Про спам-фильтр сказали: `P(flag|spam)` равна 99%. Менеджер делает вывод, что `P(spam|flag)` тоже 99%. Что нужно уточнить, чтобы корректно перейти от `P(B|A)` к `P(A|B)` по формуле Байеса?
AТолько `P(B)` и `P(A)`, потому что `P(B)` можно получить как `1 − P(A)`, и этого достаточно, чтобы перевернуть условную вероятность
BТолько размер обучающей выборки `N` и точность `accuracy`, потому что объём данных полностью определяет апостериорную вероятность `P(spam|flag)`
CТолько `P(B|A)` и `P(A)`, потому что чувствительности фильтра и базовой доли спама достаточно для расчёта `P(A|B)` без других компонент
DНужны априорная вероятность `P(spam)` (базовая частота) и вероятность ложноположительного срабатывания `P(flag|not spam)` для расчёта `P(flag)`
Ответ: `P(B|A)` не превращается в `P(A|B)` без априорной вероятности и доли ложноположительных в знаменателе `P(B)`.
Менеджер перепутал направление условной вероятности: `P(flag|spam)` описывает, как фильтр ведёт себя на спаме. Для `P(spam|flag)` нужно учитывать, как часто спам встречается (базовая частота) и как часто фильтр ошибается на не-спаме (ложноположительный результат). Без этих данных оценка апостериорной вероятности легко становится сильно завышенной. Размер обучающей выборки сюда не входит, а `P(B)` нельзя получить как 1 − `P(A)` — это разные события.
Подробный разбор → 13Тест на редкую болезнь имеет высокую чувствительность `P(test+|disease)=99%` и низкую долю ложноположительных `P(test+|¬disease)=1%`. Болезнь встречается у 0.1% людей. Почему апостериорная `P(disease|test+)` может быть заметно ниже 99%?
AПотому что формула Байеса не применима к диагностическим тестам, и для редких болезней её результат всегда некорректен на практике
BИз-за низкой базовой частоты болезни даже маленькая доля ложноположительных у большой группы здоровых даёт много ложных плюсов
CПотому что апостериорная вероятность `P(disease|test+)` всегда равна чувствительности теста `P(test+|disease)` по определению Байеса
DПотому что при редкой болезни априорная вероятность автоматически становится равной нулю и тест перестаёт нести информацию
Ответ: При редком событии низкая базовая частота делает вклад ложноположительных среди положительных результатов заметным.
Даже хороший тест иногда даёт ложноположительный результат у здоровых. Когда здоровых очень много (например, 999 из 1000), число ложных плюсов может превысить число истинных плюсов. Поэтому апостериорная `P(disease|test+)` оказывается существенно ниже, чем чувствительность `P(test+|disease)`. Игнорирование базовой частоты — классическая ошибка интерпретации диагностических тестов.
Подробный разбор → 14Почему в задачах на формулу Байеса люди часто переоценивают `P(A|B)` после положительного теста, когда слышат, что тест точный на 99%?
AПотому что `P(A|B)` всегда совпадает с `P(B|A)`, если речь идёт о точности теста, и значит достаточно перенести 99% на ответ
BПотому что в задачах про тесты априорной вероятности `P(A)` не существует, и её можно не учитывать в финальном расчёте после положительного теста
CПотому что путают `P(B|A)` с `P(A|B)`, игнорируют базовую частоту события и вклад ложноположительных результатов в полную вероятность `P(B)`
DПотому что для редких событий `P(A|B)` всегда меньше 50% по построению, и это правило применяют автоматически без анализа условий
Ответ: Типичная ошибка — игнорировать базовую частоту и путать `P(B|A)` с `P(A|B)`, не считая `P(B)` через формулу полной вероятности.
Фраза про точность обычно описывает `P(B|A)` и вероятность отрицательного результата при отсутствии события, но не отвечает напрямую на вопрос об апостериорной вероятности. При редком событии большая часть объектов относится к классу «не A», и даже небольшая доля ложноположительных результатов даёт много положительных тестов в этой массе. Поэтому `P(A|B)` может быть неожиданно низким, пока не учтена базовая частота и полный расчёт `P(B)` по формуле полной вероятности. Утверждения про равенство `P(A|B)` и `P(B|A)`, отсутствие априорной вероятности или универсальный потолок 50% — типичные заблуждения, а не корректные правила.
Подробный разбор → 15Пусть A — болезнь, B — положительный тест. Известно: `P(A) = 0.01`, `P(B|A) = 0.9`, `P(B|not A) = 0.05`. Примерно чему равно `P(A|B)`?
AОколо 1%: значение совпадает с базовой долей `P(A)`, и тест в этом случае не добавляет информации
BОколо 5%: значение совпадает с долей ложноположительных `P(B|not A)` и игнорирует чувствительность `P(B|A)`
CОколо 15%: `P(A|B) = P(B|A) P(A) / P(B)` примерно равно `0.009 / 0.0585`
DОколо 90%: значение совпадает с чувствительностью `P(B|A)` и игнорирует базовую долю `P(A)`
Ответ: Чтобы найти `P(A|B)`, применяют формулу Байеса и считают `P(B)` через полную вероятность.
Сначала считаем `P(B) = P(B|A) P(A) + P(B|not A) P(not A) = 0.9 * 0.01 + 0.05 * 0.99 = 0.0585`. Затем `P(A|B) = P(B|A) P(A) / P(B) = 0.009 / 0.0585`, что примерно равно 0.154, то есть около 15%. Типичная ошибка — путать `P(A|B)` с чувствительностью `P(B|A) = 0.9` или с базовой долей `P(A) = 0.01`, не учитывая обе величины одновременно.
Подробный разбор → Другие темы: Теория вероятностей