Примечание Исследовательского института искусственного интеллекта: эта статья представляет собой технический блог, составленный группой субтитров Лэй Фэна.Первоначальное название «Некоторые важные приемы и хитрости для машинного обучения с помощью Python», а автором является Тиртаджиоти Саркар.
Перевод | Аранжировка Чжао Пэнфэй с лапшой | Фан Цзян
Мы собрали несколько основных советов по практике машинного обучения с помощью Python.
Я студент компьютерных наук и технологий. Как я могу начать работу с машинным обучением/глубоким обучением/искусственным интеллектом?
Начать работу с машинным обучением еще никогда не было так просто. Помимо зрелых МООК, в Интернете есть много бесплатных ресурсов, вот некоторые ресурсы, которые мне помогли:
-
Начните с отличных видео на YouTube. Почитайте хорошие учебники или статьи. Например, вы читали «Абсолютный алгоритм: как машинное обучение и искусственный интеллект меняют мир» (https://www.goodreads.com/book/show/24612233-the-master-algorithm)? И я гарантирую, что вы влюбитесь в замечательную страницу этой книги, посвященную машинному обучению (http://www.r2d3.us/visual-intro-to-machine-learning-part-1/).
-
Он начинается с четкого разграничения родственных терминов — машинное обучение, искусственный интеллект, глубокое обучение, наука о данных, компьютерное зрение, робототехника. Читайте или слушайте лекции экспертов. Посмотрите отличные видеоролики Брэндона Рорера, влиятельного специалиста по данным. В этих видеороликах (https://www.youtube.com/watch?v=Ura_ioOcpQI) четко объясняются определения и различия концепций, связанных с наукой о данных.
-
Точно знайте, чего вы хотите достичь с помощью учебы. Затем можно пройти курсы на Coursera или несколько курсов в Вашингтонском университете (https://www.coursera.org/specializations/machine-learning).
-
Подпишитесь на хорошие блоги: KDnuggets, блог Марка Мелуна о науке о данных, блог Брэндона Рорера, блог Open AI, в основном об их исследованиях.
-
Если вы увлечены онлайн-курсами mooc, ознакомьтесь с этой статьей (https://towardsdatascience.com/how-to-choose-efficient-moocs-for-machine-learning-and-data-science-8681700ed83f) для получения рекомендаций.
Самое главное, культивируйте чувство. Присоединяйтесь к некоторым хорошим социальным форумам, но не поддавайтесь искушению обращать внимание на сенсационные заголовки и новостной контент. Прочитайте сами, чтобы понять, что это такое, а что нет, куда оно может пойти и какие у него могут быть возможности. Затем сядьте и подумайте, как вы можете применить принципы машинного обучения или науки о данных в своей повседневной работе. Создайте простую регрессионную модель, чтобы спрогнозировать стоимость вашего следующего обеда, или загрузите данные о потреблении электроэнергии от энергетической компании, а затем создайте простой график временных рядов в Excel, чтобы выявить некоторые закономерности использования электроэнергии. Посмотрите это видео после того, как полностью увлечетесь машинным обучением.
Является ли Python хорошим языком для машинного обучения/искусственного интеллекта?
Если вы не являетесь исследователем с докторской степенью, работающим над чисто теоретическими доказательствами сложных алгоритмов, вы будете в основном использовать существующие алгоритмы машинного обучения и применять их для решения новых задач. Для этого нужно уметь программировать.
Существует много споров о «лучшем языке науки о данных». Когда дебаты разгораются, остановитесь и прочитайте эту проницательную статью, чтобы узнать, что вы думаете, и посмотреть, какие у вас есть варианты. Кроме того, ознакомьтесь со статьей KDnuggets. В настоящее время широко распространено мнение, что Python может помочь разработчикам быть более эффективными, от разработки до развертывания и обслуживания. По сравнению с Java, C и C++ синтаксис Python проще и продвинутее. У него активное сообщество, культура открытого исходного кода, сотни высококачественных библиотек машинного обучения и отличная поддержка со стороны гигантов отрасли (например, Google, Dropbox, Airbnb и т. д.).В этой статье основное внимание будет уделено базовым методам, связанным с Python, применительно к машинному обучению.
Основные библиотеки, которые необходимо понять и освоить
Чтобы сделать вашу практику машинного обучения более эффективной, вам необходимо освоить некоторые основные библиотеки Python. Эти библиотеки кратко описаны ниже.
Numpy
Аббревиатура Numerical Python, NumPy — это базовая библиотека, необходимая для научных вычислений и анализа данных с использованием Python. Почти все продвинутые инструменты, такие как Pandas и scikit-learn, построены на Numpy. TensorFlow использует массивы Numpy в качестве основного строительного блока, на основе которого строятся объекты Tensor и поток графов для задач глубокого обучения. Многие операции Numpy реализованы на C, что ускоряет их работу. Это ценное преимущество для науки о данных и современных задач машинного обучения.
Pandas
Это самая популярная библиотека для общего анализа данных в научных вычислениях Python. Pandas построен на массивах Numpy, поэтому он сохраняет свои вычислительные свойства и предоставляет множествоВозможности в области инженерии данных,включают:
-
Может читать/записывать множество различных форматов данных;
-
выбрать подмножество данных;
-
Вычислять по строкам и столбцам;
-
Найти и заполнить недостающие данные;
-
применять операции к независимым группам данных;
-
Преобразовывать данные в различные формы;
-
Объединить несколько наборов данных;
-
Расширенные функции синхронизации;
-
Визуализация через Matplotlib и Seaborn;
Матплотлиб и Сиборн
Визуализация данных и умение выражать данные являются важными навыками, которыми должен обладать каждый специалист по данным, чтобы эффективно передавать информацию, полученную в результате анализа. Это очень важно, чтобы освоить и стать опытным в машинном обучении, а также в вашем рабочем процессе машинного обучения (ML Pipeline). Прежде чем принять решение о применении конкретного алгоритма машинного обучения, необходимо выполнить исследовательский анализ набора данных.
Matplotlib — это наиболее широко используемая библиотека 2D-визуализации с ошеломляющим набором команд и интерфейсов для создания высококачественных графиков из данных. Здесь есть очень подробная и информативная статья (https://realpython.com/python-matplotlib-guide/), которая поможет вам начать работу с Matplotlib.
Seaborn — еще одна отличная библиотека визуализации, ориентированная на статистическое построение графиков. Практикам машинного обучения стоит учиться. На основе Matplotlib Seaborn предоставляет API (с гибким выбором стилей и цветов графиков по умолчанию), который определяет простые высокоуровневые функции для распространенных типов статистических графиков и может быть легко подключен к библиотеке Pandas. Здесь есть отличное руководство по Seaborn для начинающих (https://www.datacamp.com/community/tutorials/seaborn-python-tutorial).
Примеры участков Seaborn
Scikit-learn
Scikit-learn — это самый важный пакет машинного обучения для обычного Python. Он поддерживает множество алгоритмов классификации, регрессии и кластеризации, включая машины опорных векторов, случайные леса, повышение градиента, k-means и DBSCAN. Scikit-learn взаимодействует с библиотекой SciPy NumPy. Он предоставляет ряд контролируемых и неконтролируемых алгоритмов через согласованный интерфейс. Библиотека Scikit-learn нацелена на достижение определенного уровня надежности и поддержки для использования в производственной практике. Это означает уделять пристальное внимание таким вопросам, как простота использования, качество кода, совместная работа, документация и производительность. Ознакомьтесь с этим кратким введением в словарный запас машинного обучения, используемый Scikit-learn. Вот еще одна статья, демонстрирующая простой конвейер машинного обучения с использованием Scikit-learn (http://scikit-learn.org/stable/tutorial/basic/tutorial.html).
Вот еще одна статья, демонстрирующая простой подход к машинному обучению с использованием Scikit-learn.
https://towardsdatascience.com/machine-learning-with-python-easy-and-robust-method-to-fit-nonlinear-data-19e8a1ddbd49
Великолепие Scikit-learn
Scikit-learn — очень простой в использовании пакет для начинающих и опытных профессионалов в области машинного обучения. Тем не менее, даже очень опытные специалисты по машинному обучению могут не осознавать всю прелесть этого пакета, который может значительно повысить эффективность. Я пытаюсь показать менее известные методы/интерфейсы в scikit-learn.
трубопровод: он может инкапсулировать несколько оценок в одну. Это очень полезно, потому что обычно при обработке данных существует фиксированная последовательность шагов, таких как выбор признаков, нормализация и классификация. Вот учебник для более глубокого понимания.
поиск по сетке: Гиперпараметры не являются непосредственно изученными параметрами в оценщиках. В scikit-learn они передаются в качестве аргументов конструктору класса оценки. Поиск в пространстве гиперпараметров наилучшего показателя перекрестной проверки возможен и рекомендуется. Таким образом можно оптимизировать любые параметры, подлежащие оценке при построении оценщиков. Посетите ссылки ниже для получения дополнительной информации:
http://scikit-learn.org/stable/modules/pipeline.html
кривая проверки: У каждого оценщика есть свои плюсы и минусы. Ошибка обобщения может быть разложена на смещение, дисперсию и шум. Смещение оценок — это средняя ошибка по разным обучающим наборам. Дисперсия оценок показывает, насколько они чувствительны к изменению обучающей выборки. Шум — это свойство данных. Полезно нанести на график оценки отдельных гиперпараметров в наборах для обучения и проверки, чтобы определить, являются ли определенные оценки гиперпараметров переобученными или недостаточными. Здесь находятся встроенные методы Scikit-learn.
Горячее кодирование категориальных данных: это очень распространенная задача предварительной обработки данных для преобразования входных категориальных признаков в двоичные коды, используемые в задачах классификации или прогнозирования (например, логистическая регрессия, смешанная с экспоненциальными и текстовыми признаками). Scikit-learn предоставляет мощный и простой способ реализовать описанный выше процесс. Он работает непосредственно с фреймами данных Pandas или массивами Numpy, поэтому пользователям удобно писать любые специальные функции map/apply для этих преобразований.
Генерация полиномиальных признаков: Для бесчисленных задач регрессионного моделирования полезно увеличить сложность модели, учитывая нелинейные особенности во входных данных. Простой и распространенный метод заключается в использовании полиномиальных функций, которые могут получить условия более высокого порядка и условия взаимодействия функций. В Scikit-learn есть готовые функции для генерации перекрестных членов более высокого порядка с учетом набора признаков и степени наибольшего полинома, выбранного пользователем.
генератор набора данных: Scikit-learn включает в себя различные генераторы случайных выборок, которые можно использовать для создания искусственных наборов данных заданного размера и сложности. Он имеет функции для классификации, кластеризации, регрессии, матричной факторизации и многих видов тестов.
Практическое интерактивное машинное обучение
Проект Jupyter родился из проекта IPython в 2014 году и быстро превратился в блокнот для интерактивной обработки данных и научных вычислений, поддерживающий все основные языки программирования. Несомненно, это оказывает огромное влияние, помогая исследователю данных быстро тестировать, прототипировать свои идеи, демонстрировать результаты коллегам и сообществу открытого исходного кода и т. д.
Однако изучение и тестирование данных становятся по-настоящему захватывающими только тогда, когда пользователи могут интерактивно управлять параметрами модели и видеть эффект (почти) в режиме реального времени. Большая часть рендеринга в Jupyter является статической.
Но вам нужно больше контроля, вы хотите изменить переменную, просто двигая мышью вместо того, чтобы писать цикл for. что делать? Вы можете использовать плагин для IPython.
Плагины — это важные компоненты Python, которые реализуются браузером, обычно в качестве внешнего интерфейса (HTML/JavaScript) для отображения элементов управления каналами, таких как ползунки, текстовые поля и т. д.
В этой статье я демонстрирую базовые упражнения по подгонке кривой с использованием простого плагина. Последующие статьи будут еще больше расширяться в области взаимодействия и методов его обучения.
структура глубокого обучения
В этой статье представлены важные советы по изучению удивительного мира машинного обучения с помощью Python. Но он не охватывает фреймворки глубокого обучения, такие как TensorFlow, Keras или PyTorch, поскольку каждый из них требует подробного обсуждения. Вы можете прочитать несколько отличных статей по вышеперечисленным темам здесь, но позже у нас может быть специальное обсуждение этих замечательных фреймворков.
-
7 отличных статей о TensorFlow (Datascience Central)
https://www.datasciencecentral.com/profiles/blogs/9-great-articles-about-tensorflow
-
Datacamp tutorial on neural nets and Keras example
https://www.datacamp.com/community/tutorials/deep-learning-python
-
AnalyticsVidhya tutorial on PyTorch
https://www.analyticsvidhya.com/blog/2018/02/pytorch-tutorial/
Суммировать
Статья не может охватить все содержание (даже небольшую часть) темы машинного обучения. Тем не менее, я надеюсь, что эта статья пробудила ваш интерес и предоставила вам четкий указатель на некоторые мощные фреймворки, которые уже существуют в экосистеме Python, что поможет вам начать свое путешествие по машинному обучению.
Оригинальный сайт блога:
https://heartbeat.fritz.ai/some-essential-hacks-and-tricks-for-machine-learning-with-python-5478bc6593f2