TL;DR: код Python для цикла находится по адресу https://github.com/j-planet/machine-learning-big-loop.

Многие считают, что

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

Итак, в эти славные выходные я решил напечатать этот цикл!

КАК ЭТО РАБОТАЕТ

Проходит через все модели sklearn (как классификационные, так и регрессионные) со всеми возможными гиперпараметрами и ранжирует с помощью перекрестной проверки.

МОДЕЛИ

Запускает модель, доступную на sklearn, для контролируемого обучения здесь. Категории:

  • Обобщенные линейные модели
  • Кернел Ридж
  • Опорные векторные машины
  • Ближайшие соседи
  • Гауссовские процессы
  • Наивный Байес
  • Деревья
  • Нейронные сети
  • Методы ансамбля

Примечание. Я пропустил GradientTreeBoosting из-за низкой производительности модели, длительного времени выполнения и постоянных проблем с конвергенцией. Пропущен AdaBoost, потому что он продолжает выдавать ошибки max_features. (Пожалуйста, свяжитесь со мной или не стесняйтесь вносить свой вклад в репозиторий напрямую, если вы когда-нибудь заставляли AdaBoost sklearn работать.)

ИСПОЛЬЗОВАНИЕ

Как бежать

  1. Введите X (двухмерный numpy.array) и y (одномерный numpy.array). (Код также содержит поддельные данные, сгенерированные для целей тестирования.)
  2. Используйте run_classification.py или run_regression.py, где это уместно.

Вывод выглядит так:

Ручки

  • Критерии оценки
    По умолчанию для классификации используется точность, а для регрессии используется отрицательная MSE, заданная параметром функции big_loop в файле utilities.py. Он также принимает любую строку оценки sklearn.
  • Масштаб
    Поскольку просмотр всех моделей и гиперпараметров в полном масштабе занимает много времени, почти для каждой модели существует «малая» и полная версия гиперпараметров. «Маленькие» работают намного быстрее, оценивая только самые важные гиперпараметры в меньших диапазонах, чем полная версия. Он управляется параметром small всех функций run_all.
  • Гиперпараметры
    Вы можете изменить область поиска гиперпараметров в run_regression.py и run_classification.py.
  • Запуск только определенной категории моделей
    В зависимости от характера проблемы одни категории моделей работают лучше, чем другие. Для каждой категории в run_regression.py и run_classification.py есть отдельные функции.

О боже, как много было напечатано за последние 24 часа! Надеюсь, это избавит вас (и меня) от набора текста в будущем. Я собираюсь пообедать, выпить холодный напиток и насладиться летней жарой в Калифорнии. :) Проверьте больше моих любимых проектов на planetj.io.

Первоначально опубликовано наhttps://www.linkedin.com/pulse/model-selection-just-for-loop-i-wrote-loop-jenny-yue-jin июня 18 октября 2017 г.