Openbravo-rus.ru

Образование по русски
6 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Машинное обучение питон

Автостопом по машинному обучению на Python

Автостопом по машинному обучению на Python

    Переводы , 30 сентября 2017 в 22:18

Машинное обучение на подъеме, этот термин медленно забрался на территорию так называемых модных слов (buzzword). Это в значительной степени связано с тем, что многие до конца не осознают, что же на самом деле означает этот термин. Благодаря анализу Google Trends (статистике по поисковым запросам), мы можем изучить график и понять, как рос интерес к термину «машинное обучение» в течение последних 5 лет:

Но эта статья не о популярности машинного обучения . Здесь кратко описаны восемь главных алгоритмов машинного обучения и их использование на практике. Обратите внимание, что все модели реализованы на Python и у вас должно быть хотя бы минимальное знание этого языка программирования. Подробное объяснение каждого раздела содержится в прикрепленных англоязычных видео. Сразу оговоримся, что полным новичкам этот текст покажется сложным, он скорее подходит для продолжающих и продвинутых разработчиков, но главы материала можно использовать как план для построения обучения: что стоит знать, в чем стоит разобраться в первую очередь.

Классификация

Не стесняйтесь пропускать алгоритм, если чего-то не понимаете. Используйте это руководство так, как пожелаете. Вот список:

  1. Линейная регрессия.
  2. Логистическая регрессия.
  3. Деревья решений.
  4. Метод опорных векторов.
  5. Метод k-ближайших соседей.
  6. Алгоритм случайный лес.
  7. Метод k-средних.
  8. Метод главных компонент.

Наводим порядок

Вы явно расстроитесь, если при попытке запустить чужой код вдруг окажется, что для корректной работы у вас нет трех необходимых пакетов, да еще и код был запущен в старой версии языка. Поэтому, чтобы сохранить драгоценное время, сразу используйте Python 3.6.2 и импортируйте нужные библиотеки из вставки кода ниже. Данные брались из датасетов Diabetes и Iris из UCI Machine Learning Repository . В конце концов, если вы хотите все это пропустить и сразу посмотреть код, то вот вам ссылка на GitHub-репозиторий .

Линейная регрессия

Возможно, это самый популярный алгоритм машинного обучения на данный момент и в то же время самый недооцененный. Многие специалисты по анализу данных забывают, что из двух алгоритмов с одинаковой производительностью лучше выбирать тот, что проще. Линейная регрессия — это алгоритм контролируемого машинного обучения, который прогнозирует результат, основанный на непрерывных функциях. Линейная регрессия универсальна в том смысле, что она имеет возможность запускаться с одной входной переменной (простая линейная регрессия) или с зависимостью от нескольких переменных (множественная регрессия). Суть этого алгоритма заключается в назначении оптимальных весов для переменных, чтобы создать линию (ax + b), которая будет использоваться для прогнозирования вывода. Посмотрите видео с более наглядным объяснением.

Теперь, когда вы поняли суть линейной регрессии, давайте пойдем дальше и реализуем ее на Python.

Начало работы

Визуализация

Реализация

Логистическая регрессия

Логистическая регрессия – алгоритм контролируемой классификации. Она позволяет предсказывать значения непрерывной зависимой переменной на интервале от 0 до 1. Когда начинаешь изучать логистическую регрессию, складывается впечатление, что это своего рода узкоспециализированная вещь, и поэтому не уделяешь ей должного внимания. И лишь позже понимаешь, что очень ошибался. Некоторые из основных аспектов логистической регрессии лежат в основе других важных алгоритмов машинного обучения, например, для повышения точности прогноза нейросетевой модели . Имейте это в виду и смотрите видео ниже.

Теперь попробуем реализовать этот алгоритм на Python.

Начало работы

Визуализация

Реализация

Деревья решений

Метод деревьев решений (decision trees) – это один из наиболее популярных методов решения задач классификации и прогнозирования. Опыт показывает, что чаще всего данный алгоритм используется именно для классификации. На входе модель принимает набор атрибутов, характеризующих некую сущность, а затем спускается по дереву, тестируя их в зависимости от того, какие значения может принимать целевая функция. Таким образом, классификация каждого нового случая происходит при движении вниз до листа, который и укажет нам значение целевой функции в каждом конкретном случае. Деревья принятия решений становятся все более популярными и могут служить очень сильным инструментом для аналитики данных, особенно в сочетании с простыми методами композиции, такими как случайный лес, бустинг и бэггинг. И снова просмотрите видео ниже, чтобы более подробно изучить базовую функциональность деревьев решений.

А теперь по традиции перейдем к практике и реализуем данный алгоритм на Python.

Начало работы

Реализация

Визуализация

Метод опорных векторов

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

Этот вектор установлен по умолчанию и часто визуализируется как линейный, однако это не всегда так. Вектор также может принимать нелинейный вид, если тип ядра изменен от типа (по умолчанию) «гауссовского» или линейного. Несколькими предложениями данный алгоритм не опишешь, поэтому просмотрите учебное видео ниже.

И по традиции реализация на Python.

Начало работы

Реализация

Визуализация

Метод k-ближайших соседей

K-Nearest Neighbors , или KNN, представляет собой контролируемый алгоритм обучения, который используется преимущественно для решения задач классификации. Данный алгоритм наблюдает за разными центрами (центроидами) и сравнивает расстояние между ними, используя для этого различные функции (обычно евклидово расстояние). Затем определяется, к какому классу принадлежит большинство ближайших объектов обучающей выборки – к этому классу относится и неизвестный объект. Посмотрите видео для того, чтобы увидеть что происходит за кулисами данного алгоритма.

Теперь, когда вы поняли общую концепцию метода k-ближайших соседей, давайте напишем реализацию на Python.

Начало работы

Визуализация

Реализация

Случайный лес

Случайный лес — популярный алгоритм контролируемого обучения, заключающийся в использовании комитета (ансамбля) решающих деревьев. «Ансамбль» означает, что он берет кучу «слабых учеников» и объединяет их, чтобы сформировать один сильный предиктор. «Слабые ученики» — это все случайные реализации деревьев решений, которые объединяются для формирования сильного предсказателя — случайного леса. Все не объяснить. Смотрите видео ниже.

Читать еще:  Бесплатное обучение для предпринимателей

Теперь мы знаем, что такое случайный лес, пришло время реализации кода на Python.

Начало работы

Реализация

Метод k-средних

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

Теперь, когда вы знаете чуть больше о кластеризации k-средних, давайте реализуем алгоритм на Python.

Начало работы

Реализация

Визуализация

Метод главных компонент

PCA (Principal Component Analysis) — алгоритм сокращения размерности, который может быть очень полезен для аналитиков. Главное — это то, что данный алгоритм может значительно уменьшить размерность данных при работе с сотнями или даже тысячами различных функций. Данный алгоритм не контролируется, но пользователь должен анализировать результаты и следить за тем, чтобы сохранялось 95% или около этой цифры первоначального набора данных. Не забудьте про видео, ведь оно расскажет намного больше об этом интересном алгоритме.

Реализация на Python.

Начало работы

Реализация

Подводим итоги

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

Почему Python используется для машинного обучения?

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

Python считается самым простым языком программирования — именно поэтому он самый распространенный. Посмотрите на график ниже. Он предсказывает, какие языки будут использоваться чаще всего к 2020 году:

Помимо простоты, у Python есть еще один плюс — он довольно легко взаимодействует с другими языками, особенно с C и C++. Теперь давайте разберемся, почему Python активно используется в машинном обучении.

Почему Python так часто используется в машинном обучении?

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

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

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

Согласно исследованию Hackerrank Stat 2018 , «среди работодателей самым востребованным языком программирования является JavaScript, однако среди разработчиков наибольшую любовь завоевал Python, о чем говорит наше исследование Love-Hate index».

Большой выбор библиотек и фреймворков

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

Давайте обсудим, какие именно библиотеки и фреймворки Python используются в машинном обучении. В научных расчетах используется Numpy, в продвинутых вычислениях — SciPy, в извлечении и анализе данных — SciKit-Learn. Эти библиотеки работают в таких фреймворках, как TensorFlow, CNTK и Apache Spark.

Существует фреймворк для Python, разработанный специально для машинного обучения — это PyTorch.

Понятность

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

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

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

Обширная поддержка

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

Гибкость

Следующее преимущество Python в машинном обучении состоит в его гибкости: например, у разработчика есть выбор между объектно-ориентированным подходом и скриптами. Python помогает объединять различные типы данных. Более того, Python особенно удобен для тех разработчиков, которые большую часть кода пишут с помощью IDE.

Популярность

Как уже отметили, Python набрал популярность благодаря простой и понятной структуре синтаксиса. Именно поэтому на рынке много Python-разработчиков, которые готовы работать над проектами, связанными с машинным обучением.

Заключение

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

Обзор библиотек для машинного обучения на Python

Описание [ править ]

Scikit-learn [1] — библиотека машинного обучения на языке программирования Python с открытым исходным кодом. Содержит реализации практически всех возможных преобразований, и нередко ее одной хватает для полной реализации модели. В данной библиотеки реализованы методы разбиения датасета на тестовый и обучающий, вычисление основных метрик над наборами данных, проведение Кросс-валидация [на 28.01.19 не создан] . В библиотеке также есть основные алгоритмы машинного обучения: линейной регрессии [на 28.01.19 не создан] и её модификаций Лассо, гребневой регрессии, опорных векторов [на 28.01.19 не создан] , решающих деревьев и лесов и др. Есть и реализации основных методов кластеризации. Кроме того, библиотека содержит постоянно используемые исследователями методы работы с признаками: например, понижение размерности методом главных компонент [на 28.01.19 не создан] . Частью пакета является библиотека imblearn [2] , позволяющая работать с разбалансированными выборками и генерировать новые значения.

Читать еще:  Real time magic обучение unreal engine

Примеры кода [ править ]

Линейная регрессия [ править ]

Разбиение датасета на тренировочный и тестовый:

Построение и обучение модели:

Построение графика прямой, получившейся в результате работы линейной регрессии:

Логистическая регрессия [ править ]

Вывод первых трех тренировочных данных для визуализации:

Разбиение датасета на тренировочный и тестовый:

Построение и обучение модели:

Перцептрон [ править ]

Разбиение датасета на тренировочный и тестовый:

Построение и обучение модели:

Метрический классификатор и метод ближайших соседей [ править ]

Дерево решений и случайный лес [ править ]

Обработка естественного языка [ править ]

Вывод первых трех строк первого тренивочного файла и его класса:

Построение и обучение двух моделей. Первая на основе Байесовской классификации [на 28.01.19 не создан] , а вторая использует метод опорных векторов:

Кросс-валилация и подбор параметров [ править ]

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

Метод опорных векторов (SVM) [ править ]

Разбиение датасета на тестовый и тренировочный:

Построение и обучение модели:

EM-алгоритм [ править ]

Уменьшение размерности [ править ]

Описание [ править ]

Tensorflow [3] — библиотека, разработанная корпорацией Google для работы с тензорами, используется для построения нейронных сетей. Поддержка вычислений на видеокартах имеет поддержку языка программирования C++. На основе данной библиотеки строятся более высокоуровневые библиотеки для работы с нейронными сетями на уровне целых слоев. Так, некоторое время назад популярная библиотека Keras стала использовать Tensorflow как основной бэкенд для вычислений вместо аналогичной библиотеки Theano. Для работы на видеокартах NVIDIA используется библиотека cuDNN. Если вы работаете с картинками (со сверточными нейросетями), скорее всего, придется использовать данную библиотеку.

Примеры кода [ править ]

Сверточная нейронная сеть [ править ]

Реализация сверточной нейронной сети для классификации цифр из датасета MNIST:

Описание [ править ]

Keras [4] — библиотека для построения нейронных сетей, поддерживающая основные виды слоев и структурные элементы. Поддерживает как рекуррентные, так и сверточные нейросети, имеет в своем составе реализацию известных архитектур нейросетей (например, VGG16). Некоторое время назад слои из данной библиотеки стали доступны внутри библиотеки Tensorflow. Существуют готовые функции для работы с изображениями и текстом. Интегрирована в Apache Spark с помощью дистрибутива dist-keras. Данная библиотека позволяет на более высоком уровне работать с нейронными сетями. В качестве библиотеки для бэкенда может использоваться как Tensorflow, так и Theano.

Примеры кода [ править ]

Сверточная нейронная сеть [ править ]

Реализация сверточной нейронной сети для классификации текста:

Почему Python используется для машинного обучения?

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

Python считается самым простым языком программирования — именно поэтому он самый распространенный. Посмотрите на график ниже. Он предсказывает, какие языки будут использоваться чаще всего к 2020 году:

Помимо простоты, у Python есть еще один плюс — он довольно легко взаимодействует с другими языками, особенно с C и C++. Теперь давайте разберемся, почему Python активно используется в машинном обучении.

Почему Python так часто используется в машинном обучении?

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

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

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

Согласно исследованию Hackerrank Stat 2018, «среди работодателей самым востребованным языком программирования является JavaScript, однако среди разработчиков наибольшую любовь завоевал Python, о чем говорит наше исследование Love-Hate index».

Большой выбор библиотек и фреймворков

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

Давайте обсудим, какие именно библиотеки и фреймворки Python используются в машинном обучении. В научных расчетах используется Numpy, в продвинутых вычислениях — SciPy, в извлечении и анализе данных — SciKit-Learn. Эти библиотеки работают в таких фреймворках, как TensorFlow, CNTK и Apache Spark.

Существует фреймворк для Python, разработанный специально для машинного обучения — это PyTorch.

Понятность

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

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

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

Обширная поддержка

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

Гибкость

Следующее преимущество Python в машинном обучении состоит в его гибкости: например, у разработчика есть выбор между объектно-ориентированным подходом и скриптами. Python помогает объединять различные типы данных. Более того, Python особенно удобен для тех разработчиков, которые большую часть кода пишут с помощью IDE.

Читать еще:  Как создать программу обучения

Популярность

Как уже отметили, Python набрал популярность благодаря простой и понятной структуре синтаксиса. Именно поэтому на рынке много Python-разработчиков, которые готовы работать над проектами, связанными с машинным обучением.

Заключение

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

Библиотеки Python, необходимые для машинного обучения

Перевод статьи Шуби Астаны «Essential libraries for Machine Learning in Python».

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

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

Одно из самых больших преимуществ Python – широкий спектр библиотек.

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

Машинное обучение во многом основано на математике. В частности, на математической оптимизации, статистике и теории вероятности. Библиотеки Python помогают исследователям / математикам «заниматься машинным обучением», даже не имея значительных познаний в разработке.

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

Scikit-learn для работы с классическими алгоритмами машинного обучения

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

Она создана на основе двух главных библиотек Python – NumPy и SciPy. В Scikit-learn добавлен набор алгоритмов для распространенных задач машинного обучения и добычи данных, включая кластеризацию, регрессию и классификацию. Даже такие задачи как преобразование данных и выбор функций могут быть реализованы с помощью всего нескольких строк.

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

Tensorflow для глубокого обучения

Если вы занимаетесь машинным обучением, то наверняка испытывали, реализовывали или хотя бы слышали о некоторых формах алгоритма глубокого обучения. Являются ли они необходимыми? Не всегда. Классные ли они, если сделаны правильно? Да!

Касательно Tensorflow любопытно то, что при написании программы на Python можно компилировать и запускать программу как на CPU, так и на GPU. Таким образом для запуска на GPU вам не приходится писать на C++ или на уровне CUDA.

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

Theano – также для глубокого обучения

Theano это еще одна хорошая библиотека Python для алгоритма числового расчета, похожая на NumPy. Она позволяет вам эффективно определять, оптимизировать и вычислять математические выражения, содержащие многомерные массивы.

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

Последний релиз библиотеки Theano вышел в прошлом, 2017 году. Это версия 1.0.0 со множеством новых функций, изменениями интерфейса и прочими улучшениями.

Pandas для извлечения и подготовки данных

Pandas это очень популярная библиотека, предоставляющая высокоуровневые структуры данных, простые в использовании и интуитивно понятные.

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

Pandas может с легкостью извлекать данные из различных источников, таких как базы данных SQL, файлы CSV, Excel, JSON, и манипулировать этими данными для осуществления операций с ними.

Matplotlib для визуализации данных

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

Как же извлекать пользу из всех имеющихся у вас данных? Как вдохновлять бизнес-аналитиков и рассказывать им истории, полные «озарений»?

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

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

Эта библиотека поддерживает GUI-бэкенд во всех операционных системах, а также может экспортировать графики в распространенных форматах (PDF, SVG, JPG, PNG, BMP, GIF).

Seaborn – еще одна библиотека для визуализации данных

Seaborn это популярная библиотека визуализации, которая строит графики на основе Matplotlib. Это библиотека более высокого уровня, а значит, с ее помощью проще генерировать определенные виды графиков, в том числе тепловые карты, временные ряды и скрипичные графики.

Заключение

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

Если считаете, что в этом списке должны быть и другие библиотеки – поделитесь в комментариях!

Ссылка на основную публикацию
Adblock
detector