Выборка против генеральной совокупности

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

Генеральная совокупность — все объекты, которые нас интересуют. Выборка — подмножество, которое мы реально наблюдаем и по которому делаем выводы о совокупности.

Почему мы изучаем часть

Опросить всех жителей страны невозможно — дорого и долго. Поэтому берут выборку и по ней судят о всей совокупности. То же в ML: настоящая «совокупность» — это все возможные данные в мире (все письма, все фото кошек), а у нас есть лишь конечный датасет — выборка из неё. Модель учится на выборке, но мы хотим, чтобы она работала на всей совокупности. Это и есть обобщение.

Оценка по выборке приближает истину

Среднее по выборке оценивает среднее совокупности, но не равно ему точно — есть случайная погрешность. Смоделируем «совокупность» из 100 000 человек и посмотрим, как выборочное среднее приближает истинное.

import random, statistics
random.seed(123)

# «Генеральная совокупность»: рост 100000 человек, истинное среднее 170
population = [random.gauss(170, 8) for _ in range(100000)]
true_mean = statistics.mean(population)
print("Истинное среднее совокупности:", round(true_mean, 2))

# Берём случайные выборки разного размера
for size in [10, 100, 1000]:
    sample = random.sample(population, size)
    print(f"Выборка из {size:4}: среднее = {round(statistics.mean(sample), 2)}")

Вывод:

Истинное среднее совокупности: 170.02
Выборка из   10: среднее = 166.11
Выборка из  100: среднее = 171.64
Выборка из 1000: среднее = 169.95

Маленькая выборка (10) промахнулась сильнее, большая (1000) почти попала в истинное среднее. Чем больше выборка, тем точнее оценка — это снова отголосок закона больших чисел.

Смещение отбора — главная ловушка

Размер выборки важен, но репрезентативность важнее. Если выборка собрана криво, она врёт независимо от размера. Классика — смещение отбора (selection bias): опрос про доходы только среди читателей премиального журнала завысит средний доход. В ML это смертельно: если обучить модель на данных одной группы, на других она будет ошибаться. Смоделируем смещённую выборку.

import random, statistics
random.seed(5)

population = [random.gauss(170, 8) for _ in range(100000)]

# Честная случайная выборка
fair = random.sample(population, 1000)

# Смещённая выборка: берём только людей выше 178 (например, из баскетбольной секции)
tall_pool = [h for h in population if h > 178]
biased = random.sample(tall_pool, 1000)

print("Среднее честной выборки   =", round(statistics.mean(fair), 2))
print("Среднее смещённой выборки =", round(statistics.mean(biased), 2))
print("(истина около 170)")

Вывод:

Среднее честной выборки   = 169.92
Среднее смещённой выборки = 182.38
(истина около 170)

Смещённая выборка дала 182 вместо 170 — и это не лечится увеличением размера, ведь сама процедура отбора кривая. Урок для ML: качество и представительность данных важнее их количества.

Итог

  • Генеральная совокупность — всё, что нас интересует; выборка — то, что мы наблюдаем.
  • По выборке оценивают параметры совокупности; больше выборка — точнее оценка.
  • Смещение отбора делает выборку нерепрезентативной — её не спасёт размер.
  • В ML датасет — это выборка; цель модели — обобщиться на всю совокупность.
Проверьте себя
1. Чем выборка отличается от генеральной совокупности?
AВыборка — все объекты, совокупность — часть
BВыборка — наблюдаемое подмножество, совокупность — все интересующие объекты
CЭто одно и то же
DВыборка всегда больше совокупности
2. Почему большая, но смещённая выборка всё равно даёт неверную оценку?
AБольшой размер всегда исправляет смещение
BКривая процедура отбора систематически искажает результат независимо от размера
CСмещение исчезает при размере больше 1000
DСмещение влияет только на дисперсию, не на среднее
3. Чему соответствует датасет в терминах статистики применительно к ML?
AГенеральной совокупности
BВыборке из совокупности всех возможных данных
CОдному объекту
DФункции потерь
Поддержать проект