TL;DR: код Python для цикла находится по адресу https://github.com/j-planet/machine-learning-big-loop.
Многие считают, что
большая часть работы контролируемого (неглубокого) машинного обучения заключается в разработке признаков, тогда как процесс выбора модели просто проходит через все модели с огромным циклом for.
Итак, в эти славные выходные я решил напечатать этот цикл!
КАК ЭТО РАБОТАЕТ
Проходит через все модели sklearn (как классификационные, так и регрессионные) со всеми возможными гиперпараметрами и ранжирует с помощью перекрестной проверки.
МОДЕЛИ
Запускает модель, доступную на sklearn, для контролируемого обучения здесь. Категории:
- Обобщенные линейные модели
- Кернел Ридж
- Опорные векторные машины
- Ближайшие соседи
- Гауссовские процессы
- Наивный Байес
- Деревья
- Нейронные сети
- Методы ансамбля
Примечание. Я пропустил GradientTreeBoosting из-за низкой производительности модели, длительного времени выполнения и постоянных проблем с конвергенцией. Пропущен AdaBoost, потому что он продолжает выдавать ошибки max_features. (Пожалуйста, свяжитесь со мной или не стесняйтесь вносить свой вклад в репозиторий напрямую, если вы когда-нибудь заставляли AdaBoost sklearn работать.)
ИСПОЛЬЗОВАНИЕ
Как бежать
- Введите X (двухмерный numpy.array) и y (одномерный numpy.array). (Код также содержит поддельные данные, сгенерированные для целей тестирования.)
- Используйте 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 г.