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

ПРИМЕЧАНИЕ. Могут быть сценарии, в которых определенные шаги не используются, или иногда может использоваться больше шагов, чем указано, это зависит от данных и вариантов использования.

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

Шаг 1. Сбор данных, также известный как интеллектуальный анализ данных или удаление данных.

Шаг 2. Предварительная обработка или подготовка данных.

Шаг 3. Выбор правильного алгоритма

Шаг 4. Разделение набора данных

Шаг 5. Оценка модели

Шаг 6. Перекрестная проверка и настройка гиперпараметров

Шаг 7. Развертывание модели

Шаг 1: Сбор данных/интеллектуальный анализ данных/анализ данных

Если человек работает в хорошо зарекомендовавшей себя организации, маловероятно, что ему придется собирать данные самостоятельно. Данные будут предоставлены в подходящей форме, чтобы перейти к следующему шагу какой-либо другой группой людей. В некоторых случаях, если данные вообще должны быть собраны отдельными лицами из разных источников, таких как статьи, веб-сайты, датчики и т. д., это может быть утомительной работой, хотя есть такие инструменты, как BeautifulSoup, Scrapy, с помощью которых это можно сделать легко. . Затем данные можно хранить в нужных форматах, таких как файл CSV, файл JSON, или даже отправлять на сервер или в базу данных в соответствии с потребностями. И это как раз начальный шаг нашего проекта. (оставляя в стороне шаг, на котором мы должны понять проблему и ее решение, это можно считать первым шагом)

Целью здесь является получение необработанных данных из разных источников для работы.

Шаг 2. Предварительная обработка данных/подготовка данных/очистка данных

Теперь, когда у нас есть некоторые данные, нам нужно сделать их должным образом, чтобы предоставить их нашему алгоритму ML. Многие алгоритмы хорошо работают, когда данные представлены в числовой форме, поэтому этот шаг необходим. (алгоритмы — это своего рода набор заранее написанных правил, которые повышают эффективность подхода, который мы используем для решения этой проблемы). данные, а затем мы можем использовать определенные меры для их обработки, такие методы, как работа с пропущенными значениями, уменьшение размерности функций (функции — это факторы, которые сильно повлияют на результат задачи, например, цена дом зависит от количества комнат в нем, этажа, на котором он находится, и некоторых других факторов, подобных этим, это функции), нормализация несбалансированного набора данных, нахождение наиболее важных функций и отбрасывание избыточных функций, являются часто выполняется на этом этапе. Как только наши данные будут хорошо подготовлены, мы можем ожидать, что алгоритм ML будет работать в полную силу. Этот этап является наиболее трудоемким, но в то же время наиболее важным этапом в жизненном цикле проекта. Если в случае, если дальнейшие шаги не будут успешными, нам, возможно, придется вернуться к этому шагу и выполнить процесс снова. На этом этапе используются в основном инструменты Pandasи NumPyдля обработки данных, а также Matplotlibшироко используется для визуализации, существуют и другие подобные инструменты, которые также используются для манипуляций и визуализации, но для начинающих обычно используются эти три. Если мы используем мощный модуль, такой как Scikit-Learn или Tensorflow, мы можем ожидать, что все функции в одном инструменте.

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

Шаг 3. Выбор правильного алгоритма

До сих пор мы имели дело с частью манипулирования данными, но что мы вообще собираемся с ней делать? Ну, мы должны предоставить очищенные данные правильному алгоритму, а алгоритмы могут различаться в зависимости от проблемы, которую вы пытаетесь решить, и ожидаемого результата. Как правило, почти каждую проблему можно отнести к категории классификации или регрессии, и, следовательно, алгоритмы, связанные с каждой из проблем, различаются. Алгоритм, который мы используем, будет принимать очищенные данные, узнавать о шаблонах в этих данных, а затем использовать тот же поток шаблонов для прогнозирования значения или для классификации нового ввода. Эти алгоритмы уже прописаны в большинстве модулей/пакетов и нам не нужно писать новый с нуля, но в редких случаях нам может понадобиться написать собственный алгоритм для конкретной задачи, есть некоторые приемы выбрать правильный алгоритм для работы. Большинство существующих алгоритмов имеют параметры по умолчанию, которые также называются гиперпараметрами, и их можно настроить для повышения точности.

Мы выбираем подходящий алгоритм на основе наших данных, проблемы и выходных требований.

Шаг 4. Разделение набора данных

После выполнения всех вышеперечисленных шагов мы разделили весь набор данных на 2 части, а именно данные для обучения и данные для тестирования. Может показаться, что разделение данных не имеет большого значения, но вскоре станет понятно, почему мы это делаем. Мы предоставляем обучающие данные для нашего алгоритма, а затем алгоритм изучает из них шаблоны, затем мы используем данные тестирования для проверки прогнозов, а затем мы можем определить, насколько хорошо наш алгоритм предсказал вывод данных, которые он не использовал. не обучены, и поэтому мы можем получить значение точности или оценку того, насколько хорошо наш алгоритм может работать с новыми данными. Могут возникнуть некоторые проблемы, такие как недообучение или переоснащение при обучении данных, которых мы можем избежать или свести к минимуму. Набор данных обычно делится в соотношении 70–30 (70 для обучения и 30 для тестирования) и может быть изменен соответствующим образом. Иногда шаг 3 и текущий шаг перемешиваются.

Что еще сказать об этом, вы это уже поняли

Шаг 5. Оценка модели

Этот шаг является наиболее неотъемлемой частью цикла, он должен дать оценку того, насколько хорошо наша модель/алгоритм может обобщать (работать с невидимыми данными и обеспечивать надежный результат). Существуют определенные критерии оценки, которые могут многое сказать о модели, которую мы используем, они называются метриками оценки. Метрики могут меняться в зависимости от типа требования. Есть несколько метрик для классификации и несколько метрик для задач регрессионного типа. Эти показатели представляют собой уравнения, основанные на математике, которые могут предоставить оценку на основе значений (здесь значения — это числа, связанные с количеством правильных и неправильных прогнозов, сделанных нашей моделью).

Самый простой и прямой этап: мы хотим знать, насколько хорошо наша модель/алгоритм может работать с новыми данными (обратите внимание на показатель точности)

Шаг 6. Перекрестная проверка и настройка гиперпараметров

Этот шаг связан с шагом 4, где мы разделяем данные на обучение и тестирование, если наш набор данных достаточно велик, и чаще всего данные могут быть действительно большими ( ͡° ͜ ʖ ͡° ), тогда у нас может быть несколько групп данные обучения и данные тестирования, а затем выполнить процесс с другой комбинацией этих наборов. Этот метод называется перекрестной проверкой, иногда перекрестная проверка также используется с разными алгоритмами одновременно, чтобы получить наиболее эффективный алгоритм путем перекрестной проверки модели с наилучшей оценочной метрикой, а затем выполнить дальнейшие действия. шаги на этой модели. Если мы работаем с конкретным алгоритмом, мы можем попробовать различные комбинации гиперпараметров и остановиться на той комбинации этих гиперпараметров, которая может обеспечить наилучшую точность. Этот шаг важен, поскольку он служит резервной копией, если шаг 5 дает плохие результаты (плохая оценка метрики), и этот шаг исключается, если метрики оценки из шага 5 удовлетворительны.

Цель – попробовать различные наборы данных и гиперпараметров, чтобы повысить точность.

Шаг 7. Развертывание модели

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

Здесь мы надеемся предоставить конечному пользователю возможность использовать приложение ML абстрактным образом, скрывая все детали реализации (производство приложения ML)

БОЛЬШОЕ ПРИМЕЧАНИЕ. Все вышеперечисленные шаги раскрывают совершенно другую историю сами по себе, это было довольно простое описание каждого из шагов, на самом деле не слишком углубляясь в математику и программирование. Каждый шаг связан со следующим шагом (подробнее о конвейерах читайте в моей предыдущей статье). Мы рассмотрим каждую из частей более подробно чуть позже.

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

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

Пожалуйста, не стесняйтесь предлагать новые идеи или исправлять что-либо из этой статьи, мы будем исследовать совершенно новую тему в другой статье, продолжайте узнавать новое каждый день, продолжайте расти! Ваше здоровье. 🙌❤️