Какие новые функции и почему они так важны, чтобы стать первым крупным выпуском?
С начала 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, мы увидели, что его целью всегда было
Определите стандарт машинного обучения, чтобы предоставить инструменты большинству людей независимо от того, являются ли они исследователями, работодателями, студентами или просто для хобби.
и именно этого они достигли с этим выпуском.