Перейти к содержанию

Модуль 2. Данные и вероятность

После этого модуля вы сможете

  • Различать параметр распределения и его оценку по выборке — и не путать их в разговоре.
  • Объяснить, откуда в стандартной ошибке берётся \(\sqrt{n}\).
  • Посчитать, сколько зёрен нужно, чтобы увидеть разницу заданного размера. Формулой, а не перебором.
  • Применить формулу Байеса к задаче, где интуиция даёт неверный ответ.
  • Объяснить переобучение через шум, не произнося слова «модель».

Время: около двух недель. Пререквизиты: модуль 1. Ноутбук: notebooks/02-data-and-probability.ipynb

Зачем это

Модуль 1 закончился утверждением: число из одного запуска — это одно наблюдение случайной величины. Слова были употреблены, но не определены. Здесь они определяются.

И один долг остался неоплаченным. В модуле 1 на вопрос «сколько зёрен нужно» ответ был получен перебором: посчитали долю неверных выводов для 1, 3, 5, 10, 20, 50, 100 зёрен и посмотрели глазами. Так можно, но так каждый раз считать не будешь. К концу этого модуля на тот же вопрос будет ответ формулой.

Случайная величина

Бросок кубика даёт число. До броска неизвестно какое, после — известно. Величина, которая ведёт себя так, называется случайной.

Прогон обучения ведёт себя точно так же. До запуска точность неизвестна, после запуска — это число. Между запусками оно меняется, потому что меняются зерно, порядок данных, инициализация весов.

Распределение отвечает на вопрос, какие значения случайная величина принимает и с какой охотой. Для кубика: шесть значений, каждое с вероятностью \(1/6\). Для точности модели: непрерывный набор значений, и чаще всего распределение похоже на нормальное — колокол вокруг некоторого центра.

Почему так часто колокол

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

Параметр и оценка

Вот различение, из-за которого путаница в половине разговоров про статистику.

Параметр — свойство распределения. Истинное среднее \(\mu\), истинная дисперсия \(\sigma^2\). Это числа, которые существуют, но нам недоступны: чтобы их узнать, нужно бесконечно много наблюдений.

Оценка — то, что мы вычисляем по выборке. Выборочное среднее \(\bar{x}\), выборочная дисперсия \(s^2\). Это числа, которые у нас есть.

Оценка — сама случайная величина. Возьмите другую выборку, получите другое \(\bar{x}\). Именно поэтому у оценки есть собственный разброс, и именно его меряет стандартная ошибка из модуля 1.

Параметр Оценка
Обозначение \(\mu\), \(\sigma^2\) \(\bar{x}\), \(s^2\)
Откуда свойство распределения вычислено по выборке
Меняется от выборки к выборке нет да
Известно нам нет да

Несмещённость означает, что в среднем по многим выборкам оценка попадает в параметр. Ровно это проверялось численно в ноутбуке модуля 1: деление на \(n\) давало занижение на \(1/n\), деление на \(n-1\) — не давало.

Закон больших чисел и корень из n

Два утверждения, из которых растёт вся практика измерения.

Закон больших чисел. С ростом \(n\) выборочное среднее сходится к истинному. Это обещание, что измерять вообще имеет смысл.

Центральная предельная теорема. Выборочное среднее \(\bar{x}\) само распределено приблизительно нормально вокруг \(\mu\) со стандартным отклонением \(\sigma/\sqrt{n}\) — независимо от того, как распределены исходные \(x_i\).

Вторая теорема и есть источник \(\sqrt{n}\) в формуле стандартной ошибки:

\[\mathrm{SE} = \frac{s}{\sqrt{n}} \approx \frac{\sigma}{\sqrt{n}}\]

Читайте её как обменный курс. Хотите вдвое более точное среднее — платите вчетверо большим числом запусков. Курс невыгодный и не подлежит обсуждению: это свойство арифметики, а не недоработка метода.

Сколько зёрен нужно

Теперь долг из модуля 1.

Есть два метода. Истинная разница между ними \(\Delta\), разброс между зёрнами \(\sigma\). Сколько запусков каждого метода нужно, чтобы разница была видна?

Разница средних \(\bar{x}_A - \bar{x}_B\) имеет стандартную ошибку \(\sigma\sqrt{2/n}\). Чтобы разница уверенно отличалась от нуля, нужно, чтобы \(\Delta\) была заметно больше этой ошибки. Стандартное требование — обнаружить эффект в 80 % случаев на уровне значимости 0.05 — даёт

\[n \approx 16\,\frac{\sigma^2}{\Delta^2}\]

Одна формула, и она меняет отношение к экспериментам.

Подставим числа модуля 1

Там было \(\Delta = 2\), \(\sigma = 4\). Считаем: \(n \approx 16 \cdot 16 / 4 = 64\).

Шестьдесят четыре запуска каждого метода. В статьях обычно три.

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

Обратите внимание на квадраты. Эффект вдвое меньше — запусков вчетверо больше. Разброс вдвое больше — запусков вчетверо больше. Мелкие улучшения дороги не потому, что их трудно получить, а потому, что их трудно доказать.

Условная вероятность и Байес

Второй сюжет модуля. Он понадобится в классификации, в проверке цитат и всюду, где встречается слово «вероятность того, что».

Условная вероятность \(P(A \mid B)\) — вероятность \(A\) при известном \(B\). Определение:

\[P(A \mid B) = \frac{P(A \cap B)}{P(B)}\]

Отсюда за две строки получается формула Байеса:

\[P(A \mid B) = \frac{P(B \mid A)\,P(A)}{P(B)}\]

Она переворачивает условие. Знаем \(P(B \mid A)\) — получаем \(P(A \mid B)\). И это ровно то место, где интуиция ломается.

Тест на редкую болезнь

Болезнь встречается у одного человека из тысячи. Тест находит болезнь у больного в 99 % случаев и ошибается на здоровом в 5 % случаев. Тест положительный. Какова вероятность, что человек болен?

Большинство отвечает «около 95 %». Считаем.

\(P(\text{болен}) = 0.001\). \(P(+ \mid \text{болен}) = 0.99\). \(P(+ \mid \text{здоров}) = 0.05\).

\[P(+) = 0.99 \cdot 0.001 + 0.05 \cdot 0.999 = 0.0509\]
\[P(\text{болен} \mid +) = \frac{0.99 \cdot 0.001}{0.0509} \approx 0.019\]

Меньше двух процентов. Из тысячи человек болен один, и тест его найдёт. Здоровых 999, и на пятидесяти из них тест ошибётся. Пятьдесят ложных на одного истинного.

Дело не в качестве теста, а в редкости болезни. Хороший тест на редкое событие даёт в основном ложные срабатывания — и это же происходит с классификатором на несбалансированных данных, с детектором мошенничества и с любым фильтром, который ищет иголку.

Переобучение

Про модели ещё ни слова не сказано, а явление уже можно объяснить целиком.

Данные — это сигнал плюс шум. Сигнал повторяется в новых данных, шум не повторяется по определению.

Подгонка достаточно гибкой функции под конкретную выборку подгоняет её под обе составляющие сразу. Функция запоминает и закономерность, и случайные особенности этих конкретных точек. На этих данных ошибка падает. На новых данных подогнанный шум — помеха, и ошибка растёт.

Отсюда правило, которое дороже любого алгоритма: качество меряется на данных, которых модель не видела. Не потому, что так принято, а потому, что на виденных данных мерять нечего — ответы там уже в модели.

Утечка

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

Утечка обычно выглядит как приятная неожиданность. Метрика внезапно стала гораздо лучше — первым делом ищите утечку, а не радуйтесь.

Практика

Часть 1. Ноутбук

Откройте notebooks/02-data-and-probability.ipynb.

Что внутри:

  1. ЦПТ численно: усредняем выборки из откровенно ненормального распределения и смотрим, как среднее становится нормальным.
  2. Проверка \(\sigma/\sqrt{n}\): разброс среднего падает ровно как корень.
  3. Формула для \(n\) против прямого перебора. Совпадает ли предсказание с измерением.
  4. Байес на тесте для редкой болезни: считаем и рисуем, как ответ зависит от распространённости.
  5. Переобучение без слова «модель»: подгоняем полином всё большей степени под пятнадцать точек с шумом и смотрим на ошибку на новых точках.

Часть 2. Читаем аннотацию

Возьмите три статьи по любой близкой вам теме. Подойдёт arXiv, подойдут статьи, на которые ссылается документация библиотеки, которой вы пользуетесь.

По каждой, не читая раздел с методами:

  1. Какое улучшение заявлено в числах.
  2. Указан ли разброс. Указано ли число прогонов.
  3. Если и то и другое указано — прикиньте \(n\) по формуле. Хватило ли им запусков.
  4. Если разброс не указан — это отдельное наблюдение. Запишите его.

Три статьи, полчаса. Дальше это будет занимать пять минут и делаться автоматически.

Задание

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

  1. Оцените среднее и его стандартную ошибку. Скажите словами, что означает каждое из двух чисел.
  2. Разбейте данные пополам случайно. Посчитайте среднее на каждой половине. Попадают ли они в интервалы друг друга.
  3. Придумайте вопрос вида «вероятность \(A\) при условии \(B\)», на который в этих данных есть ответ. Посчитайте его напрямую и через Байес. Числа обязаны совпасть.
  4. Подгоните под данные многочлен степени, равной числу точек минус один. Он пройдёт ровно через все точки. Объясните письменно, почему это худшая из возможных моделей.

Проверка себя

  1. Чем параметр отличается от оценки? Какой из них случаен?
  2. Откуда в стандартной ошибке \(\sqrt{n}\)?
  3. Разброс между зёрнами вдвое больше ожидаемого улучшения. Сколько нужно запусков?
  4. Тест на редкую болезнь положительный. Почему ответ «почти наверняка болен» неверен?
  5. Что именно запоминает переобученная функция и почему это не помогает на новых данных?
  6. Почему нормализация до разбиения — это утечка?

Дальше

В модуле 3 появляется линейная алгебра: вектор, матрица, проекция. Не как отдельный предмет, а как язык, на котором записывают всё остальное. Первым же применением будет линейная регрессия, выведенная с нуля.

Число без разброса — не результат. Разброс без числа прогонов — не разброс.