Полное пошаговое руководство по набору данных для прогнозирования сердечной недостаточности в Jupyter Notebooks
Введение
В последней статье мы выполнили логистическую регрессию для набора данных для прогнозирования сердечной недостаточности. Теперь мы попробуем улучшить модель с помощью GridSearchCV.
Обзор
В этой статье мы затронем следующие темы:
- Настройка гиперпараметров
- Параметры модели и гиперпараметры модели
- Методы настройки гиперпараметров
- Как реализовать GridSearchCV в Python
Настройка гиперпараметров
Настройка гиперпараметров означает поиск идеального сочетания параметров. В машинном обучении есть два типа параметров:
- Параметры модели
- Гиперпараметры модели
Параметры модели отличаются от гиперпараметров модели. Важно оптимизировать эти параметры один за другим. Правильный дизайн может повлиять на то, насколько хорошо модель работает.
Параметры модели
Алгоритм изучает параметры модели из обучающих данных. Они являются внутренними для модели. Например, веса в логистической регрессии являются параметрами модели.
Гиперпараметры модели
Они определяют архитектуру самой модели. Нам нужно настроить гиперпараметры модели. Например, гиперпараметры модели:
- Параметр регуляризации в логистической регрессии
- Параметр максимальной глубины классификатора дерева решений
- Количество деревьев для случайного классификатора леса
- Степень полиномиальных признаков для линейного регрессора
- Скорость обучения, используемая для алгоритма градиентного спуска
Методы настройки гиперпараметров
У нас есть следующие варианты настройки гиперпараметров нашей модели:
- Ручная настройка
- Поиск по сетке
- Случайный поиск
- Байесовская оптимизация
Ручная настройка
Мы можем выбрать значения наших гиперпараметров вручную. Нам нужно будет опробовать каждую комбинацию значений гиперпараметров. Это может быть невозможно для многомерной задачи оптимизации.
Недостаток:
- Обычно это неэффективно и медленно.
Поиск по сетке
Поиск по сетке — популярный метод оптимизации гиперпараметров. Это мощный подход для поиска оптимального набора значений гиперпараметров.
- Это парадигма полного перебора. Поиск методом грубой силы - это общий метод решения проблем и парадигма алгоритма. Этот метод вычисляет всех возможных кандидатов на решение. Он проверяет, соответствует ли каждый кандидат условиям задачи.
- Это метод перекрестной проверки. Это метод оценки моделей машинного обучения. Он обучает несколько моделей на подмножествах входных данных.
Это может помочь улучшить производительность модели.
Процесс:
1. Указываем список значений для разных гиперпараметров.
2. GridSearchCV обучает модель.
3. Он оценивает производительность модели для каждой комбинации значений гиперпараметров.
4. Этот метод выбирает оптимальное сочетание значений.
Преимущество:
- Это довольно просто.
Недостаток:
- Он сильно загружает процессор и довольно дорог.
- Это может быть и неэффективно.
Случайный поиск
Мы также можем использовать альтернативный подход к GridSearchCV.
Процесс:
1. Случайный поиск выбирает из сетки случайное подмножество комбинаций гиперпараметров.
2. Обучает модель.
3. Он оценивает модель только для этих гиперпараметров.
Преимущества:
- Так же хорошо, как GridSearchCV
- Экономически эффективным
- Эффективный по времени
Байесовская оптимизация
Байесовская оптимизация последовательно повторяет эксперименты. Это позволяет нам использовать результаты предыдущего эксперимента.
Как реализовать резюме поиска по сетке в Python
В этой статье мы покажем, как применять GridSearchCV в Python. Мы рассмотрим случайный поиск в следующей статье.
Шаг 1. Импортируйте необходимые библиотеки
Нам нужно импортировать следующую библиотеку:
Шаг 2: Создайте экземпляр сетки
Мы создадим сетку возможных значений гиперпараметров следующим образом:
Решатель гиперпараметров может иметь следующие значения:
Значение по умолчанию — lbfgs. Это алгоритм, используемый в задаче оптимизации. В официальной документации сказано:
- Значение liblinear — хороший выбор для небольших наборов данных.
- Значения sag и saga работают быстрее для больших наборов данных.
- Значения newton-cg, sag, saga и lbfgs предназначены для мультиклассовых задач.
В нашем наборе данных всего 299 строк. Мы предполагаем, что это небольшой, а не большой набор данных. Мы не будем использовать sag и saga. Целевая переменная является двоичной. Мы не будем использовать значения newton-cg, sag, saga и lbfgs.
Также выбор алгоритма зависит от выбранного штрафа. Следующие решатели поддерживают следующие штрафы:
- lbfgs— [l2, Нет]
- liblinear— [l1, l2]
- ньютон-cg — [l2, Нет]
- ньютон-холецкий — [l2, None]
- провисание — [l2, нет]
- сага — [эластикнет, l1, l2, нет]
Поскольку значение для решателя равно liblinear, мы можем использовать только l1 и l2.
Шаг 3: Используйте функцию GridSearchCV
Мы можем подобрать модель для любой комбинации возможных значений гиперпараметров. После этого мы можем определить значение для каждого гиперпараметра. Мы будем использовать модель поиска по сетке, чтобы найти модель с наибольшей оценкой f1. Оценка f1 представляет собой гармоническое среднее точности и полноты.
Шаг 4: Подгонка модели
Подгоним модель к обучающим данным. Это может занять некоторое время, пока не будет найдено оптимальное сочетание гиперпараметров.
Вывод выглядит следующим образом:
Мы нашли комбинацию гиперпараметров, которая максимизирует показатель f1.
Шаг 5: Лучшие параметры
Мы можем вернуть оптимальную комбинацию гиперпараметров в виде словаря следующим образом:
Значение по умолчанию для штрафа также является лучшим параметром.
Шаг 6: Оценка модели
Сначала мы импортируем необходимую библиотеку:
Матрица путаницы оценивает эффективность модели классификации.
Матрица путаницы выглядит следующим образом:
47 и 14 — реальные прогнозы. 9 и 5 - неверные предсказания. В нашей предыдущей статье результат был следующим:
- 48 и 13 — реальные предсказания.
- 10 и 4 - неверные предсказания.
Мы импортируем необходимую библиотеку:
Вывод выглядит следующим образом:
Заключение
Мы настроили гиперпараметры модели логистической регрессии с помощью GridSearchCV. Нам не удалось улучшить модель. Причина может заключаться в том, что лучшим значением штрафа для параметра является значение по умолчанию. Похоже, что иногда параметры по умолчанию уже являются оптимальными параметрами. Это также зависит от других вещей, таких как набор данных.
Если вам понравилась эта статья, пожалуйста, похлопайте в ладоши. Если вы хотите читать похожие статьи от меня, подпишитесь на меня, чтобы получать электронные письма всякий раз, когда я публикую новую статью.
Ссылка:
Чопра, Р., Англия, А. и Алаудин, М. Н. (2019) Наука о данных с помощью Python. 1-е изд. Издательство Пакет. Доступно по адресу: https://www.perlego.com/book/1031662/data-science-with-python-combine-python-with-machine-learning-principles-to-discover-hidden-patterns-in-raw- data-pdf» (дата обращения: 8 февраля 2023 г.).
Джонстон, Б. и Матур, И. (2019) Прикладное контролируемое обучение с помощью Python. 1-е изд. Издательство Пакет. Доступно по адресу: https://www.perlego.com/book/962337/applied-supervised-learning-with-python-use-scikitlearn-to-build-predictive-models-from-realworld-datasets-and-prepare- себе-для-будущего-машинного обучения-pdf (дата обращения: 19 февраля 2023 г.).