Шляпник (russhatter) wrote,
Шляпник
russhatter

Распознавание, говорите?

Вот хорошая простенькая задача по свойствам бинарных классификаций. Источник - вот, первая задача к первой лекции. Давайте её разберем.

Есть тест на редкую болезнь (ну, или на какое-то другое редкое свойство).
Характеристики: точность 99%, полнота - 99%. И ещё известно, что болезнь встречается очень редко: один раз на 10000.
Примененный к некоему человеку этот тест дал позитивный ответ. Какова вероятность того, что человек действительно болен?
Ответ: примерно 1 (один) процент.

Ничего особенно сложного ни в задаче ни в решении нет, сейчас я её разберу. Но ответ - если Вы не знакомы с этими штуками - классификаторами - возможно, Вас удивит, и Вы всё равно не поверите... Тем не менее, это так.

Чтобы было попроще, давайте предположим, что мы протестировали целый миллион человек.
Встречаемость у нас 1 на 10000 - поэтому среди этого миллиона имеется примерно сто больных.
Полнота классификатора - 99% - поэтому из этой сотни больных мы успешно опознали примерно 99, и потеряли примерно одного.
Здоровых людей в миллионе - почти все (миллион минус примерно 100). К ним всем применили тест, а его точность - 99%. То есть, на примерно 10000(десяти тысячах) здоровых людей тест дал положительную (то есть ошибочную) реакцию.
Итого, среди тех, на ком тест дал положительную реакцию, у нас примерно 99 больных и примерно 10 тысяч здоровых. То есть больных у нас среди позитивных - примерно 1 процент.
Вот так-то.
Хотите - верьте, хотите нет. Многие, кому чужды такие задачки, обязательно не поверят. Потому, что очень уж плохо получилось.

Когда разрабатывают, строят тест (он же классификатор ещё говорят, "бинарный классификатор", потому что делят на две группы, а не на много), бороться имеет смысл за две характеристики: за точность и полноту. И эта борьба - за баланс: улучшаем точность - падает полнота, улучшаем полноту - падает точность. При разработке это тяжкое мучение: что сделать лучше, а что хуже. Кроме того, если точность - сравнительно приличный параметр, то полнота - дело сомнительное: ну как мы можем посчитать что-то, что мы не нашли и не увидели?... (Или вот в этом разборе: мы просеяли миллион(!) людей и упустили лишь примерно одного(!) - об этом нам говорит полнота 99% - ... - Вы лично - в это верите, можете поверить? Ну-ну...)

И надо, наверное, прояснить, что применительно к бинарным классификаторам есть две характеристики точности. Есть общая точность - число правильных ответов делённое на число всех тестируемых, и "бинарная" точность: число правильных позитивных ответов, делённое на число всех здоровых среди тестируемых. В условиях, когда мы определяем очень редкое свойство, эти точности практически совпадают. А вот полнота - аккуратность выявления больных среди больных - совершенно на них не влияет, больных же мало!

Ну, и какой тут вывод можно сделать для, так сказать, гуманитариев... Когда появляются вроде бы как точные цифры, при чём хорошие - а 99% выглядят очень даже солидно, то создаётся ощущение, что все у нас хорошо. Но на самом-то деле...

На самом деле, обсуждаемая задача примерно соответствует поиску иголки в стоге сена. Представили себе стог? Представили иголку? Вот и ищите... Числа говорят, что мы умеем её решать очень хорошо. Но задача-то вообще говоря ОЧЕНЬ плохо решаемая - об этом говорит число 1:10000 - и то, что мы её научились решать хорошо - вовсе не значит, что мы её решили удовлетворительно.
Ну то есть, если задача решаема на "два с минусом" - мы её решили на "два с плюсом" и даже до тройки не дотянули - это разве победа?

Вполне вероятно, что обсуждаемый классификатор (тест) вполне пригоден для успешного применения на практике - но для этого что-то ещё нужно знать, кроме тех трёх чиселок, которые мы знаем. А может, что и непригоден, и место такого теста - на свалке. Всякое бывает...
Tags: data mining
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

  • 26 comments