Сравнение красного и зеленого яблока в руках на деревянном фоне.

Прекратите винить данные: как точно оценить производительность модели при сдвиге ковариации

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

Делиться

24ed0804a3e7baee266f224731c953b2

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

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

Так в чём же проблема?

Обычно мы указываем на сдвиг ковариации . Распределение признаков в новых данных отличается от распределения в обучающих данных. Мы используем это как «оправдание»: «Данные изменились, поэтому, естественно, производительность ниже. Виноваты данные, а не модель».

Но что, если мы перестанем использовать сдвиг ковариации как оправдание и начнем использовать его как инструмент?

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

Проблема: сравнивать яблоки с апельсинами.

Рассмотрим простой пример из мира медицины.

Представьте, что мы обучили модель на пациентах в возрасте от 40 до 89 лет. Однако в наших новых целевых тестовых данных возрастной диапазон более строгий: от 50 до 80 лет .

Если мы просто запустим модель на тестовых данных и сравним её с исходными результатами валидации, мы введём себя в заблуждение. Для сравнения «яблок с яблоками» хороший специалист по анализу данных вернётся к набору данных валидации, отфильтрует пациентов в возрасте 50-80 лет и пересчитает базовые показатели.

Но давайте усложним задачу.

Предположим, наш тестовый набор данных содержит миллионы записей о пациентах в возрасте от 50 до 80 лет и одного единственного пациента в возрасте 40 лет.

  • Сравниваем ли мы наши результаты с диапазоном валидации 40-80?
  • Можно ли нас сравнить с диапазоном 50-80?

Если мы игнорируем конкретное распределение по возрасту (что делает большинство стандартных анализов), то один-единственный 40-летний пациент теоретически меняет определение когорты. На практике мы можем просто удалить этот выброс. Но что, если бы было 100 или 1000 пациентов моложе 50 лет? Можно ли добиться лучших результатов? Можно ли автоматизировать этот процесс для одновременной обработки различий в нескольких переменных без ручной фильтрации данных? Более того, фильтрация данных — не лучшее решение. Она учитывает только правильный диапазон, но игнорирует сдвиг распределения внутри этого диапазона.

Решение: взвешивание по обратной вероятности

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

  • Вес = 1 : Стандартный анализ.
  • Вес = 0 : Исключить запись (фильтрация).
  • Вес — неотрицательное число с плавающей запятой : уменьшает или увеличивает влияние записи на качество изображения.

Интуиция

В нашем примере (Тест: Возраст 50-80 + один 40-летний) решение состоит в том, чтобы имитировать тестовую когорту в нашем валидационном наборе данных. Мы хотим, чтобы наш валидационный набор данных « притворялся », что у него точно такое же распределение по возрасту, как и у тестового набора.

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

Математика

Давайте формализуем это. Нам нужно определить две вероятности:

  • Pt(x): Вероятность обнаружения значения признака x (например, Возраст) в целевых тестовых данных.
  • Pv(x): Вероятность обнаружения значения признака x в данных валидации .

Вес w для любой записи с признаком x представляет собой отношение этих вероятностей:

w ( x ) := Pt ( x ) / Pv ( x )

Это интуитивно понятно. Если 60-летние встречаются редко в обучающей выборке (Pv низкое), но часто в рабочей (Pt высокое), то соотношение велико. Мы увеличиваем вес этих записей при оценке, чтобы они соответствовали реальности. С другой стороны, в нашем примере, где тестовый набор строго состоит из лиц в возрасте 50-80 лет, любые валидационные пациенты, выходящие за пределы этого диапазона, получат вес 0 (поскольку Pt(Age)=0). Это фактически то же самое, что и исключение их, именно так, как и нужно.

Это статистический метод, часто называемый выборочным методом с учетом значимости или методом взвешивания по обратной вероятности (IPW) .

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

Расширение: Обработка многомерных сдвигов

Сделать это для одной переменной (возраст) легко. Можно просто использовать гистограммы/интервалы. Но что, если данные одновременно изменяются по десяткам различных переменных? Мы не можем построить десятокмерную гистограмму. Решение — хитрый трюк с использованием бинарного классификатора.

Мы обучаем новую модель (назовем ее «моделью склонности», Mp), чтобы различать два набора данных.

  • Входные данные : характеристики записи (возраст, ИМТ, артериальное давление и т. д.) или желаемые переменные для контроля.
  • Целевое значение: 0, если запись из набора данных для проверки, 1, если запись из набора данных для тестирования.

Если эта модель легко различает данные (AUC > 0,5), это означает наличие сдвига ковариат. AUC Mp также служит диагностическим инструментом. Он показывает, насколько ваши тестовые данные отличаются от валидационного набора и насколько важно было это учитывать. Что особенно важно, вероятностный результат этой модели дает нам именно то, что необходимо для расчета весов.

Используя теорему Байеса, вес для образца x становится вероятностью того, что образец принадлежит тестовому набору:

w(x) := Mp(x) / (1 – Mp(x))

  • Если Mp(x) ~ 0,5, то точки данных неразличимы, и вес равен 1.
  • Если Mp(x) -> 1, модель уверена, что это тестовые данные, и вес увеличивается.
a7296b350b4bbb32cc406583f43be5c8

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

Это работает?

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

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

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

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

2149e471203944740d060dea8cd4fa3d

Фрагмент кода: import pandas as pd import numpy as np import plotly.graph_objects as go df = pd.DataFrame({«Age»: np.random.randint(40,89, 10000) }) df2 = pd.DataFrame({«Age»: np.random.normal(65, 10, 10000) }) df2[«Age»] = df2[«Age»].round().astype(int) df2 = df2[df2[«Age»].between(40,89)].reset_index(drop=True) df3 = df.copy() def get_fig(df:pd.DataFrame, title:str): if 'weight' not in df.columns: df[«weight»] = 1 age_count = df.groupby(«Age»»[«weight»].sum().reset_index().sort_values(«Age») tot = df[«weight»].sum() age_count[«Percentage»] = 100 * age_count[«weight»] / tot f = go.Bar(x=age_count[«Age»], y=age_count[«Percentage»], name=title) return f, age_count f1, age_count1 = get_fig(df, «ValidationSet») f2, age_count2 = get_fig(df2, «TargetTestSet») age_stats = age_count1[[«Age», «Percentage»]].merge(age_count2[[«Age», «Percentage»]].rename(columns={«Percentage»: «Percentage2»}), on=[«Age»]) age_stats[«weight»] = age_stats[«Percentage2»] / age_stats[«Percentage»] df3 = df3.merge(age_stats[[«Age», «weight»]], on=[«Age»]) f3, _ = get_fig(df3, «ValidationSet-Weighted») fig = go.Figure(layout={«title»:»Age Distribution»}) fig.add_trace(f1) fig.add_trace(f2) fig.add_trace(f3) fig.update_xaxes(title_text='Age') # Установить заголовок оси x fig.update_yaxes(title_text='Percentage') # Установить заголовок оси y fig.show()

Ограничения

Хотя это мощный метод, он не всегда работает. Существует три основных статистических ограничения:

  1. Скрытые факторы, влияющие на результат : если изменение вызвано переменной, которую вы не измеряли (например, генетическим маркером, которого нет в ваших табличных данных), вы не можете учесть это при взвешивании. Однако, как разработчики моделей, мы обычно стараемся использовать в нашей модели наиболее прогностические признаки, когда это возможно.
  2. Игнорируемость (отсутствие перекрытия): Деление на ноль невозможно. Если Pv(x) равно нулю (например, в обучающей выборке нет пациентов старше 90 лет, а в тестовой — есть), то вес стремится к бесконечности.
    • Решение : Выявите эти непересекающиеся группы. Если ваш набор данных для проверки буквально не содержит никакой информации о конкретной подгруппе населения, вы должны явно исключить эту подгруппу из сравнения и пометить ее как «неизвестную территорию».
  3. Качество модели склонности : Поскольку мы полагаемся на модель (Mp) для оценки весов, любые неточности или плохая калибровка этой модели приведут к появлению шума. Для низкоразмерных сдвигов (например, одной переменной «Возраст») это незначительно, но для высокоразмерных сложных сдвигов обеспечение хорошей калибровки Mp имеет решающее значение.

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

Замечание о статистической мощности

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

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

Расчеты мощности : Не используйте исходное количество строк (N). Для понимания истинной мощности вашего взвешенного анализа обратитесь к формуле эффективного размера выборки (коэффициент Киша).

А что насчет изображений и текстов?

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

Краткое содержание

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

Это позволяет ответить на один из самых сложных вопросов при развертывании: «Снижение производительности вызвано изменением данных или же модель действительно неисправна?»

Используя этот метод, вы сможете объяснить разницу между показателями обучения и производительности.

Источник: towardsdatascience.com

✅ Найденные теги: Данные, Ковариация, Модель, новости, Прекратите, Производительность, Сдвиг

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

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

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Фото сгенерированных лиц: исследование показывает, что люди не могут отличить настоящие лица от сгенерированных
Нейросети построили капитализм за трое суток: 100 агентов Claude заперли…
Скетч: цифровой осьминог и виртуальный мир внутри компьютера с человечком.
Сцена с жестами пальцами, где один жест символизирует "VPN", а другой "KHP".
‼️Paramount купила Warner Bros. Discovery — сумма сделки составила безумные…
Скриншот репозитория GitHub "Claude Scientific Skills" AI для научных исследований.
Структура эффективного запроса Claude с элементами задачи, контекста и референса.
Эскиз и готовая веб-страница платформы для AI-дизайна в современном темном режиме.
ideipro logotyp
Image Not Found
Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.

Система оповещения обсерватории Рубина отправила 800 000 сигналов в первую ночь наблюдений.

Астрономы будут получать оповещения о небесных явлениях в течение нескольких минут после их обнаружения. Теренс О'Брайен, редактор раздела «Выходные». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной…

Мар 2, 2026
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.

Расследование в отношении 61-фунтовой машины, которая «пожирает» пластик и выплевывает кирпичи.

Обзор компактного пресса для мягкого пластика Clear Drop — и что будет дальше. Шон Холлистер, старший редактор Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего…

Мар 2, 2026
Черный углеродное волокно с текстурой плетения, отражающий свет.

Материал будущего: как работает «бессмертный» композит

Учёные из Университета штата Северная Каролина представили композит нового поколения, способный самостоятельно восстанавливаться после серьёзных повреждений.  Речь идёт о модифицированном армированном волокном полимере (FRP), который не просто сохраняет прочность при малом весе, но и способен «залечивать» внутренние…

Мар 2, 2026
Круглый экран с изображением замка и горы, рядом электронная плата.

Круглый дисплей Waveshare для креативных проектов

Круглый 7-дюймовый сенсорный дисплей от Waveshare создан для разработчиков и дизайнеров, которым нужен нестандартный экран.  Это IPS-панель с разрешением 1 080×1 080 пикселей, поддержкой 10-точечного ёмкостного сенсора, оптической склейкой и защитным закалённым стеклом, выполненная в круглом форм-факторе.…

Мар 2, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых