Стратификация, Или Как Научиться Доверять Данным

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

Есть места, где точки сгущены, а есть места, где точек почти нет: из-за этого может даже показаться, что левый график темнее.

На правом рисунке локальные сгущения и разрежения также присутствуют, но менее заметны.



Стратификация, или как научиться доверять данным

Между тем именно левый график был получен с помощью «честного» генератора случайных чисел.

Правый график также содержит совершенно случайные точки; но эти точки генерируются так, что все маленькие квадраты содержат одинаковое количество точек.

Стратификация - метод выделения подмножества объектов из генеральной совокупности, разделенной на подмножества (страты).

При расслоении объекты выбираются таким образом, чтобы в итоговой выборке сохранялись соотношения размеров стратов (или нарушаются контролируемым образом эти соотношения см.

в пункте 3).

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

Стратификацию целесообразно использовать в любой выборке.

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

В машинном обучении стратификация полезна как на этапе сбора данных, так и во время процесса.

перекрестная проверка .



1. Простой пример: вычисление площади фигуры



Стратификация, или как научиться доверять данным

Во-первых, чтобы продемонстрировать силу стратификации, я использую наборы точек, созданные во введении, для расчета площади пятна — четверти круга с радиусом 0,4. Случайные точки будут брошены внутрь единичного квадрата и увеличат счетчик, когда они попадут внутрь круга.

Отношение полученного числа к общему количеству бросков и будет оценкой площади фигуры по Метод Монте-Карло .



Стратификация, или как научиться доверять данным

Самый простой (нестратифицированный) способ создания случайных точек для этой задачи: осуществлять Так:

  
   

import random random.seed(100) for i in range(500): x, y = random.random(), random.random() print x, y

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

Этот метод хорошо работает только в том случае, если общее количество точек кратно количеству страт, но, к счастью, в данном случае это так.



import random random.seed(100) cellsCount = 10 cellId = 0 for i in range(500): cellVerticalIdx = (cellId / cellsCount) % cellsCount cellHorizontalIdx = cellId % cellsCount cellId += 1 left = float(cellVerticalIdx + 0) / cellsCount right = float(cellVerticalIdx + 1) / cellsCount top = float(cellHorizontalIdx + 1) / cellsCount bottom = float(cellHorizontalIdx + 0) / cellsCount x, y = random.random(), random.random() x = left + x * (right - left) y = bottom + y * (top - bottom) print x, y

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

Код простого алгоритма: Здесь , а для стратифицированных - Здесь .



Стратификация, или как научиться доверять данным

Видно, что оценка, полученная стратифицированным методом, превосходит точность и имеет меньшую дисперсию.

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

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



2. Перекрестная проверка

Следующие примеры взяты из области машинного обучения.

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

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

Если этого не сделать, оценки качества будут занижены.

Ситуация вторая: нестационарность восстанавливаемых зависимостей, т.е.

их изменчивость во времени.

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

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

Если этого не сделать, оценки качества будут завышены, обычно чрезвычайно.

Я продемонстрирую стратификацию на модельной задаче первого типа.

Рассмотрим эту зависимость:

Стратификация, или как научиться доверять данным

Пусть эта зависимость аппроксимируется одномерной линейной моделью.

Лишь небольшая часть примеров отклоняется от простой линейной аппроксимации, и именно эти примеры внесут основной вклад в величину ошибки модели.

По сути, чем больше таких «выбросов» окажется в тестовой выборке, тем меньше их будет в обучающей выборке, тем выше ошибка в тестовой выборке.

Можно даже сказать, что каждый раз измеряется не метод обучения, а степень равномерности распределения выбросов между обучающей и тестовой выборками! Генерация выборки, обучение одномерной линейной модели, процесс множественной перекрестной проверки, в т.ч.

стратифицированный, а также построение вариационного ряда я реализовал так .

Я не буду сейчас вдаваться в подробности реализации (тем более, что она не очень точна), а сразу приведу графики вариационного ряда полученных оценок:

Стратификация, или как научиться доверять данным

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

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



3. Немного математики

Методы стратификации часто используются в онлайн-экспериментах; для веб-сервисов это вполне естественно: поведение пользователей зависит от характеристик устройств, операционных систем, версий браузеров, особенностей самих пользователей и так далее.

Поэтому без стратификации в A/B-тестах легко столкнуться с тем, что, скажем, доли мобильных пользователей в сплитах различаются на 0,5% и интегральные метрики измеряют эффект этого дисбаланса, а не изменения, которое происходит. сделал.

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

.

Классической работой в этой области является статья Стратифицированная онлайн-выборка: оценка классификаторов в веб-масштабе от Microsoft Research, которую я настоятельно рекомендую прочитать.

В общем, мы будем предполагать, что нам дана популяция размером

Стратификация, или как научиться доверять данным

, из которых выбираются без повторов

Стратификация, или как научиться доверять данным

представители для оценки вероятности

Стратификация, или как научиться доверять данным

принадлежность элемента коллекции к определенному классу

Стратификация, или как научиться доверять данным

.

Население делится на

Стратификация, или как научиться доверять данным

непересекающиеся подмножества – страты.

Внутри

Стратификация, или как научиться доверять данным

слой размером го размера

Стратификация, или как научиться доверять данным

можно посчитать смету

Стратификация, или как научиться доверять данным

вероятность принадлежности элемента страты к классу

Стратификация, или как научиться доверять данным

.

Тогда стратифицированная оценка вероятности будет рассчитываться как

Стратификация, или как научиться доверять данным

Дисперсия этой величины, обусловленная независимостью выборов внутри каждой из страт, рассчитывается просто:

Стратификация, или как научиться доверять данным

Интересно, что для минимизации дисперсии требуется выборка из слоев, непропорциональных их размеру! Если выбрано

Стратификация, или как научиться доверять данным

объекты из общей популяции, кол-во

Стратификация, или как научиться доверять данным

объекты из

Стратификация, или как научиться доверять данным

страты для минимизации дисперсии оказывается пропорциональным произведению размера страты и стандартного отклонения значения внутри этой страты:

Стратификация, или как научиться доверять данным

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

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

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



Выводы и прагматика



Стратификация, или как научиться доверять данным

При работе с данными, как и в социологических исследованиях, потребность в хорошей стратификации может быть острой.

При анализе логов веб-панелей вроде LikeWeb или Alexa можно получить неверные результаты из-за нерепрезентативности множества пользователей, установивших расширение.

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

Ошибки такого типа могут испортить аналитику и в конечном итоге привести к неверным решениям в разработке продукта и бизнеса.

Всякий раз, когда вы обрабатываете новый набор данных, полезно спросить себя: репрезентативен ли он? Не нуждается ли она в дальнейшей стратификации и переоценке? Что известно о его происхождении и возможных искажениях? Если ответов нет или они неудовлетворительны, вполне возможно, что данные вас обманут. Теги: #Машинное обучение #математика #Алгоритмы #статистика #стратификация

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.