Почему статистика в Data Science — это не отдельный предмет, а язык мышления
Многие слышат слово «статистика» и сразу представляют длинный курс с формулами, распределениями и непонятными доказательствами. В Data Science статистика работает по-другому. Она не живет отдельно от данных. Она помогает ответить на очень практические вопросы: насколько разбросаны значения, насколько редкое событие действительно редкое, насколько можно доверять среднему, случайно ли различие между группами и где проходит граница между шумом и сигналом.
Если Python и pandas помогают дотронуться до данных руками, то статистика помогает не обманываться в их интерпретации. Именно поэтому она нужна уже на старте, а не только на этапе сложных экспериментов.
С каких понятий полезнее всего начинать
Я бы начинал не с экзотических распределений, а с четырех вещей: среднее, дисперсия, стандартное отклонение и распределение выборки. Эти понятия сразу появляются в практических задачах. Без них трудно понимать стандартизацию признаков, работать с выбросами, сравнивать сегменты и интерпретировать вариативность метрик.
$$ z = \frac{x - \mu}{\sigma} $$Стандартизация показывает, насколько далеко конкретное значение находится от среднего в единицах стандартного отклонения. Это важная идея и для анализа признаков, и для preprocessing перед моделями.
z— стандартизированное значениеx— конкретное наблюдение\mu— среднее значение признака\sigma— стандартное отклонение признака
С геометрической точки зрения такая формула переводит разные шкалы в единый язык расстояний от среднего. Именно поэтому она полезна не только для статистики как таковой, но и для ML: многие алгоритмы чувствительны к масштабу признаков.
Как статистика появляется в машинном обучении
Во-первых, в preprocessing. Масштабирование, стандартизация, нормализация — все это опирается на статистику признаков. Во-вторых, в метриках и валидации. Любая оценка качества требует понимания вариативности. В-третьих, в A/B тестах и причинном мышлении. В-четвертых, в вероятностной интерпретации моделей. То есть статистика нужна не потому, что «так положено», а потому что почти каждый шаг в DS связан с неопределенностью и выборкой.
import pandas as pd # создаем небольшую таблицу наблюдений
from sklearn.preprocessing import StandardScaler # используем стандартизацию из sklearn
frame = pd.DataFrame({ # задаем один числовой признак для примера
'feature': [56, 70, 84, 91] # наблюдаемые значения признака
})
scaler = StandardScaler() # объект рассчитает среднее и стандартное отклонение
frame['z_score'] = scaler.fit_transform(frame[['feature']]) # переводим исходный признак в z-оценки
print(frame.round(3)) # выводим таблицу, чтобы увидеть результат стандартизацииКогда статистика изучается в таком формате, она перестает быть абстрактным барьером. Наоборот, становится видно, что это язык, который делает анализ данных аккуратнее, а модели — осмысленнее.