Советы по использованию всех преимуществ этого пакета машинного обучения

Scikit Learn — одна из популярных библиотек для машинного обучения, и легко понять, почему. Пакет состоит из простых, но эффективных инструментов, которые сопровождаются подробной документацией.

Однако, несмотря на простоту использования, легко допустить ошибку, если не следовать определенным правилам, особенно если вы новичок. Я, например, борюсь с желанием использовать фейспалм, когда вижу некоторые вопиющие ошибки, допущенные при использовании модуля в моих предыдущих работах.

В конечном счете, даже если вы внимательно следите за документацией, все равно легко по ошибке пропустить некоторые ключевые функции или принять неоптимальные решения.

Таким образом, я опираюсь на свой прошлый опыт и углубляюсь в 7 лучших практик Scikit Learn для эффективного проведения прогнозного анализа данных.

1. Используйте Scikit Learn (а не Pandas) для разработки функций

Scikit Learn предназначен для задач машинного обучения, которые, конечно же, включают разработку функций. Тем не менее, некоторые обычно используют Pandas для определенных операций (например, одно горячее кодирование), поскольку это пакет, который чаще всего изучают в первую очередь.

Хотя библиотека Pandas отлично подходит для проведения исследовательского анализа данных, она не может сравниться со Scikit Learn в области машинного обучения.

Преобразователи в Scikit Learn предназначены для приложений машинного обучения. Они могут эффективно подготовить обучающие и тестовые наборы, избегая при этом утечки данных (если все сделано правильно).

Включение функций Pandas в конвейер данных с другими инструментами Scikit Learn неизбежно приведет к неэффективным процедурам, которые подвержены ошибкам.

Вместо этого лучше в основном полагаться на Scikit Learn для операций, связанных с разработкой функций.

2. Используйте стратифицированные разделения в задачах классификации

Задачи классификации могут быть сложными, когда интересующие данные демонстрируют несбалансированность данных, когда один или несколько классов представлены недостаточно.

К счастью, благодаря стратификации пользователи могут поддерживать присутствие всех классов в каждом подмножестве исходных данных.

При разделении набора данных на обучающие и тестовые наборы пользователи могут использовать параметр stratify.

При разделении обучающих данных на несколько сгибов для перекрестной проверки пользователи могут использовать класс StratifiedKFold.

3. Ускорьте настройку гиперпараметров с помощью параметра n_jobs

Настройка гиперпараметров может быть одной из наиболее трудоемких частей этапа моделирования данных. Оценка нескольких комбинаций гиперпараметров по одной, естественно, будет медленным процессом.

К счастью, пользователи могут ускорить методы настройки гиперпараметров, такие как поиск по сетке и случайный поиск, используя параметр n_jobs, который определяет количество заданий, которые должны выполняться параллельно. По умолчанию значение n_jobs установлено равным 1, но пользователи могут достичь результатов намного быстрее, назначив n_jobs значение -1, при котором задания выполняются параллельно с использованием всех доступных процессоров.

4. Назначьте значение random_state для получения воспроизводимых результатов.

Ряд процедур разработки признаков и алгоритмов машинного обучения включают случайность. Однако программа, использующая чистую случайность, не сможет воспроизвести свои результаты, что затрудняет проведение экспериментов.

Пользователи могут добиться воспроизводимых результатов, установив начальное значение в генератор случайных чисел. Для инструментов Scikit Learn это делается путем присвоения значения параметру random_state объекта, когда это применимо. Это гарантирует, что программа даст воспроизводимые результаты.

Пользователи могут установить значение random_state при выполнении таких операций, как:

  • разделение набора данных на наборы для обучения и тестирования
  • настройка объекта классификатора машинного обучения
  • настройка гиперпараметров

Примечание. Число, присвоенное параметру random_state, на самом деле не имеет значения, если оно не изменяется во время эксперимента.

5. Укажите параметр оценки в настройке гиперпараметров.

Методы настройки гиперпараметров оценивают модели с различными комбинациями гиперпараметров. Целью этого метода является определение гиперпараметров, обеспечивающих максимальную производительность.

Однако как модели могут работать хорошо, если они оцениваются с помощью неправильной метрики? Это очень возможный результат, когда вы используете значение по умолчанию для параметра scoring в объектах GridSearchCV и RandomizedSearchCV модуля Scikit Learn.

По умолчанию поиск по сетке и случайный поиск оценивают гиперпараметры моделей классификации по точности. К сожалению, это редко бывает подходящей метрикой для приложения машинного обучения.

Чтобы избежать этого, определите наиболее подходящую оценочную метрику для интересующей модели и назначьте ее параметру оценки. Список доступных метрик можно найти в документации пакета.

Если ни одна из предоставленных метрик не подходит, можно также создать собственную пользовательскую метрику с помощью функции make_scorer. Это полезная функция, когда пользователи предпочитают один тип ошибки другому.

6. Преобразование данных с помощью конвейеров

Новички, начинающие работу со Scikit Learn, могут привыкнуть выполнять одно преобразование за раз. Этот подход предполагает многократное использование методов fit и transform в наборе для обучения и тестирования.

Преобразование данных таким образом требует много строк кода и может легко привести к ошибкам (например, использование fit на тестовом наборе). Итак, вы будете рады узнать, что Scikit Learn предлагает инструмент, который значительно упрощает эти операции: конвейер.

Конвейер Scikit Learn — это инструмент, который объединяет ряд преобразований и оценок, позволяя пользователям выполнять операции с кодом, который легче писать, читать и отлаживать.

Я постоянно выступаю за использование конвейеров и буду делать это снова здесь; они просто хороши.

В качестве примера мы можем использовать объект конвейера для выполнения предыдущих операций:

По сравнению с предыдущим фрагментом код здесь намного читабельнее и упрощает понимание всех шагов рабочего процесса.

Кроме того, все преобразования и моделирование в объекте конвейера могут быть выполнены на тренировочном наборе с помощью всего одного метода fit. Более того, одни и те же преобразования могут быть применены перед генерацией прогнозов из тестового набора с использованием одного метода predict.

7. Ознакомьтесь с другими пакетами, совместимыми с Scikit Learn.

В конце концов, широкий спектр инструментов пакета Scikit Learn не может учитывать все мыслимые случаи.

Таким образом, стоит ознакомиться с другими пакетами, совместимыми со Scikit Learn. Эти пакеты содержат инструменты, которые можно использовать вместе со Scikit Learn для разработки функций и моделирования данных.

Двумя примечательными примерами являются пакеты feature_engine и XGBoost, которые могут похвастаться собственными уникальными преобразователями и алгоритмами машинного обучения, которые можно использовать с другими инструментами Scikit Learn.

Заключение

Пакет Scikit Learn обладает огромной полезностью и может использоваться для решения всех видов проблем машинного обучения.

Однако пользователи должны научиться следовать определенным передовым методам, чтобы получить максимальную отдачу от пакета.

Если вы нашли этот краткий обзор полезным, вы также можете прочитать его:







Желаю вам удачи в ваших начинаниях в области науки о данных!