Как максимально быстро перейти от идеи к MVP

Я помогаю стартапам перейти от «продукта» к «продукту + машинное обучение».

Это моя схема достижения этого, включая советы, предостережения и примеры на каждом этапе.

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

Эта структура вращается вокруг создания доказательства концепции как можно скорее, а затем постепенного ее улучшения. Это следует из моего опыта в ML: вы не знаете, будет ли что-то работать, пока не попробуете.

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

Начните с проблемы или данных

Компании с ML-потенциалом делятся на две группы:

  1. Начать с проблемы (решить с помощью данных)
  2. Начните с данных (чтобы извлечь из них значение)

Как ни странно, технологические компании попадают на первое место, а нетехнологические компании - на второе.

Начиная с проблемы

У вас есть проблема, которую ML может решить.

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

Первый шаг - это мозговой штурм, какие данные требуются.

Затем данные могут быть получены с помощью стратегических партнерств, веб-скрейпинга или открытых наборов данных.

Начиная с данных

Вы владеете данными (и, вероятно, действующим бизнесом) и хотите извлечь из этих данных дополнительную ценность.

Пример. Производителю униформы принадлежат подробные данные о движении каждого торгового представителя.

Первый шаг - это мозговой штурм потенциальных вариантов использования данных.

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

Начать с данных (и существующего бизнеса) - это здорово, потому что незначительные улучшения ценны. Начинать с проблемы имеет смысл только в том случае, если ее решение является амбициозным и меняет правила игры.

Исследование данных

Понимание ваших данных важно, но часто получает слишком много внимания в проектах по науке о данных.

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

Исследуйте типы данных, распределение значений и что-то пропущенное или грязное.

Перечислите популярные решения

Планируете ли вы кодировать решение с нуля или использовать API на AWS, составьте список потенциальных алгоритмов, библиотек и API.

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

Перечислите, как это можно решить. Варианты, включая Fastai, Keras, Sklearn, Amazon Rekognition и некоторые другие поставщики нишевой классификации.

Это высокий уровень, и он не претендует на полноту. Просто найдите популярные варианты, с которыми вы можете работать.

Разделите данные на тестовые и обучающие наборы

Модели обучаются на наборе поездов и оцениваются на тестовом наборе.

У меня есть 2 совета:

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

Если в этот процесс науки о данных вовлечены коллеги, не являющиеся техническими специалистами, вы, скорее всего, получите ответ на вопрос №1. Будьте готовы дать отпор.

Решите проблему как можно проще

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

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

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

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

Оцените результаты

Выберите показатель успеха.

Для задачи классификации это будут f1, точность и отзыв. Остерегайтесь «точности», которая вводит в заблуждение несбалансированных наборов данных.

Для других проблем, таких как регрессия или система рекомендаций, вам нужно будет выбрать другие меры.

В конце концов, вам понадобится «какой-то» числовой показатель успеха, чтобы объективно сравнить различные решения.

Это ваш базовый уровень

На основании вышеизложенного у вас есть отметка, с которой можно будет сравнивать все будущие модели.

На этом этапе результат может быть ужасным. Но теперь вы понимаете всю сложность проблемы и то, насколько вы близки к ее решению.

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

Имейте в виду, что результаты модели зависят от объема данных и типа предварительной обработки. Определите свое намерение сравнивать яблоки с яблоками по мере продвижения и пробуйте другие модели и установки.

Перечислите свои рычаги

Какие уровни мы можем подтянуть, чтобы улучшить наши результаты?

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

Примеры:

  • очистка данных (удаление странных символов из текста)
  • векторизация (луки, вложения…)
  • стемминг и лемматизация
  • разработка функций (ручная работа и составные элементы)
  • сокращение функций (PCA, top-n-features)
  • нграммы
  • выбор модели
  • гиперпараметрическая настройка
  • взвешивание классов (некоторые модели требуют сбалансированного количества классов для обучения)

Превзойдите базовый уровень, потянув за рычаги

Улучшите результаты своей модели, потянув за рычаги.

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

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

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

Изготовление вашей модели

Существует огромный разрыв между запуском модели локально и предоставлением этой модели производственному приложению.

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

Совет от профессионалов. Максимально отделяйте модель от компонентов инфраструктуры. Это позволяет повторно развертывать небольшие части, а не весь конвейер, если вы изменяете один гиперпараметр.

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

Изучение этого может занять целую книгу, но пользователям AWS для начала следует рассмотреть комбинацию EC2, Lambda и SageMaker.

Напишите мне в комментариях, если вам нужен совет высокого уровня.

Тестирование продукции

Можете ли вы вызвать странное поведение или вызвать ошибку?

На данный момент нас интересуют только масштабируемость и надежность. Не качество прогнозов.

Масштабируемость - это то, как он работает при изменении нагрузки.

Надежность - это то, как он обрабатывает неожиданные входные данные.

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

Если вы прошли все вышеперечисленные шаги, поздравляем! Вы готовы постепенно внедрять машинное обучение для своих клиентов.

Заключение

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

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

Распространенная ошибка - это чрезмерная инженерия, прежде чем понять вероятность успеха. Вы можете буквально годы провести на этапе предварительной обработки, не создав ничего полезного, так что не попадайтесь в эту ловушку! Двигайся быстрее!

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