инструменты для машинного обучения
Лучшие инструменты для понимания моделей машинного обучения
Хочешь знать больше о Python?
Подпишись на наш канал о Python в Telegram!
Photo by UX Store on Unsplash
Здесь представлен список разнообразных инструментов, которые помогут вам лучше разобраться в моделях машинного обучения. Список разбит на категории:
В этой статье я кратко опишу столько технологий, сколько смогу, чтобы продемонстрировать вам всё богатство инструментов ML.
1. Интерактивные web-приложения
Streamlit
Данная open-source технология позволяет строить специализированные web-приложения для ваших моделей. Так вы сможете представить свою модель в интерактивном и понятном виде, чтобы каждый смог легко ей воспользоваться.
Всего за несколько минут вы сможете построить и задеплоить прекрасное и мощное приложение с использованием data science.
Чтобы воспользоваться Streamlit, нужно всего лишь установить его через pip командой:
Streamlit UI попросит вашего разрешения на перезапуск приложения и отображение изменений. Это позволит вам работать итерациями: вы пишете немного кода, сохраняетесь, проверяете вид приложения, пишете ещё и так далее до получения желаемого результата.
Загляните в документацию Streamlit, чтобы более подробно узнать, как он работает.
Flask
Один из самых популярных и легковесных фреймворков Python для построения web-приложений. Его можно использовать для разработки API для вашей модели. В основе Flask лежит набор инструментов Werkzeug WSGI и движок шаблонов Jinja2.
У Flask простая архитектура, и вы сможете легко её изучить. Данный инструмент рекомендуется использовать для создания небольших приложений. Вы сможете быстро задеплоить модель и настроить REST API.
Чтобы начать пользоваться Flask, установите виртуальное окружение и запустите команду:
Shiny
Shiny – это пакет языка R для создания интерактивных web-приложений. Если вы уже знаете R, вам будет легко использовать его, чтобы построить приложение и поделиться своей работой. У этого инструмента интерактивный и интуитивно понятный дизайн.
С помощью Shiny вы можете разместить свои автономные приложения на веб-странице, встроить их в R Markdown-документы или скомбинировать с панелями инструментов. Вы также можете улучшить свои приложения на Shiny CSS-темами, html-виджетами и js-скриптами.
Для установки Shiny используйте команду:
Больше деталей о Shiny – в официальном туториале.
2. Анализ данных
DABL
DABL расшифровывается как Data Analysis Baseline Library (Базовая Библиотека Анализа Данных). Данную библиотеку можно использовать для автоматизации повторяющихся процессов, которые возникают на ранних стадиях разработки моделей: очистки данных, предобработки датасета, анализа, обработки недостающих значений, конвертации данных в другие форматы.
Это новая библиотека Python, так что её функции ограничены, но выглядит пока многообещающе.
Установка производится командой:
Лучше разобраться в DABL вам поможет эта статья.
KNIME
Open-Source проект для построения моделей машинного обучения и приложений с применением анализа данных.
Так как KNIME использует принцип конвейера, в нём можно объединять различные компоненты для машинного обучения и дата-майнинга. KNIME используется в таких областях, как CRM-системы, интеллектуальный анализ текста и бизнес-анализ данных.
Он предоставляет интерактивный графический интерфейс для организации работы с помощью drag-and-drop редактора. В нём поддерживается многопоточная предобработка данных in-memory, и, к тому же, сервер KNIME поддерживает командную разработку.
Для начала работы с KNIME зайдите на страницу с документацией.
RapidMiner
Платформа для Data Science, которая будет полезна при подготовке данных и их анализе. Имеет очень дружелюбный интерфейс – просто перетаскивайте фрагменты кода в нужные места.
Предоставляет функции для исследования данных, которые помогут вам лучше разобраться в вашем датасете. В RapidMiner можно найти более 14000 операторов для анализа данных.
Начните использовать RapidMiner, перейдя по этой ссылке.
SAS
SAS (Statistical Analysis System – система статистического анализа) используется для статистического анализа данных. Использует SAS SQL и автоматическую генерацию кода, а также легко работает с продуктами Microsoft, например с Excel.
SAS позволяет создавать интерактивные панели инструментов и примечания для лучшего понимания сложных данных.
Чтобы начать использовать SAS, ознакомьтесь с этим туториалом.
3. Объяснение моделей
Eli5
Eli5 – пакет Python, который будет полезен при объяснении предсказаний классификаторов. Он обеспечивает поддержку следующих пакетов и фреймворков:
Узнать больше о Eli5 вы можете в документации.
SHAP
SHAP (SHapley Additive exPlanations – объяснение на базе вектора Шепли) основан на SHAP-значениях, которые показывают значимость каждого признака путём разбивания прогноза на части. Знание этих величин позволит отлично понять, что происходит в вашем датасете.
Некоторые применения SHAP-значений:
Больше о SHAP вы узнаете из этого урока.
Dalex
Название расшифровывается как Descriptive Machine Learning Explanations (описательное объяснение машинного обучения). Это пакет R, основная цель которого – интерпретация моделей.
Объяснение моделей ML становится всё более важной задачей. Данный пакет позволяет лучше представить, как работает ваш алгоритм и по какому принципу строятся его прогнозы.
При помощи Dalex удобно проводить сравнения моделей. Несколько преимуществ этого инструмента:
Чтобы узнать о Dalex побольше, зайдите на официальную страницу в GitHub.
4. Отладка
Uber Manifold
Отладчик, созданный командой из Uber. Он был разработан, чтобы сделать процесс итераций модели более информативным.
Специалисты науки о данных могут использовать его, чтобы увидеть общую картину и найти те участки датасета, которые ухудшают прогнозы. Manifold объясняет потенциальные причины нежелательного поведения модели, выявляя разницу между распределениями данных, на которых показатели модели были лучше и хуже.
Manifold способен обрабатывать большинство моделей машинного обучения, в том числе – большую часть моделей классификации и регрессии.
Больше о Uber Manifold – на официальной странице.
5. Оценивание производительности моделей
MLPerf
Сейчас MLPerf становится главным помощником для экспериментов в области машинного обучения, если сравнивать его с различной специализированной инфраструктурой или фреймворками. Он используется для оценки показателей аппаратного и программного обеспечения, связанного с ML.
MLPerf служит как коммерческим организациям, так и научно-исследовательским институтам для обеспечения надёжных результатов, ускорения прогресса в области ML и стимулирования инноваций для улучшения современного машинного обучения.
6. Наблюдение за экспериментами
Neptune
Легковесное и мощное программное обеспечение для науки о данных. Легко интегрируется в ваше приложение и предлагает широкий спектр функций для наблюдения за экспериментами.
Вы можете отслеживать, повторять и анализировать эксперименты, а также делиться их результатами с коллегами и менеджерами. Neptune гибок, позволяет использовать множество фреймворков и обеспечивает отличную масштабируемость (до миллионов запусков).
Также позволяет хранить, обновлять и анализировать большие объёмы данных.
Больше о Neptune вы узнаете на веб-сайте.
WandB
WandB (Weights and Biases – веса и смещения) – пакет Python, позволяющий отслеживать процесс обучения в реальном времени. Без проблем взаимодействует с популярными фреймворками, такими как Pytorch, Keras, and Tensorflow.
Дополнительно даёт возможность организовывать сеансы (Runs) в проекты, где можно легко сравнить их для выявления наилучшей модели.
Больше информации о WandB вы найдёте в этой вводной статье.
Comet
Comet позволяет организовывать эксперименты с машинным обучением. С его помощью можно легко сравнивать между собой эксперименты и сохранять собранные вами данные, а также работать в команде. Легко адаптируется к любой машине и отлично работает с различными ML-библиотеками.
MLflow
Open-source платформа для отслеживания экспериментов по машинному обучению, а также для развёртывания моделей. Каждый элемент представляет собой определённый компонент MLflow: наблюдение, проекты и модели.
Это значит, что если вы работаете с MLflow, то можете легко следить за экспериментом, организовывать его, создавать его описание для других инженеров машинного обучения и применять его на своей модели.
MLflow обеспечивает работу в масштабах от одного человека до крупной организации, но лучше всего подходит для отдельного пользователя.
Чтобы больше узнать о MLflow, загляните в официальную документацию.
7. Мониторинг продакшена
Kubeflow
Kubeflow облегчает деплой моделей машинного обучения. Он известен как набор инструментов машинного обучения в Kubernetes и нацелен на использование его потенциала для облегчения масштабирования моделей ML.
Команда Kubeflow постоянно совершенствует его функции, стараясь сделать работу data scientist’ов как можно проще.
В Kubeflow есть некоторые функции для отслеживания, но это не является главной целью проекта. Его легко можно использовать совместно с другими инструментами из данного списка в качестве вспомогательного инструмента.
Больше о Kubeflow вы найдёте в официальной документации.
Заключение
На этом завершается перечень инструментов для машинного обучения. Как вы можете видеть, экосистема крайне широка, а ведь в списке перечислены далеко не все её возможности.
Какими бы ни были ваши нужды, делать что-то вручную не стоит. Используйте этих помощников, чтобы ускорить работу и облегчить себе жизнь.
Инструменты машинного обучения для начинающих
Авторизуйтесь
Инструменты машинного обучения для начинающих
Прежде, чем мы с вами перейдём к инструментам машинного обучения, стоит проговорить одну простую, но важную вещь. Начинающие часто воспринимают машинное обучение как огромный цельный процесс. Нередко пугаются и впадают в ступор из-за обширности темы. Поэтому начнём с разделения процесса машинного обучения на три основных этапа:
В таком же порядке рассмотрим и инструменты, которые помогут всё это реализовать.
Языки программирования для машинного обучения
Нам понадобятся готовые библиотеки и фреймворки для машинного обучения. Мы ведь хотим научиться ездить на машине, а не конструировать её. Если вы пытаетесь подобрать «тот, самый подходящий» язык, то не переживайте: в любом современном языке программирования уже написаны такие инструменты, поэтому берите любой, который нравится (или знаете).
Но если мы начнём рассказывать обо всех языках в одной статье, то она будет очень длинной. Поэтому дальше будем рассматривать всё, что связано именно с Python, популярность которого стабильно растёт на протяжении вот уже нескольких лет благодаря своей гибкости, хорошей читаемости и простоте в обучении. Написанные под него библиотеки машинного обучения — самые популярные на момент выпуска статьи.
Инструменты для сбора, обработки и визуализации данных
Здесь мы собираем данные с различных сайтов и создаём датасет, который потом используем для обучения алгоритма. Сбор данных с сайтов ещё называют веб-скрейпингом (ранее мы подробно рассказывали об инструментах для веб-скрейпинга).
После того, как собрали данные, их нужно обработать, чтобы избавиться от ошибок, шума и несогласованностей, которые приведут к ситуации «мусор на входе — мусор на выходе». Это очень важно, так как от корректности данных будет зависеть точность результатов алгоритма.
19–21 ноября, Онлайн, Беcплатно
Визуализация поможет определить линейность структуры данных, существенные признаки и аномалии. Для этих задач можно воспользоваться готовыми веб-сервисами, либо написать собственный код.
После того как мы почистили наш датасет, нужно поделить его на 80% — для обучения модели, — и 20% — для её проверки и тестирования.
pandas: библиотека для обработки и анализа данных
Она построена поверх NumPy, о котором поговорим чуть дальше. Это наши группировки, сортировки, извлечения и трансформации. Для работы с файлами CSV, JSON и TSV pandas превращает их в структуру данных DataFrame со строками и столбцами. Выглядит, как обычная таблица в Excel, и работать с ней легче, чем с for-циклами для прохода по элементам списков и словарей.
Tableau, Power BI, Google Data Studio: простая онлайн-визуализация без кода
Инструменты для бизнес-аналитики и людей без особых навыков программирования. Ключевое слово здесь — визуализация. Загружаем датасет и пользуемся встроенными функциями, фильтрами и аналитикой в реальном времени. Эти сервисы быстро собирают инсайты и представляют их в наглядной форме. И Tableau, и Power BI, и Google Data Studio имеют как платные подписки, так и бесплатные версии (само собой, с ограничениями).
Matplotlib: библиотека для построения 2D-графиков
Matplotlib в связке с библиотеками seaborn, ggplot и HoloViews позволяет строить разнообразные графики: гистограммы, диаграммы рассеяния, круговые и полярные диаграммы, и много других. Для большинства из них достаточно написать всего пару строк.
Интерактивные среды разработки
Эти инструменты часто используются для Data Science и машинного обучения. Веб-среда (её также называют «notebook») позволяет разработчикам на лету тестировать небольшие части кода, проверять функциональность и разные гипотезы. Тем не менее, при желании в ней можно поместить и целый проект.
Jupyter Notebook: интерактивное моделирование
Простая в использовании бесплатная интерактивная веб-оболочка. Помимо Python, Jupyter Notebook поддерживает более чем 40 языков программирования. В нём удобно экспериментировать с новыми идеями в режиме «зашёл-сделал-вышел», писать документацию и создавать аналитические отчёты. Напоминает IDE, но по функциональности, хоть и достаточно широкому, до неё не дотягивает.
Среди инструментов для машинного обучения, и в целом Data Science, Jupyter хорош благодаря быстрому анализу, моделированию и визуализации данных. Результаты можно экспортировать во множество форматов, в числе которых — широко распространённые PDF и HTML.
Kaggle: сообщество Data Science
Kaggle также предоставляет интерактивную среду разработки. Разница в том, что всего один клик отделяет вас от целого сообщества Data Science и машинного обучения. Здесь можно найти готовые датасеты, модели и даже программный код для решения разных задач.
Также крупные коммерческие компании часто проводят здесь конкурсы и разыгрывают призовой фонд в обмен на бесплатную лицензию на использование интеллектуальной собственности (алгоритма и программного обеспечения) победившего участника.
Фреймворки и библиотеки для общего машинного обучения
Обучение модели делится на две большие категории: с учителем и без. В первом случае мы маркируем датасет, объясняя алгоритму машинного обучения, где правильный ответ, а где — нет. Так данные можно представить таблицей соответствий «элемент-категория».
Во втором случае алгоритм сам вынужден искать признаки и закономерности, так как в датасете мы даём данные без уточняющей информации. Датасет представлен сплошным потоком данных нужного типа: текста, картинок и др.
Для каждой категории используются свои алгоритмы машинного обучения (кластеризация, классификация, регрессия, ассоциация). Оптимальный выбор зависит от задачи, сложности модели, размера и типа данных.
Имейте в виду, что обучение и отладка собственной модели — долгий и затратный процесс. Очень вероятно, что кто-то уже решал похожую задачу и подготовил модель. Поэтому стоит поискать, воспользоваться реализованной архитектурой и переучить алгоритм под ваши данные. Но чем больше ваша задача отличается от той, что решает готовая модель, тем больше нужно её переучивать и менять параметры.
NumPy: готовые вычислительные алгоритмы и линейная алгебра для машинного обучения
Данные в машинном обучении представлены числовыми массивами. Даже если мы работаем с картинками или естественной речью, они должны быть преобразованы в числовые массивы. В NumPy уже реализовано всё необходимое для этого: преобразование Фурье, генерация случайных чисел, перемножение матриц и другие сложные операции. Вам остаётся только пользоваться.
NLTK: разбираем естественный язык на части
Один из ведущих инструментов для обработки естественного языка. По аналогии с тем, как NumPy упрощает линейную алгебру, NLTK упрощает парсинг текста, анализ тональности, структуры предложений и всё, что с этим связано.
scikit-learn: всё гениальное просто
Позиционируется как простая библиотека с кучей примеров на официальном сайте, из-за чего хорошо подходит новичкам. Но это не значит, что для серьёзных проектов он не годится.
Spotify, например, сделали свою рекомендательную систему как раз с помощью scikit-learn. Работает в связке с SciPy, NumPy и Matplotlib. Все базовые функции типа кластеризации, классификации и регрессии, разумеется, на месте.
Фреймворки глубокого обучения и моделирования нейросетей
Упомянутые инструменты машинного обучения позволяют нам получить модель, способную выполнять сравнительно простые задачи. Однако дальше речь пойдёт о глубоком машинном обучении нейронных сетей. Здесь для принятия более сложного решения алгоритм учитывает различные факторы, пропуская входящие данные через множество слоёв нейронов.
Само собой, для этого нужно больше вычислительной мощности и данных для обучения. Например для GPT-3 OpenAI насобирали датасет из 45 ТБ текстовых данных и отфильтровали его до 570 ГБ. Обучение модели стоило им миллионы долларов. При этом использовали они даже не весь текст. Поэтому в проектах поменьше обучение часто делегируют облачным сервисам типа Google Cloud или Amazon AWS.
На рынке инструментов глубокого машинного обучения классическая ситуация: бодаются два мастодонта — фреймворки PyTorch и TensorFlow. Раньше в них были существенные отличия. Но разграничения постепенно стираются с тем, как они перенимают друг у друга лучшие особенности.
PyTorch: король исследований
Прост в изучении и понимании, хорошо дружит с остальной питоновской экосистемой. Поэтому к новичкам PyTorch относится мягко. Отладка проходит на интуитивном уровне: ставим брейкпоинт куда угодно в коде и смотрим значения переменных. Ещё исследователям нравятся динамические графы, благодаря которым можно менять поведение модели на ходу. Всё это позволяет проверять различные теории и подходы на небольших датасетах без долгих задержек.
TensorFlow: король продакшена
Главное отличие — в подходе. Если PyTorch правит в академической среде, то TensorFlow изначально ориентирован на рынок. Да, графы у него статические; для отладки нужно учиться работать с отдельным дебагером tfdbg; а его API меняли кучу раз, ломая при этом обратную совместимость. Но он заточен для решения задач именно бизнеса: пропускать через себя огромные массивы данных при хорошей производительности и с возможностью использовать модели на мобильных устройствах без костылей и бубнов. Хотя и PyTorch уже двигается в этом направлении.
Keras: «С++ машинного обучения»
Первое, что новичок замечает в TensorFlow — это сложность. Ведь буквально всё находится и происходит внутри графа — и операции, и числа. А значит, не так, как обычно.
Keras — более высокоуровневый интерфейс для TensorFlow, CNTK, Theano, MXNet и PlaidML. Простыми словами, он создан, чтобы стать языком «С++ машинного обучения» для низкоуровневых фреймворков. Новичок может не думать, как реализовать тензорную алгебру, построить модель и прочее. Он просто воспользуется готовыми строительными блоками. Мыслительный ресурс освобождается, из-за чего начинающие специалисты быстрее учатся, а более опытные разработчики больше концентрируются на стратегических задачах.
TensorBoard: козырь в рукаве TensorFlow
Человеку непросто держать и анализировать в голове все данные. Нативная визуализация графов в браузере с разными метриками и возможностью отслеживать работу моделей — то, чего нет у PyTorch. Конечно, можно сказать про Visdom, но по возможностям он сильно уступает TensorBoard. Поэтому в PyTorch приходится часто использовать Matplotlib для визуализации и писать графики самому.
В этом аспекте TensorFlow выигрывает. Помимо метрик, разные структуры можно окрашивать в зависимости от используемого для вычислений устройства (CPU или GPU), подсвечивать узлы для отслеживания входящих данных, отображать несколько графов одновременно. Словом, всё, чтобы мониторить работу было легко и удобно.
Какие ещё инструменты машинного обучения вы бы посоветовали? Расскажите в комментариях!
Инструменты машинного обучения
Дата публикации 2015-12-28
Инструменты являются важной частью машинного обучения, и выбор правильного инструмента может быть так же важен, как и работа с лучшими алгоритмами.
В этом посте вы познакомитесь с инструментами машинного обучения. Узнайте, почему они важны, и типы инструментов, которые вы можете выбрать.
Зачем использовать инструменты
Инструменты машинного обучения делают прикладное машинное обучение быстрее, проще и веселее.
Инструменты с целью
Вы не хотите изучать и использовать инструменты машинного обучения ради самих себя. Они должны служить сильной цели.
Инструменты машинного обучения предоставляют возможности, которые вы можете использовать для достижения результатов в проекте машинного обучения. Вы можете использовать это как фильтр, когда вы пытаетесь решить, стоит ли изучать новый инструмент или новую функцию в вашем инструменте. Вы можете задать вопрос:
Как это помогает мне в достижении результатов в проекте машинного обучения?
Хорошие и отличные инструменты
Вы хотите использовать лучшие инструменты для решения проблем, над которыми вы работаете. Как определить разницу между хорошими и хорошими инструментами машинного обучения?
Когда использовать инструменты машинного обучения
Инструменты машинного обучения могут сэкономить ваше время и обеспечить согласованность результатов в проектах. Вот некоторые примеры того, когда вы можете получить максимальную выгоду от использования инструментов машинного обучения:
Платформы против библиотек
Есть много инструментов машинного обучения. Достаточно того, что поиск в Google может оставить вас разбитым.
Это не идеальное различие, потому что некоторые платформы машинного обучения также являются библиотеками, или некоторые библиотеки предоставляют графический интерфейс пользователя. Тем не менее, это обеспечивает хорошую точку сравнения, чтобы дифференцировать родовой подход к конкретному назначению.
Платформа машинного обучения
Платформа машинного обучения предоставляет возможности для завершения проекта машинного обучения от начала до конца. А именно, некоторый анализ данных, подготовка данных, моделирование и алгоритм оценки и выбора.
Особенности платформ машинного обучения:
Примеры платформ машинного обучения:
Библиотека машинного обучения
Библиотека машинного обучения предоставляет возможности для завершения части проекта машинного обучения. Например, библиотека может предоставлять набор алгоритмов моделирования.
Особенности библиотек машинного обучения:
Примеры библиотек машинного обучения:
Интерфейсы машинного обучения
Это может сбивать с толку, потому что некоторые инструменты предоставляют несколько интерфейсов. Тем не менее, он обеспечивает отправную точку и, возможно, точку дифференциации, чтобы помочь вам выбрать и выбрать инструмент машинного обучения.
Ниже приведены некоторые примеры общих интерфейсов.
Графический интерфейс пользователя
Инструменты машинного обучения предоставляют графический интерфейс пользователя, включая окна, наведи и щелкни, а также сфокусируйся на визуализации. Преимущества графического интерфейса пользователя:
Вот некоторые примеры инструментов машинного обучения с графическим интерфейсом:
Интерфейс командной строки
Инструменты машинного обучения предоставляют интерфейс командной строки, включая программы командной строки, параметризацию командной строки и акцент на ввод и вывод. Преимущества пользовательского интерфейса командной строки:
Вот некоторые примеры инструментов машинного обучения для интерфейса командной строки:
Если вам нравится работать с такой командой, посмотрите большую книгу о том, как решать проблемы машинного обучения в командной строке под названием «Наука о данных в командной строке: взгляд в будущее с помощью проверенных временем инструментов».
Интерфейс прикладного программирования
Инструменты машинного обучения могут предоставить интерфейс прикладного программирования, позволяющий вам решать, какие элементы использовать и как именно их использовать в ваших собственных программах. Преимущества интерфейса прикладного программирования:
Вот некоторые примеры инструментов машинного обучения с интерфейсами прикладного программирования:
Локальные и дистанционные инструменты машинного обучения
Это различие также может быть грязным, так как некоторые инструменты могут работать локально или дистанционно. Кроме того, если вы хороший инженер, вы можете настроить практически любой инструмент для размещения на своих серверах.
Тем не менее, это может быть полезным отличием, чтобы помочь вам понять и выбрать инструмент машинного обучения.
Локальные инструменты
Локальный инструмент загружается, устанавливается и запускается в вашей локальной среде.
Примеры локальных инструментов включают в себя:
Удаленные инструменты
Удаленный инструмент размещается на сервере и вызывается из вашей локальной среды. Эти инструменты часто называют «Машинное обучение как услуга» (MLaaS).
Примеры удаленных инструментов:
Существуют инструменты, которые вы можете использовать для настройки своего удаленного решения и интеграции в свою среду как сервис. Примеры включают в себя:
Резюме
В этом посте вы узнали, почему инструменты так важны в прикладном машинном обучении.
Вы узнали, что без хороших инструментов машинного обучения вам придется внедрять все методы с нуля, требуя опыта в методах и эффективных инженерных практиках.
Вы изучили три структурированных подхода к инструментам машинного обучения:
Какие инструменты машинного обучения вы используете?
Оставьте комментарий и поделитесь, какие станки вы используете в настоящее время.