Одинаковые признаки, разные ответы: аудит конфликтов разметки
Модель получает одинаковые входы, но обучающая таблица требует разных ответов. Более сложный алгоритм не создаст информацию, которой нет в признаках. Сначала надо понять, что стоит за конфликтующими строками.
Конфликт входов не всегда ошибка разметки
Разные ответы при одинаковом наборе признаков возможны законно: измерения округлены, не записан важный контекст или исход действительно случаен. Для повторной разметки одного документа конфликт может означать разные инструкции или ошибку. Поэтому одинаковые признаки — повод для аудита, а не разрешение удалить меньшинство меток.
Выбирайте поля, которые реально доступны модели. Не включайте target и технический id: уникальный id скроет все совпадения. Если цель определяется контекстом, который пока отсутствует в X, такой аудит помогает сформулировать следующий сбор данных.
Вывести все строки спорной группы
У двух наблюдений одинаковые температура и давление, но разные метки неисправности. Считаем количество разных известных меток по комбинации входов и возвращаем исходные строки целиком. Это сохраняет id для предметного разбора.
Пропущенный target отдельно считается отсутствием разметки и не превращается в новый класс. Пропуски в признаках сохраняем как ключ группы через dropna=False, чтобы они не исчезли из анализа.
import pandas as pd
x = pd.DataFrame({"sample_id": [1, 2, 3, 4], "temperature": [20, 20, 30, 30],
"pressure": [5, 5, 7, 7], "target": [0, 1, 1, 1]})
features = ["temperature", "pressure"]
known = x.loc[x["target"].notna()].copy()
counts = known.groupby(features, dropna=False)["target"].transform("nunique")
review = known.loc[counts.gt(1)]
print(review.to_string(index=False))
assert review["sample_id"].tolist() == [1, 2]
assert set(review["target"]) == {0, 1}
assert len(review[features].drop_duplicates()) == 1В очередь попали id 1 и 2. Строки 3 и 4 не являются конфликтом цели, хотя их входы тоже совпадают. Повторное наблюдение и противоречивый ответ — разные свойства таблицы.
Определить следующий источник информации
Для спорной группы проверьте исходное событие, точность измерений, время и версию инструкции разметчика. Если потеряна точность признака, восстановите её из источника. Если метка зависит от состояния оборудования до измерения, добавьте доступный исторический контекст. Если объект размечен ошибочно, сохраните решение и основание исправления.
Не выбирайте большинство автоматически. Оно может быть неверным из-за систематического правила одного разметчика. Кроме того, удаление неудобных меток только из теста искусственно улучшит оценку. Исправления должны применяться по одной политике и сохраняться с версией данных.
Для непрерывных признаков точных совпадений может быть мало. Округление для поиска соседей создаёт новые группы и требует предметной ширины допуска. Не называйте такие приблизительные совпадения доказанными дублями.
После разбора посчитайте объём конфликтов и причины. Результатом аудита может стать исправленная метка, новый признак или признанная неоднозначность задачи. Это конкретнее, чем очередное усложнение модели на тех же информационно неразличимых входах.
Закрепить на практике
В бесплатном уроке признаков и цели вы определите, какие столбцы получает модель и какой ответ предсказывает. После этой базы проверьте конфликтующие сочетания из статьи и сформулируйте, какого контекста не хватает. Откройте бесплатный урок и задачи. Полная последовательность тем — в бесплатном курсе.
Продолжить на практике
- Машинное обучение с нуля на Python: первая модель ↗
Бесплатный курс машинного обучения на Python: обучите первую модель в scikit-learn, проверьте её качество и решите 106 задач в браузере.
