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

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

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

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

Давай начнем.

1. Используйте и поддерживайте файл схемы объектов

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

Создайте файл, который удовлетворяет хотя бы этим критериям:

  1. содержит название функций
  2. тип (категориальный, числовой, …)
  3. допустимые минимальные и максимальные значения
  4. выборочное среднее и дисперсия
  5. если он допускает появление нулей
  6. если он допускает появление неопределенных значений

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

2. Просмотрите файл README.md

Я просто люблю записывать свои мысли до и во время моего проекта машинного обучения. Все это делается в моем файле README.md, который является первым файлом, который я создаю в своем репозитории.

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

То, как я структурирую свой файл README, не является стандартным, но обычно оно следует следующему шаблону:

  1. Я пишу о цели и общей идее, стоящей за ней
  2. Я перечисляю возможные методологии, которые можно использовать для решения проблемы.
  3. Я перечисляю плюсы и минусы каждого из них, максимально подробно комментируя каждый подход.
  4. Я перечисляю проблемы проекта и то, что мне нужно с точки зрения ресурсов и знаний, чтобы решить проблему прямо сейчас.
  5. влияние проекта на бизнес

Пункт 5 помогает нам в постпроектном сторителлинге. Если я смогу задокументировать каждый шаг и рассказать о своем процессе, у меня будет отличная история, которую я могу рассказать заинтересованным сторонам. Общение так же важно, как и ваши аналитические способности.

3. Установите достижимый уровень производительности

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

Чтобы получить представление о том, как может работать ваша модель, примите это во внимание.

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

4. Выберите один (и только один) показатель эффективности

Это тесно связано с уровнем производительности. У модели есть показатель производительности, который вы можете назначить ей перед обучением. Например, задача регрессии может потребовать, чтобы вы установили показатели производительности RMSE (среднеквадратичная ошибка) или MAE.

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

5. Определите базовый уровень

Вы всегда должны сравнивать свои модели с базовой линией. Это может быть очень самоуверенно, например:

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

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

6. Разделите данные на три части

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

Убедитесь, что ваши данные разделены на три части: обучение, проверка, набор тестов. Вот отличия:

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

Мне нравится использовать эту метафору:

Ваша модель как ребенок в школе. Ребенок, который учится в школе, — это ваша модель, которая учится на поезде, ребенок, выполняющий домашнее задание, — это ваша модель, которую тестируют на проверочном наборе, а ребенок на выпускном экзамене — это модель на вашем тестовом наборе.

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

Заключение

Вот TL;DR

  1. Используйте файл схемы, чтобы отслеживать свои функции и их свойства.
  2. Храните всю необходимую информацию в файле README.md на всех этапах проекта.
  3. Установите достижимые показатели эффективности — поговорите со своими заинтересованными сторонами, чтобы понять их ожидания
  4. Выберите один и только один показатель эффективности
  5. Сравните свои модели с известными базовыми показателями, чтобы понять ценность, которую вы добавляете к сочетанию.
  6. Убедитесь, что вы правильно разбиваете данные.

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