Может ли автоматизированное машинное обучение превзойти модели, созданные вручную?
Тестирование моделей Auto-Keras на реальном наборе данных
Автоматическое машинное обучение (AutoML) можно использовать для автоматического поиска и обучения моделей машинного обучения. Вам больше не нужно создавать модель самостоятельно - алгоритмы AutoMl проанализируют ваши данные и автоматически выберут лучшую модель.
Но насколько хороши эти модели на самом деле? Можно ли их сравнить с нестандартными моделями или они даже лучше? Неужели нам больше никогда не придется вручную выбирать другую модель? Давайте разберемся!
Введение: Auto-Keras
Такие компании, как Google, уже предлагают продукты AutoML, но с Auto-Keras для этого также есть решение с открытым исходным кодом. В официальном примере начала работы Auto-Keras используется для поиска лучшей нейронной архитектуры для набора данных MNIST. Когда я попробовал этот пример, получившаяся модель набрала ~ 98%. Это довольно впечатляюще, поэтому я решил использовать Auto-Keras, чтобы попробовать себя в Kaggle Titanic Dataset.
Моя лучшая оценка в этом соревновании составляет примерно 80%, что в настоящее время ставит меня в число 900 лучших среди всех участников. Это достаточно приличный результат, так что давайте посмотрим, сможет ли Auto-Keras превзойти меня!
Вы можете найти Блокнот с полным кодом здесь
Настраивать
Я использовал Google Colab для этого проекта. Чтобы установить Auto-Keras в Google Colab, просто запустите:
!pip install autokeras
Если вы хотите запустить это локально, вы можете просто установить Auto-Keras из командной строки с помощью pip.
Данные
В этом примере я использовал набор данных, который вы можете скачать с Kaggle Competition. Чтобы использовать данные в модели Auto-Keras, вам необходимо импортировать их в виде массива numpy. Поскольку данные Титаника содержат текстовые данные, нам нужно сначала выполнить некоторую предварительную обработку:
Это та же самая предварительная обработка и разработка функций, что я сделал для своего собственного титанического решения. Предварительная обработка, конечно, разная для каждого проекта, но если вы хотите использовать Auto-Keras, вам нужно будет предоставить несколько массивов.
После предварительной обработки вы можете загрузить данные в виде обучающих и тестовых данных:
Поиск подходящей модели
После того, как вы получили x_train, y_train, x_test и y_test для своего набора данных, вы можете использовать fit , чтобы найти лучшую модель и обучить ее:
Вот и все - две строчки кода - это все, что вам нужно. Все остальное происходит автоматически.
Полученные результаты
После обучения модели я использовал ее для создания прогнозов и загрузил прогнозы в Kaggle. Я получил оценку 0,79904. Это немного хуже, чем моя ручная модель, но нужно учитывать, что Auto-Keras все еще очень новый. TabularClassifier в настоящее время поддерживает только LGBMClassifier, что не идеально для этого набора данных. Если проект будет продолжен в будущем, мы, вероятно, сможем ожидать еще лучших результатов. Также найти модель было невероятно быстро и легко, так что я считаю это очень хорошим и многообещающим результатом!
За и против
Хотя использовать полученную модель для создания прогнозов очень просто, вы теряете много знаний о своей модели. Если вы не будете его активно искать, вы не знаете архитектуру и значения параметров полученной модели - в конце концов, они выбираются автоматически, поэтому они вам никогда не понадобятся. Хотя это, вероятно, хорошо для новичков и неопытных инженеров по машинному обучению, это может стать опасным, если вы позже попытаетесь адаптировать или расширить свою модель.
Модели «черного ящика» уже активно обсуждаются в проектах машинного обучения, но при использовании AutoML весь процесс становится еще более черным ящиком - вы просто добавляете некоторые данные и надеетесь на лучшее.
Это некоторые риски, о которых вам необходимо знать при внедрении AutoML в свои проекты машинного обучения.
Значение для будущей работы
Итак, устраняет ли AutoML необходимость в пользовательских моделях? Нет, наверное, нет.
Может ли это помочь вам создавать лучшие модели? Наверное.
Например, вы можете использовать его для быстрого поиска и обучения хороших базовых моделей, которые впоследствии сможете улучшить самостоятельно. Вы также можете быстро попробовать различные стратегии разработки функций, чтобы понять, какая из них работает лучше всего. Просто попробуйте и посмотрите, как вы можете реализовать это в своих собственных проектах.
Я думаю, что AutoML может оказать большое влияние на многие проекты машинного обучения в будущем - я с нетерпением жду дальнейших разработок и улучшений в этой области.