Понимание выборки, центральной предельной теоремы и оценки максимального правдоподобия с нуля (математика + визуализация).

Центральная предельная теорема — важный результат в области статистики. Это одна из причин, по которой нормальное распределение (гауссова кривая) появляется снова и снова в, казалось бы, несвязанных местах. В этой статье мы попытаемся дать простое объяснение этому противоречивому результату.

Попутно мы кратко объясним многие статистические термины: случайные выборки, систематическая ошибка выборки, случайные величины, нормальное распределение и оценка максимального правдоподобия (для нормального распределения) и другие. Эта терминология довольно специфична, поэтому я рекомендую вам внимательно прочитать раздел «Терминология статистики», если вы не знакомы.

Как всегда, я надеюсь, что мои слова помогут вам внести ясность в эту тему. Давайте углубимся в это!

Содержание:

  1. Статистическая терминология
    (i) Совокупность
    (ii) Изучаемая переменная
    (iii) (Случайная) Выборка
    (iv) Размер выборки
    (v) Выборка и погрешности
    (vi) Выборочная статистика в сравнении со статистикой населения
  2. Математика, стоящая за центральной предельной теоремой
    (i) Математическая система обозначений
    (ii) Центральная предельная теорема (ЦПТ)
    (iii) Какое нормальное распределение лучше всего соответствует выборке? (Оценка максимального правдоподобия)
    (iv) Сочетание CLT и MLE для оценки статистики населения
  3. Моделирование CLT
    (i) Графики моделирования
    (ii) Код для воспроизведения моделирования
  4. Заключение и актуальность в машинном обучении
  5. Рекомендации

1. Статистическая терминология

(i) Население: группа элементов, о которых вы хотите узнать. Это могут быть люди (например, жители страны), товары (все товары, продаваемые на amazon.com), что угодно. Здесь нет реальных ограничений по размеру, но вы предполагаете, что население действительно огромно, поэтому вы не можете измерить все элементы и вам нужно взять образец. Мы будем использовать всех граждан Соединенных Штатов в качестве достаточно большого населения.

(ii) Интересующая переменная: Представьте, что каждый элемент совокупности имеет связанную строку значений, например таблицу Excel. Для группы граждан США у вас могут быть следующие значения: «возраст», «группа_крови» и т. д. Вас интересует одна конкретная переменная, скажем, возраст граждан США.

(iii) (Случайная) выборка: часть вашей совокупности, выбранная случайно. «Случайно» здесь означает что-то конкретное: каждый элемент совокупности должен иметь равную вероятность быть выбранным (вероятность = 1/размер_населения), и элементы должны выбираться независимо, т. е. выбор одного элемента не должен вызывать выбор другого элемента. более-менее вероятно.

(iv) Размер выборки: обычно мы фиксируем размер выборки на некотором значении, обозначаемом переменной «N». Важно отметить, что N не является случайной величиной; он остается неизменным независимо от того, сколько образцов мы берем. Кроме того, элементы выбираются с заменой, то есть, когда мы берем несколько образцов, мы можем выбирать одни и те же элементы снова и снова. Это аналогично случайному выбору N карт (из «населения» в 52 карты), замене их, затем вытягиванию еще N карт и повторению этого много раз.

(v) Выборка и погрешности. Почему мы используем случайные выборки? Как уже упоминалось, невозможно (или, по крайней мере, неудобно) собирать информацию обо всех гражданах США каждый раз, когда вам нужно провести анализ возраста. Вместо этого вы должны взять случайное подмножество и использовать его. Для такого огромного населения, как граждане США, случайная выборка сама по себе очень сложна, и почти каждый подход, который вы можете себе представить, подвержен тому или иному виду статистической погрешности.

  • Если вы случайным образом останавливаете людей на своей улице в полдень во вторник, ваша выборка смещена как минимум в двух направлениях:
    (а) вы не заметите людей, которые находятся на работе, которая обычно начинается в 9 утра.
    (b) вы также смещаете свою выборку, чтобы представить только людей с улицы, на которой вы живете (предположим, что вы живете в студенческом городке, переменная «средний возраст» для вашей выборки будет иметь тенденцию к искажению моложе, чем истинное население). средний возраст).
  • Предположим, вы отправляете электронное письмо каждому гражданину США и спрашиваете его возраст, но на самом деле ответит только определенная часть. Это называется «предвзятость опроса»: собранная вами выборка слишком репрезентативна для людей, которые часто проверяют электронную почту и готовы участвовать в опросах.
  • Существует много других видов систематической ошибки выборки, я не буду вдаваться в подробности. Как правило, мы выбираем достаточно случайную выборку, которая, хотя и не является полностью случайной, является лучшей из тех, что у нас есть. Это называется «удобный образец». Это остается на усмотрение исследователя, и плохой исследователь может использовать удобную выборку, которая ужасно необъективна.

(vi) Выборочная статистика по сравнению со статистикой населения: мы хотим узнать что-то о населении, например. средний «возраст» граждан США. Мы практически не можем получить возраст всех граждан США для нашего эксперимента, поэтому мы берем выборку и оцениваем средний возраст (поскольку средний возраст — это число, он называется точечной оценкой). Здесь «средний возраст», измеренный в выборке, является примером «выборочной статистики», тогда как истинный «средний возраст» в популяции — это соответствующая «статистика популяции». сильный>. Мы не знаем значение генеральной совокупности (если бы мы знали, выборка была бы ненужной), поэтому вместо этого мы хотим, чтобы статистическое значение выборки было близко к значению генеральной совокупности, уменьшая систематическую ошибку.

2. Математика центральной предельной теоремы

(i) Математическая запись

Предположим, вы каким-то образом решили проблему смещения выборки и получили случайную выборку из N граждан США. Вы измеряете их возраст, что дает нам N случайных величин: A_1, A_2, …, A_N.

Вспомните, что такое Случайная переменная: это функция отображения, вход которой — один результат в пространстве состояний вероятности, а выход — вещественное число. Мы будем использовать r.v. для краткости.
Примером случайной переменной является сумма двух бросков игральной кости: пространство состояний результатов — это все 36 пар {(1,1), (1,2), ..., (6,6)} и с.в. X = сумма бросков кубика = D_1 + D_2 отображает это пространство состояний в целое число в диапазоне [2, 12]. Здесь X — это функция отображения: она имеет отображения из всех возможных комбинаций двух бросков костей в число из [2, 12]. Р.в. в основном таблицы поиска.
Для граждан США пространство состояний немного сложно, поэтому давайте просто проигнорируем его структуру и назовем его S (это обычная практика в теории вероятностей и статистике: случайные величины дают вам всю информацию, необходимую для выполнения анализа, поэтому базовое пространство состояний почти никогда не имеет значения; просто имейте в виду, что оно существует). Википедия сообщает нам, что самому старому гражданину США было 119 лет и 97 дней, поэтому допустим, что диапазон каждой случайной величины A_i находится в диапазоне от 0 до 120.

Таким образом, математически мы можем определить каждую случайную величину как: A_i: S → [0, 120]

Каждая случайная величина связана с определенным распределением вероятностей, которое сообщает нам вероятность этой случайной величины. принимая определенное значение или значения в определенном диапазоне (например, p (13 ‹ = A_i ‹ 20) говорит нам о вероятности того, что случайно выбранный гражданин США является подростком). Если бы нас заботило семейное положение, а не возраст, мы могли бы получить с.в. M_1, M_2, …, M_N. Здесь каждый M_i принимает только два значения: (0=не женат, 1=замужем), т. е. мы имеем с.в., определенные как функции отображения M_i: S -> {0, 1}. Распределение вероятности M_i является распределением Бернулли, поскольку результаты M_i являются бинарными (эквивалентно взвешенному подбрасыванию монеты, где вероятность выпадения орла может быть любым значением от 0 до 1, не обязательно 0,5).

Точно так же наша случайная величина «возраст» имеет некоторое распределение. Давайте пока не будем предполагать какое-либо конкретное распределение; оно может быть дискретным или непрерывным, но оно будет иметь ненулевую вероятность где-то в [0, 120] и нулевую вероятность за пределами [0, 120] (примечание: существуют непрерывные распределения, соответствующие этому критерию, такие как бета-распределение). ).

Подводя итоги:

  • У нас есть выборка из N человек, возраст которых мы измерили, как случайные величины A_1, A_2, …, A_N, где каждый A_i: S -> [0, 120].
  • Мы не делаем каких-либо предположений о распределении каждого A_i: это может быть кривая нормального распределения, это может быть бета-версия, она может быть скошена влево или вправо (на самом деле, я думаю, заключается в том, что он смещен вправо, поскольку, когда люди умирают, они удаляются из населения).
  • Однако мы делаем предположение, что каждый элемент в выборке является i.i.d. (независимо и одинаково распределены). Это означает, что все с.в. от A_1 до A_N являются (a) независимыми, что означает, что значение, принимаемое A_i, никоим образом не зависит от значения, принимаемого A_j; (b) Одинаково распределены, что означает, что все от A_1 до A_N имеют одинаковое распределение. Поскольку все они измеряют возраст случайно выбранного гражданина США, все они имеют одинаковое распределение, то есть истинное распределение возраста самого населения. Таким образом, для выборки всегда выполняется предположение об «идентичном распределении»; это предположение о «независимости», которое иногда трудно оправдать.

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

Среднее значение выборки — это среднее значение нашей выборки, то есть среднее значение случайных величин от A_1 до A_N.

Обозначим выборочное среднее через A_bar:

Этот термин состоит из одной или нескольких случайных переменных, что означает, что это также случайная величина, то есть она должна иметь распределение. Распределение выборочной средней с.в. называется «выборочное распределение выборочного среднего».

Этот момент (относительно распределения выборки) сложен, поэтому позвольте мне объяснить подробнее:

  • Выборка образца. Когда вы берете образец, вы «осознаете» значения случайных величин A_1, …, A_N, то есть они принимают фактические значения в диапазоне [0, 120].
    Допустим, N=5, наши с.в. можно «реализовать» до значений (A_1=17, A_2=56, A_3=17, A_4=4, A5=33). «Реализуя» одну с.в. означает, что вы останавливаете одного человека на улице и спрашиваете его возраст: по сути, вы получаете значение для случайной величины, и вероятность получения определенного значения определяется распределением вероятностей случайной величины.
    Здесь мы независимо выбираем N значений в соответствии с одним и тем же распределением вероятностей… вот что значит иметь «i.i.d. образец".
  • Возьмем много образцов. Теперь предположим, что мы берем 10 образцов, каждый из которых содержит N предметов (это эквивалентно тому, что вы и 9 друзей каждый по отдельности определяете возраст N людей на улице). Каждый образец вряд ли будет точно одинаковым. Таким образом, когда мы вычисляем выборочное среднее A_bar для каждой выборки, скорее всего, в значениях есть некоторая дисперсия. Это называется «выборочной изменчивостью выборочного среднего». По сути, наша выборочная статистика (здесь — выборочное среднее) также следует распределению! Это распределение A_bar, с.в. связано со средним значением выборки, о котором мы уже упоминали ранее.
  • В частности, если истинное среднее значение генеральной совокупности равно µ, а истинная дисперсия генеральной совокупности равна σ², то доказуемо следующее (используя определения математического ожидания и дисперсии случайных величин):

Выборочное среднее A_bar имеет среднее значение µи дисперсию σ²/N
Где,
µ = истинное среднее значение совокупности (неизвестно)
σ² = истинное отклонение совокупности (неизвестно)

  • Это само по себе мало что нам говорит, поскольку среднее значение генеральной совокупности и дисперсия генеральной совокупности являются неизвестными величинами. Если бы мы знали их, нам не нужно было бы проводить работу по отбору проб. Более того, вы можете рассчитать среднее значение и дисперсию любого распределения, даже бета-распределения, так что это ничего не говорит нам о структуре выборочного распределения выборочного среднего.

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

(ii) Центральная предельная теорема (ЦПТ)

Центральная предельная теорема гласит: выборочное распределение выборочного среднего приблизительно соответствует нормальному распределению.
По мере увеличения размера выборки N распределение выборочного среднего становится все ближе и ближе к нормальному. распределение, а при N=бесконечности оно совершенно нормально распределено.
Это верно независимо от распределения случайных величин в выборке, т. е. от A_1 до A_N.

Заключительный момент - действительно интересная часть. Начните с распределения населения любой формы (предположим, мы живем в мире, где граждане США были равномерно распределены по всем возрастам). Образец из этой совокупности, вычислить среднее значение. Сделайте это много раз, т.е. возьмите много выборок, и значения выборочного среднего сформируют нормальное распределение. Насколько близко распределение выборочного среднего к нормальному распределению, определяется размером выборки.

Более конкретно, CLT определяется по «выборочной сумме»:
A_sum = (A_1 + A_2 + … + A_N),
…но результат верен для выборочного среднего также, поскольку очевидно, что A_bar = (1/N)*A_sum, так что это просто масштабированная версия того же самого.

Следствие центральной предельной теоремы очень важно:

  • Как упоминалось выше, выборочное среднее A_bar, будучи случайной величиной, имеет некоторое распределение, и среднее значение этого распределения равно µ(среднее значение генеральной совокупности), а дисперсия составляет σ²/N (одна N-я дисперсии генеральной совокупности). Это само по себе мало что нам говорит, поскольку мы не знаем среднего значения или дисперсии населения.
  • Однако с помощью CLT мы теперь знаем, что если мы возьмем достаточно большую выборку (т. е. N достаточно велико), выборочное среднее A_bar будет распределено в соответствии с нормальным распределением. . В чем особенность нормального распределения? Дело в том, что среднее значение и дисперсия являются параметрами самой формулы нормального распределения.

Итак, теперь мы переходим к главному вопросу: мы выбрали точки данных (список возрастов граждан США в нашей выборке). Мы знаем, что это нормальное распределение. Как нам перейти от точек данных к параметрам этого распределения? Типичным подходом для этого является оценка максимального правдоподобия (MLE).

(iii) Какое нормальное распределение «лучше всего соответствует» выборке? (Оценка максимального правдоподобия)

Когда у вас есть список точек данных и вы выбрали распределение вероятностей, которое, по вашему мнению, представляет собой распределение данных, оценка максимального правдоподобия (MLE) является принципом выбора «хороших» параметров распределение вероятностей (например, выбор µ и σдля нормального распределения).
Принцип MLE, по сути, гласит: «выберите параметры, которые лучше всего объясняют данные». В частности, это означает, что мы выбираем параметры, которые максимизируют вероятность множественных точек данных.

В разделе «Ссылки» я ссылаюсь на прекрасно иллюстрированную статью Джонни Брукса-Бартлетта [1], которая объясняет MLE в контексте нормального распределения.
Кроме того, MLE также используется в машинном обучении с учителем; в основном это просто руководящий принцип для выбора параметров, которые максимизируют вероятность соответствующего распределения вероятностей.

Вероятность нормального распределения — это функция распределения вероятностей (PDF):

Здесь x — это одна точка данных. Но нам нужна вероятность нашего всего набора точек данных (то есть нашей выборки возрастов граждан США). То есть мы хотим рассчитать:

В самом общем случае мы здесь застряли. Однако, напомним, мы сделали важное предположение: i.i.d. предположение, означающее, что все точки данных независимы. По правилам вероятности (в частности, по условной независимости) мы можем разбить приведенный выше термин следующим образом:

Мы в деле! Мы знаем правую часть… это просто произведения нормального распределения PDF для каждой переменной x_i.

Теперь, с помощью MLE, мы хотим найти значения µи σ, которые максимизируют это уравнение с учетом нашего конкретного выборка точек данных. Мы можем сформулировать эту цель максимизации математически, используя оператор argmax (который, в отличие от оператора max, возвращает параметры, а не максимальные значения):

Это цель двойной максимизации: мы хотим найти пару значений для µи σ. что максимизирует этот срок. Как оказалось, это уравнение имеет решение в закрытой форме, что означает, что мы можем получить оптимальные значения µи σ вручную:

Эти формулы могут показаться вам знакомыми! Это формулы для расчета выборочного среднего и выборочного стандартного отклонения, которые преподаются во вводных учебниках по статистике. Мы только что объяснили, откуда они берутся. Вы можете найти доказательство этих формул в другой иллюстративной статье на Medium [2] Мариссы Эппс.

(iv) Сочетание CLT и MLE для оценки статистики населения

Таким образом, учитывая случайную выборку (например, выборку возрастов граждан США), мы можем сделать следующее:

  1. Рассчитайте среднее значение выборки µ_mle, используя приведенное выше уравнение MLE.
    По CLT это хорошее приближение к µ, истинному среднему населению.
  2. Рассчитайтевыборочную дисперсию (σ_mle)²с помощью приведенного выше уравнения MLE.
    По CLT это хорошее приближение к σ², истинной дисперсии генеральной совокупности.

Таким образом, мы можем использовать случайную выборку населения для аппроксимации важных статистических данных населения (среднее значение и дисперсия). Насколько хороша аппроксимация, зависит от размера выборки (N).

ПРИМЕЧАНИЕ: важно подчеркнуть разницу между:

  • выборочная дисперсия, т. е. (σ_mle)² , и
  • дисперсия выборочного распределения выборочного среднего, т. е. σ²/N

Первая — это наша оценка истинной дисперсии генеральной совокупности, т. е. дисперсии распределения генеральной совокупности (которое может быть асимметричным, бета-распределением и т. д.). По мере увеличения размера выборки N значение (σ_mle)² приближается к σ²

Последнее является мерой выборочной изменчивости выборочного среднего, т. е. насколько выборочное среднее будет варьироваться между выборками. Это свойство выборочного распределения среднего значения выборки (которое, как мы знаем из CLT, является нормально распределенным). По мере увеличения размера выборки N σ²/N приближается к нулю!
Например, если вы возьмете 10 выборок, каждая из которых действительно огромна (близка к размеру населения), то рассчитанные выборочные средние для 10 выборок будут очень близки друг к другу, т. е. дисперсия их значений будет небольшой. По мере увеличения N дисперсия рассчитанных выборочных средних будет продолжать уменьшаться. Раздел «Моделирование CLT» иллюстрирует это.

3. Моделирование CLT

Теория — это хорошо, но она помогает увидеть вещи своими глазами.

На изображениях ниже мы строим выборочное распределение выборочного среднего для трех переменных, каждая из которых имеет разные совокупности, распределенные следующим образом:
1. Переменная# 1: Непрерывное равномерное распределение (a=0, b=120)
2. Переменная №2: Дискретное равномерное распределение (n=6)
3. Переменная №3: Бета-распределение (a=0,1, b =5)

Мы варьируем как N (размер выборки), так и K (количество взятых выборок), чтобы создать сетку графиков 5x3 для каждой переменной генеральной совокупности.

  • Для каждого графика в сетке каждой переменной красная кривая представляет собой оценочное выборочное распределение выборочного среднего.
    Чтобы построить эту кривую, мы должны взять K случайных выборок (каждая размером N) из распределения населения соответствующей переменной. Затем мы вычисляем среднее значение каждой выборки, что дает нам K чисел. Мы строим кривую этих K чисел, используя KDE (оценка плотности ядра), который является еще одним способом аппроксимации гладкой кривой из списка чисел.
  • Красная кривая в правом верхнем углу графика — это истинное распределение населения. Верхний правый график каждой сетки имеет N = 1 и K = 10 000… это фактически просто выборка 10 000 точек из самого распределения населения, поэтому он должен отражать форму распределения населения.
  • Для каждого графика в сетке определенной переменной синяя кривая представляет собой фактическое выборочное распределение выборочного среднего для распределения совокупности этой переменной. Он рассчитывается на основе истинного среднего значения и истинной дисперсии соответствующего распределения населения при данном размере выборки. Мы можем построить синюю кривую только в таком моделировании, где мы знаем среднее значение и вариацию населения.
  • Красная кривая (т. е. расчетное выборочное распределение выборочного среднего) является аппроксимацией синей кривой (т. е. истинное выборочное распределение выборочного среднего).
  • Черная линия – это среднее значение синей кривой (т. е. истинное распределение выборки среднего значения).
    красная линияявляется средним значением выборочных средних по K выборкам; это среднее значение красной кривой (т. е. приблизительное выборочное распределение выборочного среднего).
  • Мы видим, что качество аппроксимации (красная кривая) улучшается по мере продвижения от верхнего левого угла к нижнему правому.
    (i) По мере продвижения сверху вниз по каждой сетке размер выборки N увеличивается, и красная кривая (приблизительно) становится ближе к синей кривой (истинно). Это Центральная предельная теорема в действии!
    (ii) По мере продвижения слева направо по сетке K увеличивается (т. е. мы взяли большее количество выборок), и, таким образом, форма выборочного распределения становится более четко определенной. Это ожидаемо, так как с большим количеством точек данных приближение KDE становится лучше. Но обратите внимание, что самый правый столбец (с K = 10 000) не всегда является нормальным распределением; в частности, в случае бета-распределения оно по-прежнему сильно скошено при низких значениях N.
    Однако мы видим, что по мере увеличения K красная линия сходится к черной линии, т. е. увеличение K, числа взятых выборок, приближает расчетное среднее выборочного распределения к истинному среднему выборочному распределению.

(i) Графики моделирования

1. Переменная №1: распределение популяции Непрерывное равномерное (a=0, b=120)

Наша непрерывная с.в. здесь — возраст гражданина США, который может быть любым значением в диапазоне [0, 120]. Здесь мы предполагаем равномерное распределение между возрастами от 0 до 120 лет, что нереально в нашем мире (но могло бы быть реалистичным в «альтернативной вселенной»).

Верхний правый график в этой сетке показывает равномерное распределение между [0,120]. Это не идеально, так как KDE пытается аппроксимировать с помощью нескольких гауссов. Но это достаточно близко.

По мере приближения к правому нижнему углу аппроксимированная кривая (красная) становится близкой к истинной кривой (синяя) всего лишь при N=10.

2. Переменная № 2: дискретное равномерное распределение населения (n = 6)

По сути, это бросок кубика со значениями из {1, 2, …, n}, каждое из которых имеет одинаковую вероятность. Верхний правый график в этой сетке показывает пики на 1, 2, 3, 4, 5 и 6. Это связано с тем, что KDE пытается аппроксимировать вещи, используя несколько гауссов, тогда как истинное распределение является дискретно-равномерным (6 палочек одинаковой высоты). .

Опять же, когда мы приближаемся к правому нижнему углу, аппроксимированная кривая (красная) становится близкой к истинной кривой (синяя) с размером выборки всего N = 10.

3. Переменная № 3: бета-распределение населения (a = 0,1, b = 5)

На верхнем правом графике видно, что бета-распределение (a=0,1, b=5) очень узкое и асимметричное. Это первый дистрибутив, в котором нам нужно большое значение N, чтобы увидеть CLT в действии; даже при N=50 и K=10 000 красная и синяя кривые сильно различаются. Только при размере выборки N=1000 начинает проявляться эффект CLT.

Кроме того, в нижнем слева мы видим, что даже при N = 1000 аппроксимированное среднее выборочного распределения (красная пунктирная линия) сильно отличается от истинного среднего. выборочного распределения (черная линия). Красная линия рассчитывается как среднее значение K (т. е. среднее K выборочных средних), и, таким образом, только увеличивая K, мы можем приблизить ее к истинному среднему выборочному среднему. Это можно наблюдать при всех значениях N: красная линия становится ближе к черной только слева направо, а не сверху вниз.

(ii) Код для воспроизведения симуляций

Я использовал следующий код для создания симуляций. Необходимые зависимости можно установить следующим образом:

! pip install pandas numpy bokeh holoviews hvplot

Чтобы воспроизвести, запустите следующий блок кода, чтобы настроить необходимые функции.

Затем вам нужно вызвать следующие функции для создания графиков:
1. ContinuousUniformCLT()
2. DiscreteUniformCLT()
3. BetaCLT()

Поскольку это симуляция, стохастичность случайной выборки означает, что точные графики, которые вы получаете, могут отличаться (я забыл установить начальное число перед созданием графиков). Однако общая тенденция должна сохраняться; в частности, графики в правом верхнем и правом нижнем углу должны выглядеть очень похоже на изображения выше.

import numpy as np, pandas as pd, math, time
import bokeh
import holoviews as hv
import hvplot.pandas
hv.extension('bokeh')

def human_readable_numbers(n, decimals: int = 0, commas:bool=False):
    n = round(n)
    if n < 1000:
        return str(n)
    if commas:
        return f"{n:,}"
    else:
        names = ['', 'thousand', 'million', 'billion', 'trillion', 'quadrillion']
        n = float(n)
        idx = max(0,min(len(names)-1,
                            int(math.floor(0 if n == 0 else math.log10(abs(n))/3))))

        return f'{n/10**(3*idx):.{decimals}f} {names[idx]}'

def plot_central_limit_theorem(population_distribution, mean, var):
    plots = []
    for N in [1, 2, 10, 50, 1_000]:
        for num_samples in [int(1e1), int(1e2), int(1e4)]:
            start = time.perf_counter()
            print(f'Plotting N={N}, num_samples={num_samples}...', end='')
            sample_means = pd.Series([
                np.array(population_distribution(N)).mean(axis=0)
                for _ in range(num_samples)
            ], name='Age')
            assert len(sample_means) == num_samples

            sample_means_mean = sample_means.mean()
            sample_means_std = sample_means.std()
            gaussian_height = 1.1*0.4/math.sqrt(var/N)

            true_means = pd.Series(np.random.normal(loc=mean, scale=math.sqrt(var/N), size=int(1e6)))

            plot = sample_means.hvplot.kde().opts(
                color='coral', line_color='red', axiswise=True, alpha=0.25,
            ) * true_means.hvplot.kde().opts(
                color='powderblue', line_color='blue', axiswise=True, alpha=0.25,
            )
            population_mean_plot = hv.Curve([[mean, 0], [mean, gaussian_height]]).opts(
                color='black', 
                line_width=2.0,
            )
            sample_means_mean_plot = hv.Curve([[sample_means_mean, 0], [sample_means_mean, gaussian_height]]).opts(
                color='red', 
                line_dash='dashed', 
                line_width=2.0,
            )
            plot = (plot.opts(axiswise=True) * population_mean_plot.opts(axiswise=True) * sample_means_mean_plot.opts(axiswise=True)).opts(
                title=f'N: {human_readable_numbers(N, commas=True)}; Samples={human_readable_numbers(num_samples, commas=True)}', 
                width=300, 
                height=150, 
                axiswise=True,
                fontsize={'title':'7pt'},
                xticks=4,
                yticks=4,
            )
            plots.append(plot)
            end = time.perf_counter()
            print(f'done in {end-start:.1f} sec')
    plot = None
    for p in plots:
        plot = p if plot is None else plot + p
    return plot.cols(3)

def ContinuousUniformCLT(a=0, b=120):
    """Models a continuous uniform distribution between [a,b]"""
    a, b = min(a,b), max(a,b)
    ## Population distribution mean & variance:
    mean = (a+b)/2 
    var = (1/12)*((b-a)**2)
    fn = lambda N: np.random.uniform(low=a, high=b, size=N)
    return plot_central_limit_theorem(fn, mean=mean, var=var)

def DiscreteUniformCLT(n=6): ## Default=die roll. 
    """Models a discrete uniform over values {1, 2, ..., n}. Ref: https://proofwiki.org/wiki/Variance_of_Discrete_Uniform_Distribution"""
    ## Population distribution mean & variance:
    mean = (1 + n)/2 
    var = (n**2 - 1)/12
    fn = lambda N: np.random.randint(low=1, high=n+1, size=N)
    return plot_central_limit_theorem(fn, mean=mean, var=var)

def BetaCLT(a=0.1, b=5):
    """Models a Beta distribution with a=alpha, b=beta."""
    ## Population distribution's mean & variance:
    mean = a/(a+b)
    var = (a*b)/(((a+b)**2)*(a+b+1))
    fn = lambda N: np.random.beta(a=a, b=b, size=N)
    return plot_central_limit_theorem(fn, mean=mean, var=var)

4. Заключение и актуальность в машинном обучении

Мы совершили путешествие по Stat-Land и изучили Центральную предельную теорему, фундаментально важное понятие в статистике.

Ожидается, что в машинном обучении с учителем наши наборы данных для обучения и тестирования будут выборками из некоторого реального совместного распределения вероятностей P (X, Y), где X может быть d-мерным пространством действительных чисел. Это «реальное совместное распределение вероятностей» в основном является распределением населения с некоторыми изменениями. Таким образом, вся терминология статистики, определенная выше (включая CLT), применима к задачам машинного обучения.

Завершаю этот пост обязательным мемом про ML и статистику:

5. Ссылки

[1] Джонни Брукс-Бартлетт, Объяснение концепций вероятности: оценка максимального правдоподобия: https://towardsdatascience.com/probability-concepts-explained-maximum-likelihood-estimation-c7b4342fdbb1

[2] Марисса Эппс, Объяснение оценки максимального правдоподобия — нормальное распределение: https://towardsdatascience.com/maximum-likelihood-estimation-explained-normal-distribution-6207b322e47f

[3] Джефф Камминг и Роберт Калин-Джагеман, «Введение в новую статистику» (2016).

[4] Матье Руо, «Вероятность, статистика и оценка»