Какие новые функции и почему они так важны, чтобы стать первым крупным выпуском?

С начала Scikit-Learn прошло 14 лет и 24 бета-релиза, и, наконец, он достиг версии 1.0. Это может показаться немного странным, если учесть тот факт, что Scikit-Learn уже давно используется тысячами компаний, специалистов по обработке данных, исследователей… и все считают его самой распространенной структурой для машинного обучения общего назначения.

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

1. Немного истории

Scikit-Learn впервые появился в 2007 году как проект Google Summer of Code и продолжал развиваться в исследовательской среде. Его цель заключалась в том, чтобы служить инструментом для анализа данных без необходимости фокусироваться на какой-либо конкретной технологии или коде. По этой причине он основан на Python, языке с открытым исходным кодом, прост в использовании, универсален и может встраивать код C.

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

Более того, ключевым моментом Scikit-Learn помимо эффективности и простоты является документация. Многие специалисты по данным (я) изучали машинное обучение, читая документацию Scikit-Learn. Ожидается, что это будет не просто документация по коду, а путь обучения Data Science.

2. Релиз 1.0

Если мы увидим основные моменты выпуска, мы увидим, что есть изменения в API и даже некоторые интересные новые функции.

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

В следующем разделе мы собираемся погрузиться в три основные темы, которые могут суммировать все изменения в выпуске.

3. Основные моменты выпуска

3.1. Стандартизация API

Одним из важных паттернов в интерфейсе библиотеки является то, что все модули, как правило, взаимозаменяемы. Это означает, например, что если вы пытаетесь построить контролируемую модель, функции и методы для подбора, тестирования, прогнозирования и измерения точности этой модели не зависят от разновидности контролируемой модели, которую вы строите (линейная регрессия , деревья решений, k-средства…).

Стандартный интерфейс и подпись между объектами с одинаковой функциональностью.

Однако сигнатура модуля была такой же, но значения, которые не были ожидаемыми, между разными модулями и выпусками (например, «X должен быть np.matrix или np.array?», «Loss = 'ls' или loss = 'mse'?… »). Вот некоторые основные моменты для решения этой проблемы:

  • Подпись: теперь они заставляют использовать только аргументы, содержащие только ключевые слова.
  • Типы данных: новые функции работают с Pandas (например, оценщики сохраняют имена функций pd.DataFrame во время обучения). Между тем, тип np.matrix устарел.
  • Значения аргументов: некоторые функции и модули имеют одинаковые аргументы (потери, масштабирование, критерий и т. д.), но ожидаемые значения были разными, и это изменилось. Некоторые кодировщики теперь могут принимать отсутствующие и неизвестные значения.

3.2. Производительность вычислений

Когда вы создаете библиотеку для работы с мыслями о данных, которая будет доступна всем, вы также должны учитывать, что у большинства людей нет больших вычислительных ресурсов, а есть только скромные домашние ноутбуки. Вот почему Scikit-Learn всегда пытался использовать низкоуровневые встроенные языки (Cython) для повышения производительности (например, в алгоритмах SVM и GBDT).

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

В этом выпуске повышена эффективность многих функций и модулей, например:

  • Препроцессоры: (StandardScaler, KBinsDiscretizer, PolynomialFeatures)
  • Оценщики: (логистическая регрессия, соседи, кластер,… алгоритмы)
  • Алгоритмы уменьшения размерности

А также новые функции, которые не улучшают производительность, а новые модели, которые используют статистические свойства, чтобы работать быстрее, чем исходные модели:

  • Online One-Class SVM: Используйте One-Class SVM со стохастическим градиентным спуском и аппроксимациями ядра, чтобы снизить сложность с квадратичной до линейной.
  • HistGradientBoostingClassifier: реализация усиления градиента, при которой значения функций разбиваются на сплайны. Деревья изучают значения сплайна вместо самого значения, уменьшая количество элементов.

3.3. Измерение

Распространенная ошибка - думать о Scikit-Learn как о фреймворке машинного обучения, но правда в том, что он идет дальше. Он предоставляет набор инструментов не только для разработки моделей, но и для измерения и понимания прогнозов обученной модели.

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

В этом выпуске добавлены некоторые новые функции, упрощающие вычисление метрик, а также некоторые новые метрики:

  • Добавленный метод: для показателей и графиков from_estimator и from_predictions.
  • Новые показатели: pinball_loss и tweedie_score.
  • Новые графики для отображения результатов CalibrationDisplay.

3.4. Сообщество

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

Из более чем 2100 объединенных запросов на вытягивание около 800 являются улучшениями в нашей документации.

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

4. Выводы

В этой статье мы рассмотрели основные функции Scikit-Learn версии 1.0 и попытались объяснить их важность в историческом контексте библиотеки.

Может показаться странным, что первый крупный выпуск состоял в основном из исправлений и изменений API, а не новых функций, однако, понимая цель Scikit-Learn, мы увидели, что его целью всегда было

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

и именно этого они достигли с этим выпуском.