Тонкая настройка модели - жизненно важный шаг в большинстве проектов машинного обучения. Даже при тщательной очистке данных и проектировании функций плохо выбранные гиперпараметры не позволят получить максимальную производительность от ее моделей. В прошлых проектах мне приходилось перебирать параметры и распечатывать ошибки обучения, чтобы выбрать лучшие, но недавно я прочитал Введение в машинное обучение с Python Андреаса К. Мюллера и Сары Гвидо. В этой книге авторы объясняют и демонстрируют способность sklearn автоматически выполнять поиск по списку заданных гиперпараметров для модели машинного обучения, а затем выбирать лучшую комбинацию. Я нашел эту функцию очень полезной, поэтому написал эту статью как быструю демонстрацию, чтобы передать учение Мюллера и Гвидо.

Я буду использовать Набор данных качества красного вина от Kaggle, который имеет хороший показатель удобства использования 8,8 и не слишком велик (1599 строк). Глядя на несколько верхних строк, видно, что этот набор данных содержит различные аспекты красного вина, такие как уровень pH, граммы остаточного сахара, процентное содержание алкоголя и т. Д., А также общую оценку качества вина от 1 до 10.

Поскольку я, конечно, не сомелье и, вероятно, не могу отличить вино с 7 от вина с 8, я собираюсь обучить машину опорных векторов, чтобы определить, хорошее вино или нет. «Хорошо» для меня будет все, что имеет показатель качества 7 или выше, поэтому я должен добавить эту функцию в данные. После добавления я могу разделить данные на мои независимые и зависимые переменные и создать свои обучающие / тестовые разбиения.

Теперь, когда данные в правильном виде, переходим к поиску по сетке. Первое, что я делаю, это создаю список гиперпараметров, по которым поиск по сетке будет повторяться. Поскольку я использую классификатор опорных векторов, я тестирую разные значения для C и гаммы, которые являются параметром регуляризации и коэффициентом ядра соответственно. Я ввожу модель, свою сетку параметров и 5 сгибов перекрестной проверки для создания объекта GridSearchCV (), а затем помещаю его в обучающие данные, как любую другую модель в sklearn, с помощью метода .fit ().

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

Объект поиска по сетке также сохраняет наиболее подходящие параметры в атрибуте .best_params_. В качестве примечания Мюллер и Гвидо объясняют, что sklearn всегда хранит элементы, полученные из обучающих данных, в атрибутах, которые заканчиваются подчеркиванием в конце (например: «.best_params_», «.cv_results_»). Мы можем вставить эти параметры непосредственно в модель, которую мы хотим подогнать под тестовые данные, используя kwargs, как показано ниже с помощью SVC (** grid_search.best_params_). Используя лучшие параметры, найденные при поиске по сетке, модель оценивает 100% точность классификации на тестовом наборе.

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