Байес versus вирус |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2020-05-16 16:22 Задача No one wants to have covid-19, Как известно, вирусные заболевания иногда могут протекать бессимптомно. Один из способов выяснить, переболел ли человек, — пройти тест на антитела. Если в ходе теста окажется, что в крови (как правило, для тестирования нужно небольшое количество крови из пальца) есть антитела к вирусным белкам, то это будет означать, что иммунная система уже познакомилась с вирусом и опознала его (и либо еще борется с ним, либо уже победила). К сожалению, тесты не идеальны и могут давать ложные результаты. 1. Предположим, что у тестов на некий вирус «К» специфичность 98%. Вася решил сделать себе этот тест и получил положительный результат. Поскольку сейчас он чувствует себя отлично, Вася решил, что результаты теста означают, что он уже переболел вирусом «К» и риска заразиться заново нет. Чему равна вероятность того, что Вася на самом деле не болел, если известно, что в его городе переболело 2% населения? 2. Чтобы подстраховаться Вася прошел это тестирование еще один раз и снова получил положительный результат (исходы тестов мы считаем независимыми). Как изменится вероятность того, что Вася не болел вирусом «К»? 3. У Оли болит горло — это симптом многих респираторных вирусных инфекций. Известно, что горло болит у 10% заболевших вирусом «К». Попробуйте прикинуть, с какой вероятностью у обычного человека (не болеющего вирусом «К») может заболеть горло. Как, исходя из этой оценки, посчитать вероятность того, что у Оли именно вирус «К»? Подсказка 1 Специфичность теста — это отношение числа здоровых людей, у которых тест дал отрицательный результат, к общему числу здоровых людей среди протестированных. Физический смысл этой величины такой: если тест обладает идеальной специфичностью (100%), то все здоровые люди получат отрицательный результат теста и не будет ложноположительных результатов. Если же специфичность ниже 100%, то это означает, что часть здоровых людей получит положительный результат. Специфичность того или иного теста определяется в контролируемых исследованиях, в которых достоверно известно, кто из тестируемых болен, а кто здоров. Противоположная характеристика — чувствительность — более интуитивно понятна. Это отношение числа больных с положительным результатом теста к общему числу протестированных больных, которое показывает, какую долю больных «поймает» тест. Можно заметить, что определение специфичности в некотором смысле обратно чувствительности: оно получается заменой больных на здоровых, а положительного результата на отрицательный. То есть если представить, что тест выявляет не больных среди здоровых, а здоровых среди больных, то чувствительность и специфичность поменяются местами. Подсказка 2 Как можно догадаться из названия, решить задачу можно с помощью теоремы Байеса. Но можно и «на пальцах» посчитать частоты вариантов, о которых идет речь в задаче: присутствие/отсутствие антител в сочетании с положительным/отрицательным результатом теста. Подсказка 3 Вопрос про Олю можно свести к вопросу про Васю, если представить, что наличие боли в горле — это результат теста. Решение Для начала приведем решение первого пункта «на пальцах» — просто аккуратно подсчитаем указанные во второй подсказке величины. Предположим, что было протестировано 10 000 человек. Из них, поскольку по условию в городе переболевших 2%, а мы считаем, что отбор людей для тестирования проведен совершенно случайно, 200 в действительности переболели вирусом «К» (стоит отметить, что не все из них получат положительный результат теста, так как чувствительность теста, как и специфичность, не идеальная). Из оставшихся 9800 здоровых людей 9604 (ведь специфичность теста 98%) правильно получат отрицательный результат. Но вот оставшиеся 196 человек получат ложноположительный результат. На самом деле рядом с каждым из этих чисел нужно писать «примерно», но 10 000 — довольно большая выборка, так что отличия очень слабо влияют на дальнейшие подсчеты. Получивший положительный результат Вася относится к одной из двух групп: получивших истинно положительный результат переболевших или получивших ложноположительный результат здоровых. Получаем, что вероятность того, что Вася переболел, равна (frac{200}{200 + 196} approx 50{,}5\%). Если учесть неидеальную чувствительность теста, то вероятность будет еще меньше (ниже мы выведем формулу, в которой будет учтена и зависимость от чувствительности). Выходит, Васе рано делать вывод о том, что он переболел и имеет иммунитет к вирусу «К»: ведь вероятность, что он болел, всего лишь около половины. Стоит, однако, заметить, что если бы Вася не делал тест, то оценить вероятность того, что он болен, можно было бы лишь в 2% (именно столько процентов населения переболело по статистике), так что положительный тест, как и следовало, увеличил уверенность в том, что Вася переболел и имеет иммунитет. Запишем теперь те же рассуждения более формально с использованием языка теории вероятностей и теоремы Байеса. Рассмотрим два случайных события: событие A состоит в том, что Вася получил положительный тест на антитела к вирусу, а событие B состоит в том, что Вася действительно имеет иммунитет к вирусу. В теории вероятностей вводится понятие условной вероятности события A при условии события B, P(A|B): это вероятность события A в предположении, что событие B произошло. В нашем примере P(A|B) — это вероятность того, что Вася получит положительный результат теста, если достоверно известно, что он имеет антитела к вирусу. Посчитать такую вероятность можно следующим образом: оставим только тех людей, которые переболели и имеют иммунитет к вирусу (остальные нас не интересуют), и посчитаем среди них долю тех, кто получил положительный результат теста — это и будет искомая условная вероятность. На языке теории вероятностей эта идея выражается так: (mathrm{mathbf{P}}(A | B) = frac{mathrm{mathbf{P}} (AB)}{ mathrm{mathbf{P}} (B)}), где P(B) — вероятность того, что у человека есть иммунитет (доля тех, кого мы оставили в выборке), а P(AB) — вероятность события AB, состоящего в том, что произошли одновременно события A и B, то есть вероятность того, что у человека есть иммунитет и тест дал положительный результат (доля тех, кого мы оставили выборке, и при этом имеющих положительный результат теста). Можно заметить, что P(A|B) — это просто чувствительность теста. Сформулируем теперь теорему Байеса. Она утверждает, что для произвольных случайных событий A и B верно следующее равенство: [mathrm{mathbf{P}} (A|B) = frac{mathrm{mathbf{P}} (B|A) mathrm{mathbf{P}} (A)}{ mathrm{mathbf{P}} (B)}.] Оказывается, если воспользоваться определением условной вероятности, данным выше, то доказать ее очень просто: [mathrm{mathbf{P}} (A | B) = frac{mathrm{mathbf{P}} (AB)}{ mathrm{mathbf{P}} (B)} = frac{mathrm{mathbf{P}} (AB)frac{mathrm{mathbf{P}} (A)}{ mathrm{mathbf{P}} (A)}}{ mathrm{mathbf{P}} (B)} = frac{frac{mathrm{mathbf{P}} (AB)}{ mathrm{mathbf{P}} (A)} mathrm{mathbf{P}} (A)}{ mathrm{mathbf{P}} (B)} = frac{mathrm{mathbf{P}} (B|A) mathrm{mathbf{P}} (A)}{ mathrm{mathbf{P}} (B)}.] Сходу может быть непонятно, в чем суть этой теоремы, поэтому попробуем сначала применить ее к нашей задаче. По условию мы достоверно знаем, что Вася получил положительный результат теста, но не знаем, имеет ли он иммунитет к вирусу. Это значит, что нас интересует условная вероятность P(B|A). Чтобы получить ее с помощью теоремы Байеса, нужны три вероятности: P(A), P(B), P(A|B). Вероятность P(B) — это вероятность того, что случайно взятый человек имеет иммунитет к вирусу. По условию она равна 2%. Вероятность P(A|B) — это вероятность того, что человек получит положительный тест, при условии, что у него есть антитела к вирусу. Как уже было отмечено выше, это чувствительность теста (которая в условии не дана, но ее можно оценить сверху единицей). Сложнее всего посчитать P(A) — вероятность того, что человек получит положительный результат теста. Как мы уже поняли в элементарном решении выше, она складывается из вероятности того, что человек больной и получил истинно положительный результат, и вероятности того, что человек здоровый и получил ложноположительный результат. Формально это записывает так: (mathrm{mathbf{P}} (A) = mathrm{mathbf{P}} (AB) + mathrm{mathbf{P}} (Aoverline{B})), где (overline{B}) обозначает отрицание B, то есть событие, состоящее в том, что событие B не наступило. Очевидно, что (mathrm{mathbf{P}} (overline{B}) = 1- mathrm{mathbf{P}} (B)). Подставив определение условной вероятности, можно получить так называемую формулу полной вероятности: [mathrm{mathbf{P}} (A) = mathrm{mathbf{P}} (AB) + mathrm{mathbf{P}} (Aoverline{B}) = mathrm{mathbf{P}} (AB)frac{mathrm{mathbf{P}} (B)}{ mathrm{mathbf{P}} (B)} + mathrm{mathbf{P}} (Aoverline{B})frac{mathrm{mathbf{P}} (overline{B})}{mathrm{mathbf{P}} (overline{B})} == mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B) + mathrm{mathbf{P}} (A|overline{B})mathrm{mathbf{P}} (overline{B}).] Для этой формулы все данные у нас уже имеются. Часть вероятностей мы уже посчитали. Новых величин две: (mathrm{mathbf{P}}(overline{B})) — вероятность того, что случайно взятый человек здоров, и (mathrm{mathbf{P}} (A|overline{B})) — вероятность того, что здоровый человек получит положительный тест (можно заметить, что в сумме со специфичностью теста она дает 1). Подставляя все числа в теорему Байеса, получаем: [mathrm{mathbf{P}} (B|A) = frac{mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B)}{ mathrm{mathbf{P}} (A)} = frac{mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B)}{ mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B) + mathrm{mathbf{P}} (A|overline{B})mathrm{mathbf{P}} (overline{B})} == frac{1 cdot 0{,}02}{1 cdot 0{,}02 + (1- 0{,}98) cdot (1- 0{,}02)} approx 50{,}5\%.] Внимательный читатель заметит, что в результате мы проделали в точности те же вычисления, что и в элементарном решении, и лишь облекли их в более «серьезную» форму. Второй вопрос задачи — как оценить вероятность того, что Вася имеет иммунитет, если повторный тест тоже дал положительный результат, — мы обсудим в послесловии. Перейдем теперь к решению пункта про Олю. Если считать, что наличие или отсутствие боли в горле — это результат «теста», то 10% из условия — это чувствительность этого «теста». Доля людей с больным горлом среди тех, кто не заразился новым вирусом, это (1 ? специфичность) нашего «теста», то есть условная вероятность того, что человек без заболевания получил положительный результат «теста». Осталось оценить долю людей, которые в «мирное» время страдают от боли в горле. Прикинуть ее можно, приблизительно подсчитав, сколько в среднем дней вы и ваши знакомые всех возрастов жалуетесь на боль в горле в течение года (здесь мы не учитываем «жизненные» факторы вроде того, что зимой горло болит чаще, чем летом, — ведь в условии ничего не сказано про то, в какое время года заболела Оля). Разумной выглядит оценка в одну–две недели в год, что дает вероятность около 2%. Подставим эти значения в теорему Байеса: [mathrm{mathbf{P}} (B|A) = frac{mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B)}{ mathrm{mathbf{P}} (A)} = frac{mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B)}{ mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B) + mathrm{mathbf{P}} (A|overline{B})mathrm{mathbf{P}} (overline{B})} == frac{0{,}1 cdot 0{,}02}{0{,}1 cdot 0{,}02 + 0{,}02 cdot (1- 0{,}02)} approx 9{,}3\%.] Выходит, вероятность того, что Оля заразилась вирусом «К», достаточно мала. Послесловие Итак, в этой задаче мы, воспользовавшись теоремой Байеса (названной в честь Томаса Байеса — английского математика и священника, жившего в XVIII веке), обнаружили, что даже тест с высокими показателями чувствительности и специфичности дает неожиданно много ошибок. Это важный практический результат. Но изначально мы получили его без всякой теоремы Байеса, да и сама она выводится в одну строчку. Чем же объясняется ее важность в теории вероятностей? Чтобы ответить на этот вопрос, нужно разобраться, что же мы подразумеваем под вероятностью. Исторически, при становлении формализма теории вероятности в XX веке, под вероятностью понимали вероятность статистическую. Если подбросить честную монетку 100 раз, то она упадет вверх решкой примерно 50 раз. Если подбросить монетку N раз, то она упадет вверх решкой (K approx N cdot 0{,}5) раз, и чем больше число испытаний N, тем ближе (frac{K}{N}) к истинной вероятности (в случае монетки это 1/2) — математически это выражается в законе больших чисел. В этом смысле обычно вводят вероятность в школе или университете. Однако такой взгляд на вероятность не единственный возможный. Вернемся к нашей задаче. Когда речь идет о большом количестве протестированных людей, то статистический подход оправдан. Но в условии спрашивалось про одного лишь Васю: переболел он или нет? На самом деле он либо имеет антитела, либо нет (как и всё на свете на макроскопическом уровне, а вот в микромире правит квантовая механика, где вероятности имеют физический смысл, но это выходит за рамки нашей задачи). Однако мы не знаем точно, болен он или здоров, а лишь оцениваем вероятность этих исходов на основе доступной информации. При таком подходе вероятность описывает не реальную невозможность предсказать исход события, а описывает нашу неуверенность, незнание того, что произошло или произойдет. Получение новой информации может изменить наше представление о вероятности того или иного события. Такой подход был впервые предложен Байесом и называется в его честь. Еще один пример: предположим, вы играете в игру «Кто хочет стать миллионером?» и не знаете ответ на вопрос. Тогда, выбирая наугад первый вариант ответа, вы оцениваете свои шансы на победу в 25%, хотя на самом деле исход предопределен — ответ будет либо правильным, либо неправильным. Предположим теперь, что вы взяли подсказку «50/50» и остались только два варианта ответа. Если ваш выбор не поменялся, то и исход тоже не поменяется. Но теперь вы оцениваете вероятность на успех выше, так как получили новую информацию, и теперь более уверены в том, что угадаете. Как же связана теорема Байеса с байесовским подходом? Разберемся, опять же, на примере нашей задачи. Изначально, перед тем, как Вася сдал тест, оценить вероятность того, что он переболел, можно лишь долей заболевших. В обозначениях из решения это P(B). В байесовском подходе это априорная вероятность события — оценка вероятности до получения новой информации. После того, как мы получили информацию о том, что тест дал положительный результат (событие A), можно посчитать новую оценку вероятности (апостериорную вероятность) с учетом этих данных. Это условная вероятность P(B|A), которая вычисляется по теореме Байеса. Таким образом, эта теорема как раз и дает правило пересчета оценки вероятности события при поступлении новых данных. Теперь можно вернуться к вопросу о том, как же оценить вероятность того, что у Васи есть антитела к вирусу, если повторный тест также дал положительный результат. Однократное применение теоремы Байеса позволило нам уточнить оценку вероятности: перейти от априорной к апостериорной вероятности. Для дальнейшего можно взять эту новую вероятность, как априорное значение P(B) и повторно применить теорему Байеса, чтобы учесть информацию о еще одном результате теста. Тогда новая апостериорная вероятность будет равна: [mathrm{mathbf{P}}(B|A) = frac{mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B)}{ mathrm{mathbf{P}} (A)} = frac{mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B)}{ mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B) + mathrm{mathbf{P}} (A|overline{B})mathrm{mathbf{P}} (overline{B})} == frac{1 cdot 0{,}505}{1 cdot 0{,}505 + (1- 0{,}98) cdot (1- 0{,}505)} approx 98\%.] Здесь проявилось одно из преимуществ байесовского подхода — возможность многократно обновлять предсказания с приходом новых данных. На практике основное препятствие, с которым сталкиваются при необходимости применить теорему Байеса, — это сложность оценивания вероятности в знаменателе. В решении это проявилось в полной мере: эта вероятность была неизвестна и пришлось разложить ее по формуле полной вероятности. На практике, когда имеют дело не с дискретными случайными величинами (принимающими конечный набор значений, как, например, в нашей задаче, где Вася мог быть либо болен, либо не болен), а с непрерывно распределенными на всех действительных числах, задача точного подсчета знаменателя обычно становится невыполнимой, так что приходится довольствоваться различными методами приблизительной оценки вероятности. В заключение обсудим вопрос определения характеристик теста: чувствительности и специфичности. Оказывается, это далеко не единственный способ задать точность теста. Например, в машинном обучении широко используется другая пара характеристик: точность (precision) и покрытие (recall). Можно задаться вопросом: откуда вообще в машинном обучении тесты? Речь идет о моделях классификации. Примером может служить модель, которая по изображению определяет, есть на нем котик или нет. Вывод модели — это результат теста, и он подвержен тем же самым проблемам, что и медицинский тест: модель может не заметить котика на картинке или сказать, что котик есть, хотя на картинке его нет. Стандартные метрики определяются следующим образом: точность — это доля картинок, на которых реально есть котики, среди тех, которые модель-классификатор разметила как содержащие котиков, а покрытие — это доля примеров, на которых она распознала котика среди всех картинок с котиками. Хорошее упражнение: посчитать эти величины по данным из условия задачи и сравнить с чувствительностью и специфичностью. Об аналогичных метриках можно прочитать в статье Confusion matrix. Источник: elementy.ru Комментарии: |
|