Вероятность как степень уверенности

Частоты, апостериорные вероятности.

Когда разработчики слышат слово "вероятность", в голове часто всплывают игральные кости, подбрасывание монетки и школьная формула "благоприятные исходы делить на все возможные". Это полезная, но очень узкая картинка. В машинном обучении и в прикладной аналитике вероятность почти всегда означает другое – степень нашей уверенности в утверждении, исходя из имеющихся данных.

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

Классическая интуиция: вероятность как частота

Начнем с привычного. Если мы много раз подбрасываем честную монетку, то ожидаем, что орел будет выпадать примерно в половине случаев. Формально это записывается так:

P(орел)=12P(\text{орел}) = \frac{1}{2}

Здесь вероятность интерпретируется как предел относительной частоты при большом числе экспериментов. Это так называемая частотная (frequentist) интерпретация.

Она хорошо работает там, где:

  • эксперимент можно повторять бесконечно;

  • условия не меняются;

  • объект стабилен (монетка сегодня и завтра "та же самая").

Но уже на этом этапе возникает вопрос: а что делать с единичными событиями?

Какова вероятность того, что завтра пойдет дождь? Или что пользователь кликнет на кнопку? Или что письмо – это спам?

Мы не можем "прокрутить мир" миллион раз и посмотреть частоты. И вот здесь появляется другая, гораздо более полезная для разработчика интерпретация.

Вероятность как степень уверенности

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

Например:

  • вероятность дождя 70% означает не то, что дождь "пойдет на 70%";

  • это означает: при текущих данных и модели мы довольно уверены, что дождь будет.

То же самое в ML:

  • модель говорит, что письмо – спам с вероятностью 0.92;

  • это значит, что при всех известных признаках модель почти уверена в принадлежности письма к этому классу.

Важно: вероятность здесь не свойство объекта, а свойство нашей модели и нашего знания. И при другой модели или других данных эта оценка могла бы быть иной.

Это ключевой сдвиг мышления.

Формально: вероятность как число от 0 до 1

Математически вероятность – это просто число:

0P(A)10 \le P(A) \le 1

где:

  • P(A) = 0 означает полную уверенность, что событие не произойдет;

  • P(A) = 1 – полную уверенность, что произойдет;

  • промежуточные значения – степень уверенности.

В байесовской интерпретации такие значения означают догматическую уверенность и на практике почти не используются.

Но в машинном обучении мы почти всегда работаем именно с такими значениями. Модель не говорит "да" или "нет", она говорит "насколько я уверена".

Пример из жизни: медицинский тест

Представим, что у нас есть некоторый тест на заболевание. Он не идеален.

  • Если человек болен, тест положительный в 99% случаев.

  • Если человек здоров, тест отрицательный в 95% случаев.

  • Болезнь встречается у 1 человека из 1000.

Если тест показал "положительно", какова вероятность, что человек действительно болен?

Интуиция часто подводит. Кажется: "почти 99%" Но реальный ответ будет сильно меньше из-за редкости болезни. Ниже мы увидим насколько.

Это классический пример того, почему вероятность – это не просто свойство теста, а результат обновления уверенности с учетом контекста.

И здесь впервые появляется формула Байеса.

Немного математики: формула Байеса

Давайте посмотрим на эту формулу:

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

Где:

  • AA – гипотеза (человек болен);

  • BB – наблюдение (тест положительный);

  • P(A)P(A) – априорная вероятность (наша уверенность до теста);

  • P(B)P(B) – вероятность наблюдения, служит нормирующим коэффициентом;

  • P(BA)P(B \mid A) – вероятность наблюдения при верной гипотезе (вероятность положительного теста, если человек действительно болен; чувствительность теста).

  • P(AB)P(A \mid B) – апостериорная вероятность (уверенность после теста).

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

chevron-rightМедицинский тест. Подсчёт по формуле Байесаhashtag

Посчитаем аккуратно, по формуле Байеса.

Дано:

  • Распространённость болезни: ( P(Б)=1/1000=0.001P(Б) = 1/1000 = 0.001 )

  • Чувствительность теста (true positive): ( P(+Б)=0.99P(+ \mid Б) = 0.99 )

  • Специфичность теста (true negative): ( P(З)=0.95P(- \mid З) = 0.95 ) ⇒ ложноположительный результат: ( P(+З)=0.05P(+ \mid З) = 0.05 )

Шаг 1. Вероятность положительного теста

P(+)=P(+Б)P(Б)+P(+З)P(З)P(+) = P(+ \mid Б)P(Б) + P(+ \mid З)P(З)

P(+)=0.990.001+0.050.999P(+) = 0.99 \cdot 0.001 + 0.05 \cdot 0.999

P(+)=0.00099+0.04995=0.05094P(+) = 0.00099 + 0.04995 = 0.05094

Шаг 2. Вероятность, что человек болен при положительном тесте

P(Б+)=P(+Б)P(Б)P(+)P(Б \mid +) = \frac{P(+ \mid Б)P(Б)}{P(+)}

P(Б+)=0.990.0010.05094P(Б \mid +) = \frac{0.99 \cdot 0.001}{0.05094}

P(Б+)0.0194P(Б \mid +) \approx 0.0194

Ответ

≈ 1.94%


Интуитивная проверка "на пальцах"

Возьмём 100000 человек:

  • Больны: 100

    • Положительный тест: 99

  • Здоровы: 99900

    • Ложноположительный тест: ≈ 4995

Всего положительных тестов: 99 + 4995 = 5094

Доля реально больных среди положительных:

99/50941.94%99 / 5 094 \approx 1.94\%

Вывод

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

Это классический пример того, как базовая вероятность (base rate) ломает интуицию.

Визуальная интуиция вероятности

Вероятность удобно представлять не как абстрактное число, а как "массу уверенности", распределенную между вариантами.

Например, модель классификации текста может сказать:

  • спам: 0.85

  • не спам: 0.15\

Это не просто два числа. Это распределение нашей уверенности между гипотезами.

13.1 Распределение вероятности между двумя классами

Вероятность и softmax

Во многих моделях (логистическая регрессия, нейросети) на выходе используется функция softmax:

P(y=i)=ezijezjP(y = i) = \frac{e^{z_i}}{\sum_{j} e^{z_j}}

Она превращает произвольные числа (оценки модели) в корректные вероятности:

  • все значения от 0 до 1;

  • сумма равна 1.

Хотя строго говоря, это вероятности модели, а не объективные вероятности мира.

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

Пример вероятности с softmax

Во многих моделях машинного обучения выходом являются не вероятности, а так называемые оценки (logits). Это просто числа, отражающие относительную уверенность модели в каждом варианте. Они могут быть любыми – положительными, отрицательными, большими или маленькими – и сами по себе не интерпретируются как вероятность.

Чтобы превратить такие оценки в корректные вероятности, используется функция softmax.

Рассмотрим простой пример. Пусть модель оценивает входящее письмо и выдает следующие оценки для трех классов:

Эти числа не являются вероятностями. Их сумма не равна 1, и они могут свободно выходить за диапазон от 0 до 1.

Реализуем функцию softmax на чистом PHP:

Применим softmax к оценкам модели:

Теперь мы получили корректное распределение вероятностей:

  • каждое значение находится в диапазоне от 0 до 1;

  • сумма всех значений равна 1;

  • числа можно интерпретировать как степень уверенности модели.

Важное замечание: softmax не делает модель умнее. Он лишь переводит ее внутренние оценки в форму, удобную для интерпретации и принятия решений. Модель по-прежнему сомневается и распределяет уверенность между альтернативами, а не выдает жесткий ответ "да" или "нет".

13.2 softmax превращает logits в вероятности

Почему вероятность почти никогда не бывает 0 или 1

В реальных данных почти всегда есть шум, неполнота и неизвестные факторы. Поэтому хорошие модели крайне редко выдают вероятность ровно 0 или ровно 1.

Если модель говорит "100% уверенности", это обычно тревожный сигнал:

  • переобучение;

  • утечка данных;

  • слишком агрессивные предположения.

Здоровая модель почти всегда оставляет место сомнению.

13.3 Шкала уверенности от 0 до 1

Вероятность и решения

Не менее важно понимать: вероятность сама по себе ничего не решает. Решения принимает бизнес-логика.

Например:

  • письмо – спам с вероятностью 0.6;

  • удалять ли его автоматически? зависит от цены ошибки.

Поэтому в прикладных системах вероятность – это вход в принятие решений, а не само решение.

Итог

Вероятность в машинном обучении – это не про монетки и кубики. Это язык, на котором модель говорит о своей уверенности.

Она:

  • отражает наше знание, а не объективную истину;

  • обновляется при поступлении новых данных;

  • почти всегда содержит неопределенность;

  • служит основой для принятия решений, но не подменяет их.

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

circle-info

Чтобы самостоятельно протестировать этот код, установите примеры из официального репозитория GitHubarrow-up-right или воспользуйтесь онлайн-демонстрациейarrow-up-right для его запуска.

Last updated