Азбука: Всегда будьте бенчмарками

Здесь, в Dia & Co, кофе для всех! А наше рабочее место, пожалуй, настолько далеко от того, что было изображено в легендарном фильме 1992 года Гленгарри Глен Росс.

Тем не менее, ABC по-прежнему имеет значение: всегда будьте бенчмаркингом! Большая часть того, что мы делаем сейчас в Dia, - это создание новых моделей со свободой выбора их реализации, поэтому требуется приличный объем исследований и разработок.

Я поймал себя на том, что задаю себе совершенно бессмысленный вопрос: «Что такое хорошее и как мне до него добраться?». Мы почти достаточно разумны, чтобы знать, что мы не создадим почти идеальную модель на первой итерации, но когда мы определим, что у нас есть наш MDP: минимальный развертываемый продукт?

Простой эмпирический способ приблизиться к «хорошему» - изучить дельта-улучшение модели по мере того, как вы добавляете возрастающую сложность. Однако вы хотите делать это как можно более последовательно и перед лицом, возможно, несколько неизвестных новых направлений. Итак, вот вам чересчур восторженное руководство по соблюдению ваших собственных принципов сравнительного анализа низких технологий:

  • Уделите много времени размышлениям о данных, которые вы будете использовать, чтобы вы могли разработать независимые от модели и независимые от реализации способы разработки ваших функций. Это сократит количество раз, которое вам нужно будет возвращаться и изменять определения ваших функций, что затрудняет сравнение каждой итерации.
  • Всегда планируйте следующие несколько реализаций, которые вы собираетесь опробовать, и разрабатывайте кодовую базу с учетом расширений. Убедитесь, что вы всегда проектируете одновременно, по крайней мере, для текущего шага и следующего шага в плане, и, надеюсь, расширяемость вашей модели естественным образом вытекает из этого.
  • Храните этапы извлечения данных и разработки функций отдельно от этапа построения модели и убедитесь, что они хорошо проиндексированы, что означает, что «модель i была запущена на данных j» - это то, что записывается.
  • Создайте базовую инфраструктуру, в которой хранятся все атрибуты, связанные с запущенной вами моделью. Это может быть так же просто, как сохранение результатов в файле pickle вместе с хешем фиксации кода, деталями среды python, параметрами конфигурации и т. Д .:
  • Установите минимальный ориентир для производительности. Какую самую наивную вещь вы могли бы использовать в качестве предиктора? Насколько хорошо это работает? Сложная модель должна работать лучше, чем эта, и вы можете использовать ее для определения успеха!
  • Наконец, когда достаточно хорошо? Меньше думайте о каждой метрике производительности машинного обучения, о которой вы когда-либо слышали, и вместо этого думайте о том, что имеет значение для вашей конкретной проблемы. Если даны данные X, модель выдает выходные данные y: улучшает или ухудшает текущую систему? Сделайте шаг назад и запустите моделирование реалистичных результатов с учетом предполагаемого уровня производительности, изучите их вероятное влияние и используйте это, чтобы обосновать свое решение.

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

Так что, если вы хотите присоединиться к работе, которая празднует #ootd, рогалики, вечера кино и караоке, а не соревнуется за ножи для стейка, переходите на страницу нашей карьеры - мы нанимаем!

Спасибо Зузанне Клишейко, Кристоферу Моррисону, Алеку Болдуину