[Перевод] Чеклист для проекта по машинному обучению
В этом посте я собрал чеклист, на который я постоянно ссылаюсь, работая над комплексным проектом по машинному обучению.
Зачем мне вообще нужен чеклист?
Поскольку вам необходимо иметь дело с многочисленными элементами проекта (подготовка, вопросы, модели, подстройка и т. д.), Легко потерять след. Он проведет вас через следующие шаги и подтолкнет вас к проверке, было ли выполнено каждое задание успешно или нет.
Иногда мы пытаемся найти отправную точку, чеклист помогает вам извлечь правильную информацию (данные) из правильных источников, чтобы установить отношения и раскрыть корреляционные идеи.
Рекомендуется, чтобы каждая часть проекта проходила парадигму проверок.
Как говорит Атул Гаванде в своей книге «The Checklist Manifesto»,
объем и сложность того, что мы знаем, превзошли нашу индивидуальную способность правильно, безопасно и надежно предоставлять свои преимущества.
Итак, позвольте мне провести вас по этому четкому и краткому списку действий, которые уменьшат вашу рабочую нагрузку и улучшат ваши результаты…
Чеклист проектов по машинному обучению
Вот 8 шагов, которые вы должны выполнить почти в каждом проекте. Некоторые из шагов могут быть выполнены взаимозаменяемо по порядку.
1. Определите проблему с точки зрения высокого уровня
Это чтобы понять и сформулировать бизнес-логику проблемы. Это должно сказать вам:
- характер проблемы (контролируемая/неконтролируемая, классификационная/регрессионная),
- тип решений, которые вы можете разработать
- какие показатели вы должны использовать для измерения производительности?
- является ли машинное обучение правильным подходом к решению этой проблемы?
- ручной подход к решению проблемы.
- неотъемлемые предпосылки проблемы
2. Определите источники данных и получите данные
В большинстве случаев этот шаг можно выполнить перед первым шагом, если у вас есть данные, и вы хотите определить вопросы (проблемы) вокруг них, чтобы лучше использовать входящие данные.
Основываясь на определении вашей проблемы, вам нужно будет определить источники данных, которые могут быть базой данных, хранилищем данных, датчиками и т. д. Для развертывания приложения в продакшен этот шаг должен быть автоматизирован путем разработки конвейеров данных, обеспечивающих поступление входящих данных в систему.
- перечислите источники и количество данных, которые вам нужны.
- проверьте, не будет ли место проблемой.
- проверьте, разрешено ли вам использовать данные для ваших целей или нет.
- получите данные и преобразуйте их в работоспособный формат.
- проверьте тип данных (текстовый, категориальный, числовой, временные ряды, изображения)
- выберите образец для окончательного тестирования.
3. Первоначальная разведка данных
На этом этапе вы изучаете все особенности, которые влияют на ваш результат/прогноз/цель. Если у вас есть огромный массив данных, попробуйте выполнить этот шаг, чтобы сделать анализ более управляемым.
Шаги:
- используйте Notebook Jupyter, поскольку он обеспечивает простой и интуитивно понятный интерфейс для изучения данных.
- определите целевую переменную
- определите типы особенностей (категориальные, числовые, текстовые и т. д.)
- проанализируйте соотношение между особенностями.
- добавьте несколько визуализаций данных для легкой интерпретации влияния каждой функции на целевую переменную.
- документируйте свои результаты исследований.
4. Исследовательский анализ данных для подготовки данных
Пришло время выполнить выводы из предыдущего шага, определив функции для преобразования данных, очистки, выбора/разработки особенностей и масштабирования.
- Написание функций для преобразования данных и автоматизации процесса для предстоящих пакетов данных.
- Напишите функции для очистки данных (вменяя пропущенные значения и обрабатывая резко отличающиеся значения)
- Напишите функции для выбора и проектирования особенностей — удалите избыточные особенности, отформатируйте преобразование объектов, и другие математические преобразования.
- Масштабирование особенностей (features) — стандартизация особенностей (features) .
5. Разработайте базовую модель, а затем изучите другие модели, чтобы отобрать лучшие
Создайте очень базовую модель, которая должна служить основой для всей другой сложной модели машинного обучения. Контрольный список шагов:
- Обучите несколько часто используемых моделей, таких как модель наивного байеса, модель линейной регрессии, SVM и т. д., используя параметры по умолчанию.
- Измерьте и сравните производительность каждой модели с базовой и со всеми остальными.
- Используйте N-кратную перекрестную проверку для каждой модели и вычислите среднее и стандартное отклонение показателей эффективности по N-кратным показателям.
- Изучите особенности, которые оказывают наибольшее влияние на цель.
- Проанализируйте типы ошибок, которые допускают модели при прогнозировании.
- Проектируйте функции по-разному.
- Повторите вышеупомянутые шаги несколько раз (методом проб и ошибок), чтобы убедиться, что мы использовали правильные функции в правильном формате.
- Составьте шорт-лист лучших моделей на основе их показателей эффективности.
6. Точно настройте свои модели из шорт-листа и проверьте наличие методов ансамбля
Это должен быть одним из решающих шагов, когда вы приближаетесь к своему окончательному решению. Основные пункты должны включать:
- Настройка гиперпараметра с использованием перекрестной проверки.
- Используйте методы автоматической настройки, такие как случайный поиск или поиск по сетке, чтобы найти лучшую конфигурацию для ваших лучших моделей.
- Тестируйте ансамбль методов, такие как классификатора голосования и т. д.
- Протестируйте модели с максимально возможным количеством данных.
- После завершения работы используйте тестовый образец, который мы отложили в начале, чтобы проверить, хорошо он подходит или нет.
7. Документируйте код и сообщайте свое решение
Процесс коммуникации многообразен. Вы должны иметь в виду все существующие и потенциальные заинтересованные стороны. Поэтому основные пункты включают в себя:
- Документируйте код, а также ваш подход ко всему проекту.
- Создайте информационную панель, например, voila, или проницательную презентацию с визуализацией, которая не требует пояснений.
- Напишите блог/отчет о том, как вы анализировали особенности, тестировали различные преобразования и т. д. Опишите свое обучение (неудачи и методы, которые сработали)
- Закончите с основным результатом и будущим объемом (если таковые имеются)
8. Разверните свою модель в продакшен, мониторинг
Если ваш проект требует тестирования развертывания на реальных данных, вы должны создать веб-приложение или REST API для использования на всех платформах (web, Android, iOS). Основные пункты (будут варьироваться в зависимости от проекта) включают в себя:
- Сохраните вашу окончательную обученную модель в файл h5 или pickle.
- Обслуживайте свою модель с помощью веб-сервисов, Вы можете использовать Flask для разработки этих веб-сервисов.
- Подключите источники входных данных и настройте конвейеры ETL.
- Управляйте зависимостями с помощью pipenv, docker/Kubernetes (на основе требований масштабирования)
- Вы можете использовать AWS, Azure или Google Cloud Platform для развертывания своего сервиса.
- Делайте мониторинг производительности на реальных данных или просто для людей, чтобы они могли использовать вашу модель со своими данными.
Примечание. Чеклист может быть адаптирован в зависимости от сложности вашего проекта.
Узнайте подробности, как получить востребованную профессию с нуля или Level Up по навыкам и зарплате, пройдя платные онлайн-курсы SkillFactory: