Прибыль:
- Возможность настройки конвейера данных (сбор, проверка, очистка, преобразование, разделение, управление версиями) и размещение проверки схемы в начале конвейера.
- Возможность принимать решения о пропущенных значениях и маркировке на основе значения поля и разделения для предотвращения утечки данных (групповых и временных)
- Возможность создать воспроизводимую базу данных, фиксируя версию данных и начальное значение случайности.
Реальная сила каждой системы машинного обучения заключается в данных, а не в модели. Опытные инженеры знают: «мусор на входе, мусор на выходе» — даже самая продвинутая модель, в которую подаются неверные данные, даст плохие результаты. В этом модуле мы устанавливаем конвейер данных (конвейер данных: цепочка шагов, которые подготавливают необработанные данные для обучения модели) от начала до конца и узнаем, на каком этапе этой линии мы можем безопасно использовать искусственный интеллект.
Шаги линии передачи данных
Линия передачи данных обычно проходит через эти остановки:
- Сбор (прием): извлечение данных из источников (база данных, API, файлы журналов, потоки событий).
- Проверка: проверка соответствия данных ожидаемой схеме, типам и диапазонам.
- Очистка: обработка пропущенных значений, повторяющихся записей, выбросов и несоответствий.
- Преобразование: преобразование необработанных данных в атрибуты — например, преобразование категориальной переменной в число, создание «дня недели» из даты.
- Разделение: разделение на обучающие, проверочные и тестовые наборы.
- Управление версиями: запись того, какая модель была обучена с использованием каких данных.
Искусственный интеллект экономит время, генерируя черновики кода и идеи, особенно на этапах 2, 3 и 4. Но такие решения, как какую запись удалить, какое недостающее значение заполнить и как, принимаются инженером, который знает данные; потому что неправильная очистка может внести в модель скрытую предвзятость.
Проверка данных: ранняя защита линии
Самые дорогостоящие ошибки начинаются не на производстве, а там, где пропущен этап проверки. Проверка схемы автоматически проверяет, соответствует ли каждый входящий пакет данных ожидаемой структуре. Например, находится ли столбец возраста от 0 до 120, пусто ли поле электронной почты, изменилось ли количество столбцов?
Совет: Поместите подтверждение в начале строки. Чем раньше будут обнаружены поврежденные данные, тем дешевле будет их исправить. Ошибка схемы, обнаруженная на производстве, во много раз дороже, чем ошибка, обнаруженная на этапе обучения.
Напишите схему проверки с помощью pandera (или «Большие надежды») для следующей схемы данных. Столбцы и правила: - user_id: целое число, не может быть нулевым, уникальным - возраст: целое число, не может быть от 0 до 120 - дата регистрации: дата, не может быть в будущем - страна: категориальная, из набора {TR, DE, US, UK} - баланс: десятичный, не может быть отрицательным. Выдавать значимое сообщение об ошибке для каждого нарушения правила. Покажите тест, указав пример ломаной линии в конце кода.
Уборка: решает человек
Отсутствующие значения являются реальностью каждого набора данных. Способы обработки:
- Удаление: удаление строки/столбца с очень высокой вероятностью отсутствия. Но существует риск потери информации и предвзятости.
- Вменение: Вменение среднего, медианного, наиболее частого значения или прогноз на основе модели.
- Флаг: сохранение информации о том, что «пропало» в отдельном столбце флага — иногда сигналом является само отсутствие.
Какой из них правильный, зависит от проблемы. В наборе медицинских данных информацию о «неизмеренном значении крови» следует сохранять, а не удалять; Потому что даже отказ врача проводить измерения – это сигнал. ИИ может предоставить вам варианты и код; Вы выбираете, какой из них соответствует реалиям данной области.
Слабая подсказка / Сильная подсказка
Слабая подсказка: «Вставьте пропущенные значения».
Настоятельная подсказка: «В следующих столбцах отсутствуют значения: доход (отсутствует 12%, распределение вправо), Last_login (отсутствует 30%). Предложите заполнить доход с помощью медианы, но объясните, почему медиана, а не среднее значение. Для Last_login предположим, что отсутствующее значение может быть значительным (пользователь, возможно, никогда не входил в систему); рассмотрите возможность создания флага Never_logged_in вместо удаления. Запишите смещение, которое любой подход добавит к модели».
Отличие: сильная подсказка дает информацию о распространении и значении региона; искусственный интеллект производит поддержку принятия решений вместо механического наполнения.
Маркировка: качество измеряется
При обучении с учителем (обучении, при котором приводятся примеры с правильными ответами) модель изучает метки (метки: правильный ответ для каждого примера). Качество этикеток устанавливает потолок: если люди маркируют непоследовательно, модель учится непоследовательно.
Соглашение между аннотаторами измеряет скорость, с которой разные люди присваивают одну и ту же метку одному и тому же образцу; Это выражается таким коэффициентом, как каппа Коэна. Низкая степень соответствия указывает либо на неясность задания, либо на слабую инструкцию.
Искусственный интеллект помогает в маркировке двумя способами: (1) составление руководства по аннотациям, (2) предварительная маркировка и предоставление человеку возможности только исправить ее. Но у предварительной маркировки с помощью LLM есть подводный камень: систематическая ошибка модели может распространиться на весь набор меток. Вот почему люди всегда проверяют некоторые этикетки LLM.
Внимание: не считайте этикетки, произведенные LLM, «правдой». Проверьте образец на человеке и измерьте соответствие LLM человеку. Если соблюдение требований низкое, предварительная маркировка принесет больше вреда, чем пользы.
Раздел данных: предотвращение утечки
Самой опасной ошибкой при разделении данных на обучение/проверку/тестирование является утечка данных: смешивание тестовой информации с обучением. Примеры:
- Записи одного и того же пользователя попадают и в обучение, и в тестирование (групповая утечка).
- Использование будущего при обучении и прошлого при тестировании во временных рядах (временная утечка).
- Вычисление параметров масштабирования (нормализации) на основе всех данных и последующее деление.
Временное расщепление необходимо для решения проблем, связанных со временем: тренируйтесь с прошлым, тестируйте в будущем. Случайное разделение дает «будущую» выгоду, которой никогда не произойдет в производстве, и приводит к завышению показателей.
Управление версиями и воспроизводимость данных
«На каких данных мы обучали эту модель?» Возможность ответить на вопрос спустя несколько месяцев — отличительная черта серьезной разработки в области машинного обучения. Управление версиями данных сохраняет каждый снимок данных с идентификатором (хешем или тегом версии). Такие инструменты, как данные версии DVC (контроль версий данных), такие как код.
Чтобы воспроизвести результат модели, необходимо исправить три вещи: версию данных, версию кода и случайное начальное число. Без этого трио невозможно сказать: «Я получил тот же результат». Мы углубим воспроизводимость в модуле 11; но исправление начального числа в конвейере данных начинается отсюда.
три мини-кейса
Случай 1. Проверка схемы дня сохранена. Когда команда перевела ценовое поле восходящей системы из пенни в лиры, все цены упали в 100 раз. Проверка схемы отклонила партию как «цена вне диапазона», и модель не была обучена с использованием поврежденных данных. Без проверки ошибка будет замечена только в производстве с неверными прогнозами.
Случай 2 – Смещение неправильного заполнения. В кредитной модели недостающие значения дохода заполнялись средним значением. Но недостающие доходы были преимущественно в группе с низкими доходами; усреднение искусственно «обогащало» эту группу, и модель предлагала им неоправданно высокий предел. Исправлена проблема с флагом медиана + отсутствие.
Случай 3 – Временная утечка. Модель прогнозирования спроса отлично выглядела на тестовом наборе (точность 95%), но потерпела неудачу в производстве. Почему: благодаря случайному расщеплению модель увидела будущее. Переход к временному биннингу снизил точность теста до 78%, но это была реальная производительность, и она сохранилась в производстве.
Копируемые шаблоны
Разделите следующий набор данных на три набора: обучение/проверка/тестирование. Ограничение: это временной ряд; Используйте ВРЕМЕННОЕ разделение (тренируйтесь в прошлом, тестируйте в будущем). Предотвратите утечку пакетов: используйте одинаковый `customer_id` только в одном кластере. Рассчитайте параметры масштабирования ТОЛЬКО из обучающего набора, а затем примените ко всем. Выведите количество строк, оставшихся в коде на каждом этапе, и добавьте утверждение, проверяющее отсутствие утечек.
Напишите проект руководства по аннотациям для этой задачи по маркировке. Задача: [например, Обозначьте отзыв клиента как положительный/отрицательный/нейтральный] Уточните пограничные случаи: сарказм, смешанные эмоции, как обозначить отзыв, не связанный с продуктом? Приведите 5 примеров и 3 сложных крайних случая, которые повысят согласованность между тегами.
Составьте контрольный список воспроизводимости для этого конвейера данных: - Как следует исправить версию данных? - Какие начальные значения случайности следует установить и где? - Какие метаданные (хэш данных, количество строк, дата) должны регистрироваться? Моя кодовая база: [язык/библиотека]
Проверьте этот код очистки на предмет утечки данных. В частности, посмотрите на это: рассчитываются ли параметры масштабирования/кодирования ДО разделения? Рассчитывается ли какая-либо статистика на основе всех данных или только обучения? Код: [код]
Таблица решений: стратегия недостающей стоимости
Статус
Рекомендуемый подход
Почему
Численное, асимметричное распределение
заполнить медианой
На среднее значение влияют выбросы
Числовой, симметричный
заполнить средним
Защищает информацию
Дефицит может быть существенным
Пометить столбец + заполнить
Недостаток – это сигнал
Коэффициент отсутствия > 60 %
Оценить/отбросить столбец
Шум слишком велик
Категорический
Категория «Неизвестно»
Не создает искусственного большинства
Распространенные ошибки
- Пропуск проверки. Без контроля схемы поврежденные данные проникают незаметно.
- Масштабирование перед разделением. Это сливает статистику тестов в образование.
- Использование случайного разделения во временных рядах. Он производит фальшивые высокие показатели.
- Слепо доверяя лейблам LLM. Систематическая ошибка распространяется по всем данным.
- Не сохраняется версия данных. Вы не сможете воспроизвести результат.
- Механическое наполнение среднее. Он игнорирует значение поля и добавляет предвзятость.
В заключение
Конвейер данных — это основа системы машинного обучения, и он заслуживает большего внимания, чем модель. Поставьте подтверждение вверху; принимать решения по очистке и маркировке, опираясь на знания предметной области; предотвратить протечки (групповые и временные) в отсеке; исправьте версию данных и начальное значение. ИИ генерирует код и идеи по этой линии, но вам решать, какие данные обрабатывать и как — ведь каждое неверное решение здесь переходит в модель как скрытый недостаток.
Задача приложения
Напишите схему проверки (пандера/Большие надежды) для своего собственного набора данных, намеренно добавьте плохую строку и покажите, что она попала в ловушку. Затем разделите данные по времени или по пакетам, вычислите параметры масштабирования только на основе обучения и проверьте отсутствие утечек с помощью утверждения. Запишите версию данных и количество строк в файл метаданных.
контрольный список
- [ ] Проверка схемы выполняется в начале строки.
- [ ] Я выбрал стратегию отсутствующих значений, основываясь на значении поля, я не заполнял его механически.
- [ ] Я измерил качество этикетки (соответствие); Я проверил теги LLM человеком.
- [ ] Я предотвратил групповую и временную утечку на панели.
- [ ] Масштабирование/кодирование рассчитывается только на основе обучающего набора.
- [ ] Версия данных, количество записанных строк и начальное число.