BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс по Data Governance, Data Quality, MDM, Data Lineage » Проверка распределения данных с помощью GX

Проверка распределения данных с помощью GX

Анализ распределения данных - важнейший аспект управления качеством данных, направленный на понимание распределения данных и их характеристик в конкретном наборе данных. Распределение данных - важнейший показатель качества и надежности Ваших данных. К его ключевым аспектам относятся:

  • Статистическая достоверность: Многие статистические анализы и модели машинного обучения предполагают определенное распределение данных. Любые отклонения от ожидаемых распределений могут сделать эти модели данных недействительными;
  • Обнаружение аномалий: Даже самые минимальные изменения в распределении данных могут свидетельствовать об аномалиях или фактах мошенничества, что может исказить результаты анализа или ухудшить работу модели данных;
  • Согласованность данных: Последовательное распределение данных во времени обеспечивает значимость и точность сравнений и тенденций.
  • Контроль качества: Мониторинг распределения данных помогает поддерживать целостность данных, выявляя их искажение, системные ошибки или любые изменения в процессах сбора данных.

 

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

 

Необходимые условия

Предполагается, что Вы уже знакомы с компонентами и рабочими процессами GX.

 

Предварительный обзор данных

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

transa

ction_id

custo

mer_id

purchas

e_amount

purchas

e_date

product

_category

produc

t_rating

retur

n_date

1001

501

250.00

2024-01-15

Electronics

4.5

2024-01-30

1002

502

40.00

2024-01-15

Books

4.2

null

1003

503

1200.00

2024-01-16

Electronics

4.8

null

1004

504

80.00

2024-01-16

Clothing

3.9

2024-02-01

1005

505

3500.00

2024-01-17

Electronics

4.6

2024-02-10

 

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

 

Ожидания распределения данных

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

 

Доступность ожиданий распределения

ExpectColumnKLDivergenceToBeLessThan и ExpectColumnQuantileValuesToBeBetween могут быть добавлены в развертывание GX Cloud. В настоящее время их необходимо добавлять с помощью GX API, а не через пользовательский интерфейс GX Cloud.

 

Expect column KL divergence to be less than

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

Пример: это ожидание проверяет, не находится ли расхождение KL ниже заданного порога, что позволяет оценить сходство между фактическим и ожидаемым распределением данных.

gxe.ExpectColumnKLDivergenceToBeLessThan(
column="purchase_amount",
partition_object={
"bins": [0, 1000, 2000, 3000, 4000],
"weights": [0.5, 0.15, 0.2, 0.15],
},
threshold=0.1,
)

 

 

Expect column value z-scores to be less than

Проверяет, чтобы Z-баллы (количество стандартных отклонений от среднего) всех значений были ниже порогового значения.

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

gxe.ExpectColumnValueZScoresToBeLessThan(
column="purchase_amount", threshold=3, double_sided=True
)

 

Expect column values to be between

Делает так, чтобы все значения в столбце находились между заданным минимальным и максимальным значениями.

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

gxe.ExpectColumnValuesToBeBetween(
column="product_rating",
min_value=1,
max_value=5,
)

 

Сводная статистика на уровне столбцов ожидания

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

Сводная статистика столбца

Название ожидания

Вид в галерее ожиданий

Minimum

Expect column min to be between

ExpectColumnMinToBeBetween

Maximum

Expect column max to be between

ExpectColumnMaxToBeBetween

Mean

Expect column mean to be between

ExpectColumnMeanToBeBetween

Median

Expect column median to be between

ExpectColumnMedianToBeBetween

Sum

Expect column sum to be between

ExpectColumnSumToBeBetween

Standard deviation

Expect column stdev to be between

ExpectColumnStdevToBeBetween

Quantile values

Expect column quantile values to be between

ExpectColumnQuantileValuesToBeBetween

 

ExpectColumnMinToBeBetween, ExpectColumnMaxToBeBetween, ExpectColumnMeanToBeBetween, ExpectColumnMedianToBeBetween, ExpectColumnSumToBeBetween, и ExpectColumnStdevToBeBetween придерживаются той же схемы использования и аргументов. Чтобы определить ожидаемый диапазон для столбца и суммарную статистику, введите имя столбца вместе с min_value и max_value для определения нижней и верхней границ ожидаемого диапазона значений соответственно.

Например, если мы используем ExpectColumnMeanToBeBetween на Python:

gxe.ExpectColumnMeanToBeBetween(
    column="purchase_amount", min_value=50, max_value=1000
)

 

Чтобы использовать ExpectColumnQuantileValuesToBeBetween Expectation, укажите quantiles и value_ranges в качестве аргументов.

gxe.ExpectColumnQuantileValuesToBeBetween(
column="purchase_amount",
quantile_ranges={
"quantiles": [0.5, 0.9],
"value_ranges": [[50, 200], [500, 2000]],
},
)

 

Подсказки GX по распределению ожиданий:

  • Для того, чтобы разрешить допустимые отклонения в Ваших данных, используйте параметр mostly;
  • ExpectColumnValuesToBeBetween часто путают с ExpectColumnMinToBeBetween и ExpectColumnMaxToBeBetween. ExpectColumnValuesToBeBetween используется для того, чтобы определить минимальное или максимальное значение, которое используется для проверки каждого значения в столбце. ExpectColumnMinToBeBetween и ExpectColumnMaxToBeBetween используются для того, чтобы определить диапазон, который используется для проверки общего минимального или максимального значения столбца.

 

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

 

Пример: проверка распределения значений столбца

Цель: Используя коллекцию распределений Expectations и GX Cloud или GX Core, проверьте распределение столбца purchase_amount.

  1. GX Cloud

Используйте пользовательский интерфейс GX Cloud для того, чтобы выполнить следующие шаги:

  1. Создайте Postgres Data Asset для таблицы distribution_purchases, используя строку подключения:
postgresql+psycopg2://try_gx:try_gx@postgres.workshops.greatexpectations.io/gx_learn_data_quality

  1. Добавьте ожидание Expect column mean to be between в только что созданный актив данных:
  • Столбец: purchase_amount
  • Min Value: 1250
  • Max Value: 1500

 

  1. Добавьте ожидание Expect column median to be between 
  • Cтолбец: purchase_amount
  • Min Value: 1000
  • Max Value: 1250

 

  1. Добавьте ожидание Expect column value z-scores to be less than
  • Column: purchase_amount
  • Threshold: 2
  • Mostly: 90%

 

  1. Нажмите кнопку Validate для того, чтобы проверить данные о закупках на соответствие ожиданиям распределения.
  2. Нажмите кнопку Validate.
  3. Просмотрите результаты проверки.

 

Результат: All Expectations pass.

 

  1. GX Core

 

Запустите процесс GX Core.

import great_expectations as gx

import great_expectations.expectations as gxe

# Create Data Context.
context = gx.get_context()

# Connect to data.
# Create Data Source, Data Asset, Batch Definition, and Batch.
CONNECTION_STRING = "postgresql+psycopg2://try_gx:try_gx@postgres.workshops.greatexpectations.io/gx_learn_data_quality"

data_source = context.data_sources.add_postgres(
    "postgres database", connection_string=CONNECTION_STRING
)
data_asset = data_source.add_table_asset(
    name="purchases", table_name="distribution_purchases"
)

batch_definition = data_asset.add_batch_definition_whole_table("batch definition")
batch = batch_definition.get_batch()

# Create an Expectation Suite containing distribution Expectations.
expectation_suite = context.suites.add(
    gx.core.expectation_suite.ExpectationSuite(name="purchase amount expectation suite")
)

purchase_amount_distribution_expectation = gxe.ExpectColumnKLDivergenceToBeLessThan(
    column="purchase_amount",
    partition_object={
        "bins": [0, 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000],
        "weights": [0.3, 0.2, 0.05, 0.1, 0.2, 0.0, 0.05, 0.1],
    },
    threshold=0.1,
)

purchase_amount_mean_expectation = gxe.ExpectColumnMeanToBeBetween(
    column="purchase_amount", min_value=1250, max_value=1500
)

purchase_amount_median_expectation = gxe.ExpectColumnMedianToBeBetween(
    column="purchase_amount", min_value=1000, max_value=1250
)

expectation_suite.add_expectation(purchase_amount_distribution_expectation)
expectation_suite.add_expectation(purchase_amount_mean_expectation)
expectation_suite.add_expectation(purchase_amount_median_expectation)

# Validate Batch using Expectation.
validation_result = batch.validate(expectation_suite)

# Print the validation results.
print(f"Expectation Suite passed: {validation_result['success']}\n")

for result in validation_result["results"]:
    expectation_type = result["expectation_config"]["type"]
    expectation_passed = result["success"]
    print(f"{expectation_type}: {expectation_passed}")

 

Результат:

Expectation Suite passed: True

expect_column_kl_divergence_to_be_less_than: True
expect_column_mean_to_be_between: True
expect_column_median_to_be_between: True

 

Решение GX: GX обеспечивает ожидаемые результаты в GX Cloud или GX Core, которые позволяют проверять различные аспекты распределения, включая форму, центр и распространение.

 

Сценарии

Обнаружение аномалий распределения

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

Решение GX:

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

 

Мониторинг дрейфа данных в исходных данных модели

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

Решение GX: Используйте ExpectColumnKLDivergenceToBeLessThan для сравнения текущего распределения данных с эталонным распределением и обнаружения дрейфа данных.

 

Обеспечение согласованности данных временных рядов

Контекст: Для данных временных рядов, таких как ежедневные продажи, последовательность распределения во времени имеет большое значение. Оно необходимо для более точного прогнозирования и анализа данных.

Решение GX: Используйте ExpectColumnQuantileValuesToBeBetween для того, чтобы проверить, что квантили данных остаются в пределах ожидаемых диапазонов.

 

Наиболее распространенные ошибки, допускаемые при анализе распределения данных:

  • Предположение о статичности распределений: Распределения данных часто меняются со временем из-за сезонности, тенденций или изменений в сборе данных. Очень важно обновлять эталонные распределения и ожидания на регулярной основе для того, чтобы отразить текущее состояние данных.
  • Игнорирование проблем с качеством данных: Ошибки при вводе данных или пропущенные значения могут значительно исказить распределение данных. Всесторонняя проверка качества данных, включая обработку отсутствующих данных, является важным авспектом анализа данных и проверки распределения.
  • Игнорирование мультимодальных распределений: Некоторые наборы данных могут иметь несколько пиков, что требует применения соответствующих методов и ожиданий, способных работать с мультимодальными распределениями. Игнорирование мультимодальности может привести к неточной интерпретации данных.
  • Пренебрежение изменениями во времени: Распределения могут меняться со временем в силу сезонного характера или долгосрочных тенденций. Внедрение анализа, основанного на времени, наряду с проверкой в момент времени, имеет решающее значение для понимания и адаптации к изменяющимся распределениям данных.
  • Недостаточный размер выборки: Небольшие размеры выборки могут неточно отражать истинное распределение данных. Важно убедиться в том, чтобы размер выборки был достаточно велик  для того, чтобы отразить основное распределение и избежать неверных выводов на основе ограниченных данных.

 

Дальнейшие действия

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

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

 

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

 

 

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
Использование GX совместно с dbt
Следующая статья →
Проверка свежести данных с помощью GX

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • ООО "Уральская транспортная компания" — это транспортно-логистическая компания, специализирующаяся на железнодорожных перевозках грузов, создана в 2009 году.

  • «Восток-Запад» – крупнейший поставщик продуктов в рестораны, кафе, гостиницы, кейтеринговые компании, столовые, комбинаты питания и кондитерские производства. 300+ городов регулярной доставки по всей территории России и странам СНГ; 3500+ товаров профессиональных брендов.

  • АО «Евросиб СПб–транспортные системы» – оператор контейнерных сервисов с широкой сетью маршрутов на внутрироссийских и международных направлениях. Имеет успешный опыт управления парком фитинговых платформ, а также организации ускоренных контейнерных поездов, в основе которых точное расписание, оптимальные сроки доставки груза и экономическая целесообразность.

  • KERAMA MARAZZI — международный бренд, входящий в число лидеров глобального рынка керамики. Бизнес компании охватывает весь процесс создания керамических изделий, от глиняных карьеров до фирменной розницы во всех крупных городах РФ и за рубежом.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.