Определить, что представляет каждый пример
Начните с фразы о решении: распознать категорию нового обращения, извлечь три поля из документа или ответить на вопрос вместе с его вложениями. Опишите вход, доступный в момент предсказания, ожидаемый выход и случаи вне области охвата. Информация, добавленная после решения обращения, не должна появляться во входе, который призван представлять его поступление.
Затем разграничьте строку и независимую единицу. Пять сообщений одного разговора разделяют контекст; десять страниц одного дела разделяют своё происхождение. Если ваша цель касается новых дел, держите каждое дело в одной партиции. Разделение по пользователю, документу, оборудованию или периоду отвечает на разные вопросы: выберите то, что похоже на будущее использование, и зафиксируйте его обоснование в манифесте.
Технические источники: scikit-learn 1.9 — валидация с группами и временными зависимостями
Назначить роль каждому набору
Обучающий набор служит для настройки модели. Валидационный набор направляет решения в разработке: промпт, порог, гиперпараметры или выбор варианта. Финальный тест отвечает на уже зафиксированный вопрос. Его просмотр для выбора наилучшей настройки постепенно превращает этот тест в инструмент разработки, даже если по нему не вычисляется ни одного градиента.
Также отделите данные, используемые для изучения преобразования. Нормализация, отбор признаков или импутация, настроенные на всём корпусе, могут передать информацию модели. Изучайте эти преобразования на разрешённой партиции, а затем применяйте сохранённое преобразование к остальным наборам. Конвейер облегчает этот контроль; он сам по себе не исправляет плохо разделённые группы.
| Набор | Допустимое использование | Решение, которого следует избегать |
|---|---|---|
| Обучение | Настраивать параметры и изученные преобразования | Переносить в него ответы финального теста |
| Валидация | Выбирать настройки, промпты и пороги | Представлять лучшую исследовательскую оценку как независимый финальный результат |
| Финальный тест | Оценивать выбранную конфигурацию по зафиксированному правилу | Менять настройки после просмотра, а затем снова использовать ту же оценку как подтверждение |
| Возможная калибровка | Подготовить метод квантования, которому это необходимо | Использовать финальный тест для создания оцениваемого варианта |
Технические источники: scikit-learn 1.9 — утечка данных и преобразования
Обрабатывать дубликаты, не удаляя сложные случаи
Сохраните исходный корпус, затем постройте рабочий реестр с идентификатором, источником и группой. Отпечаток содержимого выявляет точные копии в зависимости от выбранного представления. Документируйте это представление: удаление всей пунктуации или приведение текста к нижнему регистру может объединить записи, различие между которыми важно для задачи. Сохраняйте соответствие между отброшенной копией и сохранённым экземпляром.
Почти дубликаты требуют дополнительной проверки: изменённый экспорт, переформулированный ответ, общий фрагмент или переизданный документ. Высокое сходство — это сигнал к рассмотрению, а не доказательство того, что две аннотации взаимозаменяемы. Группируйте связанные варианты перед распределением данных. Если две копии содержат противоречивые ссылки, откройте вопрос об аннотации; не выбирайте автоматически ту, которую модель предсказывает лучше всего.
Разобранный пример: 1 200 строк — это не 1 200 независимых наблюдений
Этот пример полностью иллюстративен: ни один корпус или модель не измерялись. Предположим, 240 разговоров, каждый экспортирован в пяти строках. Одна строка — точная копия в каждом разговоре; остальные четыре различаются. Удаление этих 240 копий оставляет 960 примеров, по-прежнему организованных в 240 групп. Следующий методический выбор отводит 70 % групп на обучение, 15 % на валидацию и 15 % на тест.
Получаем 168, 36 и 36 разговоров, то есть 672, 144 и 144 примера. Равенство пропорций в строках и группах здесь обусловлено четырьмя примерами на разговор. В реальном корпусе с переменными размерами оно не было бы автоматическим. Эти пропорции не являются универсальным правилом: они должны оставлять достаточно групп и важных случаев в каждом наборе.
| Разбиение | Целые разговоры | Примеры | Роль |
|---|---|---|---|
| Обучение | 168 | 672 | Обучить |
| Валидация | 36 | 144 | Выбрать |
| Финальный тест | 36 | 144 | Подтвердить на отдельном наборе |
Технические источники: scikit-learn 1.9 — GroupShuffleSplit считает группы
Проверить классы, длины и хронологию
После разбиения подсчитайте классы и группы, которые их несут. Класс, встречающийся во многих строках, но лишь в одном разговоре, не даёт много независимых случаев. Также изучите длины, реально охваченные языки, неполные документы и категории, важные для решения. Успокаивающее среднее может скрывать разбиение без единого примера критического случая.
Стратификация с группами стремится сохранить пропорции классов, не разбрасывая группы. Она не гарантирует идеальный баланс, когда групп мало или они очень неравномерны. Если задача состоит в предсказании будущих наблюдений, хронологическое разделение может быть уместнее случайного перемешивания. Проверьте также, что переменные были доступны на дату предсказания.
Технические источники: scikit-learn 1.9 — StratifiedGroupKFold и его ограничения · scikit-learn 1.9 — валидация временных данных
Сделать эталон достаточно точным для оценки вывода
Напишите инструкцию по аннотированию с примерами и пограничными случаями. Для извлечения уточните смысл отсутствующего поля, формат дат, валюту и допустимые эквиваленты. Для классификации опишите границы между категориями. Ответ, отличный от эталона, не всегда ошибка модели: эталон может быть неоднозначным или неверным.
Дайте выборочно проверить разнообразный набор, особенно расхождения и важные случаи, затем зафиксируйте решение. Сохраняйте исправления в новой версии набора. Если исправление меняет результат сравнения, пересчитайте все затронутые варианты на одном и том же эталоне; не исправляйте только строку, невыгодную для вашей любимой модели.
Подготовить пакет оценки до запуска GPU-кампании
Результат этой подготовки — идентифицируемый набор вместе с его правилами. Он позволяет воспроизвести отбор данных, не полагаясь на память из блокнота. Подготовка этого пакета до аренды избавляет от траты периода вычислений на улаживание различий в файлах или критериях.
- Зафиксируйте идентификаторы, группы, разбиения и их обоснование; сохраните скрипт или список, который их создаёт.
- Проверьте пересечения идентификаторов, групп и отпечатков между разбиениями. Любое неожиданное пересечение должно быть объяснено или устранено.
- Экспортируйте численности по разбиению, классу и полезной подгруппе, а также список исключений и их причину.
- Зафиксируйте эталон, правила нормализации, основную метрику и пороги до начала сравнения.
- Сохраняйте ревизию, отпечатки, права на использование и местоположение данных. Отпечаток обеспечивает идентификацию, а не анонимность.
- Ограничьте доступ к финальному тесту до запланированного решения; ведите журнал обращений и изменений протокола.
Понимать, что доказывает проверка
Подготовка приемлема, когда численности сходятся с инвентарём, перекрытия контролируются и каждый результат можно оценить по явному правилу. Она не доказывает, что модель добьётся успеха, и не гарантирует, что все будущие случаи использования представлены. Небольшой набор может описывать конкретную задачу, оставаясь недостаточным для выводов о редком классе.
Если вы используете ошибки финального теста для улучшения системы, сохраните этот тест как исторический и подготовьте новое независимое подтверждение. Для предобученной модели, исходные данные которой неизвестны, ваше разбиение не может подтвердить отсутствие прежнего контакта с данными. Задокументируйте это ограничение, а не называйте набор полностью девственным.
Практические вопросы
Всегда ли нужно отводить 20 % данных под тест?
Нет. Полезная доля зависит от числа независимых единиц и случаев, которые нужно покрыть. Проверьте группы, важные категории и требуемую точность вывода; один процент сам по себе не гарантирует информативный тест.
Достаточно ли разных идентификаторов, чтобы исключить дубликаты?
Нет. Два экспорта могут иметь разные идентификаторы, но содержать один и тот же текст или варианты одного и того же дела. Проверяйте содержимое и происхождение, а связанные примеры оставляйте в разбиении, соответствующем вашему правилу группировки.
Могу ли я переиспользовать свой тест после того, как исправил модель по его ошибкам?
Вы можете сохранить его для отслеживания истории, но он участвовал в разработке. Чтобы подтвердить улучшение на отложенных данных, используйте новый независимый набор и чётко объявите роль каждого из них.