Эта серия постов предназначена для всех тех, кто сталкивается с невероятными трудностями в понимании теорий и концепций вероятности и статистики, когда они начинают свой путь в области машинного обучения. Я попытался охватить большинство основных концепций, а также проиллюстрировать их реализацию на простом языке Python в последующих главах.

Введение

Распределение вероятностей — это математическая функция, с помощью которой можно рассчитать вероятность появления различных возможных результатов в эксперименте.

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

Типы распределения вероятностей

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

Биномиальное распределение

Биномиальное распределение используется, когда есть ровно два взаимоисключающих исхода испытания, например, подбрасывание монеты (орел/решка) и исход матча (выигрыш/проигрыш). Эти результаты соответствующим образом помечены как успех и неудача. Биномиальное распределение используется для получения вероятности наблюдения x успехов в N испытаниях с вероятностью успеха в одном испытании, обозначенном p,при условии, что p фиксировано для всех испытаний.

Вероятность получения ровно x успехов в n независимых испытаниях определяется функцией массы вероятности:

Попробуем проиллюстрировать биномиальное распределение на примере, как по формуле выше, так и через Python.

Постановка проблемы. Больничные записи показывают, что 75 % пациентов, страдающих определенным заболеванием, умирают от него. Какова вероятность того, что из шести случайно выбранных пациентов четверо выздоровеют?

Решение. Это биномиальное распределение, потому что есть только два исхода (пациент умирает или нет). Мы можем ясно видеть, что здесь n=6, x=4 & p=0,25 (поскольку мы должны рассчитать вероятность выздоровления, а вероятность смерти составляет 75%, поэтому вероятность выздоровления будет 1–0,75=0,25). Вышеупомянутая проблема может быть решена следующим образом:

Давайте попробуем решить тот же пример с помощью Python. В Python scipy.stats.binom.pmf дает функцию массы вероятности для биномиального распределения.

from scipy.stats import binom
probab=binom.pmf(k=4,n=6,p=0.25)
print("Probability that of six randomly selected Patients, four will recover :",probab)

Постановка задачи. Стрелок (с завязанными глазами) обнаруживает, что в среднем он попадает в цель «4» раза из «5». Если он сделает «4» выстрела, какова вероятность (а) более чем «2» попаданий и (б) не менее «3» промахов?

Решение. Здесь n=4,p=4/5=0,8. Для более чем 2 совпадений k может быть либо 3, либо 4, тогда как не менее 3 промахов также могут означать 0 или 1 совпадение, т.е. >k может быть либо 0, либо 1.

p=4/5
n=4
# Probability of more than 2 hits i.e. k=3 or 4
print("Probability of more than 2 hits :",binom.pmf(k=3,n=n,p=p)+binom.pmf(k=4,n=n,p=p))
# Probability of at least 3 misses i.e. either 1 hit or 0 hits, so k =0 or 1
print("Probability of at least 3 misses :",binom.pmf(k=0,n=n,p=p)+binom.pmf(k=1,n=n,p=p))

Для части (b) приведенной выше постановки задачи мы также можем использовать кумулятивную функцию распределения (CDF). Суммарная частота представляет собой сумму частот. В Python scipy.stats.binom.cdf дает кумулятивную функцию распределения для биномиального распределения.

print("Probability of atleast 3 misses :",binom.cdf(k=1,n=n,p=p))

Стандартное нормальное распределение

Прежде чем погрузиться в стандартное нормальное распределение, важно сначала понять нормальное распределение. Нормальное распределение является одним из наиболее распространенных непрерывных распределений вероятностей. Этот тип распределения важен в статистике и часто используется для представления случайных величин, распределение которых неизвестно. Этот тип распределения является симметричным, и его среднее значение, медиана и мода равны. Математически распределение Гаусса представляется как:

N~(μ, σ2 )

Где μ обозначает среднее значение, а σ2 обозначает дисперсию. Функция плотности вероятности нормального распределения выглядит следующим образом:

Эмпирическое правило нормального распределения заключается в том, что значения 68,27% лежат в пределах одного стандартного отклонения, значения 95,45% лежат в пределах двух стандартных отклонений, а значения 99,73% лежат в пределах двух стандартных отклонений.

Понимание стандартизации в контексте статистики. Каждый дистрибутив можно стандартизировать. Скажем, если среднее значение и дисперсия переменной равны μ и σ2 соответственно. Стандартизация — это процесс преобразования распределения в распределение со средним значением, равным 0, и стандартным отклонением, равным 1. Когда нормальное распределение стандартизировано, результат называется стандартным нормальным распределением.

i.e., N~(μ, σ2 ) → ~ N(0, 1)

Мы можем преобразовать любое нормальное распределение в стандартное нормальное распределение, то есть 𝑁(0,1), взяв точки данных (например, 𝑥), где z=(𝑥-𝜇 )/𝜎. Этот процесс называется стандартизацией, а значение z называется z-показателем.

С помощью оценок Z мы можем узнать, насколько далеко значение от среднего. Когда мы стандартизируем случайную величину, ее μ становится равным 0, а стандартное отклонение становится равным 1. Давайте разберемся с этапами стандартизации на простом примере. Предположим, у нас есть набор данных с элементами X = {1,1,1,2,2,2,3,3,4,4,4,4,5}.

Мы получаем среднее значение 3, дисперсию = 1,49 и стандартное отклонение 1,22, т. е. N ~ (3, 1,49).

Теперь мы вычтем среднее значение из каждой точки данных. Мы получим новый набор данных в виде: X1 = {-2, -1, -1, 0, 0, 1, 1, 1, 2,2}. Хотя теперь мы получаем среднее значение 0, дисперсия и стандартное отклонение по-прежнему равны 1,49 и 1,22 соответственно.

i.e., N ~ (0, 1.49)

Итак, на следующем этапе стандартизации все точки данных делятся на стандартное отклонение, т. Е. (x — μ) / σ. Разделив каждую точку данных на 1,22 (стандартное отклонение), мы получим новый набор данных:

Теперь, если мы вычислим среднее значение как 1, т. Е. N ~ (0, 1).

Использование этого стандартизированного нормального распределения значительно упрощает выводы и прогнозы. Давайте теперь возьмем другой пример, который мы попытаемся решить выше, а также с Python.

Постановка задачи. У нас есть набор данных, представляющий вес учащихся в школе. Предположим, что набор данных нормально распределен со средним значением 60 кг и стандартным отклонением 15 кг, представленным 𝑁(60,15). Какова вероятность того, что случайно выбранный человек будет иметь вес менее 50 кг?

Решение (вручную):

  • Наш первый шаг — вычислить z-значение: z= (𝑥-𝜇)/𝜎 = (50–60)/15 = -0,667 для 𝑁(0,1) или стандартное нормальное распределение
  • Вероятность P(Z≤z) = 𝛷(𝘻). Мы получим значение вероятности, которое представляет собой не что иное, как площадь под кривой, как показано ниже (розовая часть)

  • Площадь под кривой находится путем интегрирования под капотом: Площадь = (-∞, 50] ⨛𝑓(𝑥).𝒹𝓍, где 𝑓(𝑥) = 𝓮𝑥𝑝[-(𝑥-𝜇)²/2𝜎²] ÷√(2𝜋σ²); 𝜇=60, σ=15
  • Из Z-таблицы P(Z≤-0,67) = 1 — P(Z≥ 0,67) = 1–0,74857 = 0,25143
  • Следовательно, вероятность того, что случайно выбранный гражданин будет иметь вес менее 50 кг, составляет ~25,14%.

Решение (Python):

import scipy.stats as stats
x = 50
mean_weight = 60
sd_weight = 15
prob=stats.norm.cdf((x-mean_weight)/sd_weight)
print(' Probability that a randomly selected citizen will have a weight less than 50 kg is ',prob)

Постановка задачи. У нас есть набор данных, представляющий вес учащихся в школе. Предположим, что набор данных нормально распределен со средним значением 60 кг и стандартным отклонением 15 кг, представленным 𝑁(60,15). Какова вероятность того, что случайно выбранный человек будет иметь вес от 50 до 75 кг?

Решение. Для этой задачи нам нужно рассчитать площадь под заштрихованной частью, как показано ниже:

import scipy.stats as stats
mean_wt = 60
sd_wt = 15
prob=stats.norm.cdf((75-mean_wt)/sd_wt)-stats.norm.cdf((50-mean_wt)/sd_wt)
print(' Probability that a randomly selected citizen will have a weight between 50 & 75 kg is ',prob)

Распределение Пуассона

Распределение вероятности Пуассона — это дискретное распределение вероятностей, которое выражает вероятность того, что заданное количество событий произойдет в фиксированном интервале времени или пространства, если эти события происходят с известной постоянной средней скоростью и независимо от времени, прошедшего с момента последнего события. Если Lambda — это среднее количество событий, происходящих за указанный период времени, то вероятность того, что событие произойдет x раз, может быть рассчитана с использованием распределения Пуассона. Это может быть математически представлено как:

Постановка задачи. Продавец по страхованию жизни продает в среднем 3 полиса страхования жизни в неделю. Используйте закон Пуассона для расчета вероятности

а. На данной неделе он продаст несколько полисов

б. В данную неделю он продаст 2 или более полисов, но не более пяти полисов.

в. Если предположить, что в неделе 5 рабочих дней, какова вероятность того, что в данный день он продаст один полис?

Решение (вручную). Здесь лямбда = 3.

(a) Некоторые правила предполагают наличие 1 или нескольких правил. Поскольку мы не можем оценить максимальное количество полисов, которые можно продать (это может быть любое значение), мы можем решить эту проблему, сначала найдя вероятность продажи нуля полисов. Когда у нас есть это, вероятность продажи 1 или более полисов может быть просто рассчитана как:

P(X > 0) = 1 − P(X=0)

P(X=0)=(3⁰ X e^-3)/0!=4.98 X 10^-2

Следовательно, вероятность продажи более 1 полиса можно рассчитать как:

P(X>0)=1-4.98×10^−2 =0.95021

(b) Вероятность продажи 2 или более полисов, но менее 5 полисов можно представить как:

P(2≤X<5)= P(x2​)+P(x3​)+P(x4​)= 0.61611

(c) Среднее количество полисов, продаваемых в день, составляет 3/5 = 0,6. Итак, наша новая лямбда теперь 0,6. Вероятность продажи 1 полиса в данный день можно рассчитать как:

P(X=1)=(0.6¹ X e^-0.6) /1!=0.33

Решение (Python):

from scipy.stats import poisson
# Lambda
mu=3
# Probability of selling some policies in a week
print("The probability of selling some policies in a week: ", 1-poisson.pmf(k=0,mu=mu))
# The probability of selling 2 or more policies but less than 5 policies in a week
print("The probability of selling 2 or more policies but less than 5 policies in a week: ",sum(poisson.pmf(k=[2,3,4],mu=mu)))
# Assuming that per week, there are `5` working days, what is the probability that on a given day, he will sell one policy?
print("The probability that on a given day, he will sell one policy: ",poisson.pmf(k=1,mu=3/5))