Проекты машинного обучения связаны с получением входных данных, обучающими моделями, тестированием и прогнозированием новых данных экземпляров классов. Осуществляя это, необходимо чтобы были выполнены несколько важных этапов.
Этапы для типичного рабочего процесса прогностической модели.
Сбор данных
Процесс сбора данных зависит от типа проекта, над которым мы работаем. Данные могут поступать из разных источников, иметь разные форматы. Например, если вы работаете над проектом на основе компьютерного зрения, то ваши данные, возможно, будут представлены изображениями. Для большинства других проектов машинного обучения, данные будут представлены в форме таблиц, схожими с электронными таблицами. Набор данных может быть собран из различных источников, таких как файл, база данных, датчик и т.д. Мы может также использовать некоторые свободные наборы данных, которые представлены в интернете.
Примерами являются Kaggle и UCI Machine Learning Repository.
Предварительная обработка данных
В реальности наборы данных часто хаотичны. Вы обнаружите, что данные – не полные и имеют пробелы в нескольких строках и колонках. Есть несколько способов справиться с недостатком данных, у каждого из которых есть свои преимущества и недостатки. Самый простой способ – отбросить такие строки и колонки. Это может быть непрактично, так как мы можем утратить значительную часть наших данных. Недостающие переменные также могут быть заменены средним значением переменных (если переменные окажутся числовыми). Этот метод сохраняет наш набор данных. Однако, замещение недостающих значений средними значениями обычно имеют тенденцию влиять на распределение данных, что может негативно сказаться на наших моделях машинного обучения. Другой метод – предсказать что представляют собой пропущенные значения, основываясь на других значениях, которые представлены. Не смотря на это, мы должны быть осторожны, так как это может привести к значительному отклонению (субъективности) в нашем наборе данных. Если в необработанном наборе данных есть какие-либо категориальные переменные (например, пол, страна, день недели и т.д.), нам следует кодировать эти переменные как числовые переменные. Масштабирование и нормализация данных также необходимы для некоторых алгоритмов машинного обучения. Интуиция подсказывает, если величина некоторых переменных гораздо больше, чем величина других переменных, то некоторые алгоритмы машинного обучения будут ошибочно уделять больше внимания этим доминирующим переменным.
В итоге, мы разделили набор данных на обучающий и тестирующий наборы данных. Наши модели машинного обучения будут обучены только на обучающем наборе. Когда мы будем удовлетворены производительностью нашей модели, то будем оценивать нашу модель, используя тестовый набор данных. Обратите внимание, наша модель никогда не должна обучаться на тестовом наборе. Это гарантирует, что оценка эффективности модели будет объективной и будет отражать её реальную эффективность.
Исследовательский (разведочный) анализ данных (exploratory data analysis, EDA)
EDA – это процесс раскрытия знаний из ваших данных с помощью их визуализации. Этот процесс позволяет нам создавать новые признаки (известные как feature engineering или «конструирование признаков») и внедрять знание предметной области в наши модели машинного обучения. Рассмотрим следующие облачные сервисы Google:
- Datalab поддерживает многие задачи, которые составляют исследование и подготовку данных. Например, вы можете визуально анализировать свои данные с помощью динамических графиков, встроенных в блокнот Datalab.
- BigQuery – это полностью управляемый сервис хранилища данных, который позволяет выполнять специальный анализ данных в реальном времени с помощью стандартного SQL.
- Dataproc – полностью управляемый облачный сервис для запуска кластеров Apache Spark и Apache Hadoop.
- Dataflow – это полностью управляемый сервис для преобразования и пополнения данных в потоковом (реальном времени) и пакетном (историческом) режимах с одинаковой надежностью и выразительностью.
- Dataprep – интеллектуальная бессерверная служба данных для визуального изучения, очистки и подготовки структурированных и не структурированных данных.
Построение модели
В нашем распоряжении имеется несколько алгоритмов машинного обучения, но характер проблемы должен диктовать тип используемого алгоритма машинного обучения.
Например, каждый алгоритм классификации имеет свои свойственные им предубеждения, и ни одна модель классификации не обладает превосходством, если мы не делаем никаких предположений о задаче. На практике важно сравнить хотя бы несколько разных алгоритмов, для того чтобы обучить и выбрать самую эффективную модель. Но прежде чем мы сможем сравнить разные модели, мы сначала должны решить, какую метрику использовать для измерения производительности. Одним из часто используемых показателей является точность классификации, которая определяется как доля правильно классифицированных экземпляров.
В построении модели настройка гиперпараметров является важным шагом, и правильные гиперпараметры могут значительно улучшить производительность нашей модели. Мы также не можем ожидать, что параметры по умолчанию различных алгоритмов машинного обучения, предоставляемых библиотеками программного обеспечения, являются оптимальными для нашей конкретной проблемной задачи. Поэтому, методы гиперпараметрической оптимизации помогут нам точно настроить производительность нашей модели. Интуитивно, мы можем думать об этих гиперпараметрах, как о параметрах, которые не получены из данных, но представляют собой ручки, которые мы можем повернуть, чтобы улучшить её производительность.
Начните обучение вместе с руководством по началу работы TensorFlow. Вы также можете следовать документации scikit-learn или XGBoost для создания своей модели. Затем, изучите образцы, прилагаемые к документации на AI Platform documentation Google Cloud. Эти образцы были разработаны специально для работы с платформой искусственного интеллекта.
Обучение моделей
Для обучения модели мы ранее уже разделили модель на 2 основные части, которые являются обучающими данными и данными тестирования. В некоторых случаях, мы можем иметь ещё и данные проверки. Вы обучаете модель, используя набор обучающих данных. Настраиваете параметры с помощью набора проверочных данных. Тестируете производительность модели с набором тестовых данных. Во время обучения доступны только обучающий или проверочный наборы данных. Тестовый набор будет доступен только при тестировании модели.
Оценка моделей и прогнозирование новых экземпляров
После того как мы выбрали модель, которая была обучена на обучающем наборе данных, можно использовать тестовый набор данных, чтобы оценить, насколько хорошо она работает с невидимыми данными, чтобы в свою очередь оценить ошибку обобщения. Если мы удовлетворены его работой, можем использовать эту модель для прогнозирования новых, будущих данных. В процессе оценки вы осуществляете корректировку параметров модели и гиперпараметров на основе результатов оценки. Вы можете обнаружить проблемы в модели или в ее взаимодействии с остальной частью вашего приложения.
Развертывание вашей модели
Разместите свою модель машинного обучения в облаке, например:
- Amazon Web Services (AWS)
- Microsoft Azure
- Google Cloud Platform
- Google Compute Engine (GCE)