Какой набор инструментов чаще всего используется в машинном обучении
Перейти к содержимому

Какой набор инструментов чаще всего используется в машинном обучении

  • автор:

Введение в машинное обучение

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

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

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

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

1.2 Типы задач машинного обучения

Все задачи, решаемые с помощью ML, относятся к одной из следующих категорий.

1)Задача регрессии – прогноз на основе выборки объектов с различными признаками. На выходе должно получиться вещественное число (2, 35, 76.454 и др.), к примеру цена квартиры, стоимость ценной бумаги по прошествии полугода, ожидаемый доход магазина на следующий месяц, качество вина при слепом тестировании.

2)Задача классификации – получение категориального ответа на основе набора признаков. Имеет конечное количество ответов (как правило, в формате «да» или «нет»): есть ли на фотографии кот, является ли изображение человеческим лицом, болен ли пациент раком.

3)Задача кластеризации – распределение данных на группы: разделение всех клиентов мобильного оператора по уровню платёжеспособности, отнесение космических объектов к той или иной категории (планета, звёзда, чёрная дыра и т. п.).

4)Задача уменьшения размерности – сведение большого числа признаков к меньшему (обычно 2–3) для удобства их последующей визуализации (например, сжатие данных).

5)Задача выявления аномалий – отделение аномалий от стандартных случаев. На первый взгляд она совпадает с задачей классификации, но есть одно существенное отличие: аномалии – явление редкое, и обучающих примеров, на которых можно натаскать машинно обучающуюся модель на выявление таких объектов, либо исчезающе мало, либо просто нет, поэтому методы классификации здесь не работают. На практике такой задачей является, например, выявление мошеннических действий с банковскими картами.

1.3 Основные виды машинного обучения

Основная масса задач, решаемых при помощи методов машинного обучения, относится к двум разным видам: обучение с учителем (supervised learning) либо без него (unsupervised learning). Однако этим учителем вовсе не обязательно является сам программист, который стоит над компьютером и контролирует каждое действие в программе. «Учитель» в терминах машинного обучения – это само вмешательство человека в процесс обработки информации. В обоих видах обучения машине предоставляются исходные данные, которые ей предстоит проанализировать и найти закономерности. Различие лишь в том, что при обучении с учителем есть ряд гипотез, которые необходимо опровергнуть или подтвердить. Эту разницу легко понять на примерах.

Машинное обучение с учителем

Предположим, в нашем распоряжении оказались сведения о десяти тысячах московских квартир: площадь, этаж, район, наличие или отсутствие парковки у дома, расстояние от метро, цена квартиры и т. п. Нам необходимо создать модель, предсказывающую рыночную стоимость квартиры по её параметрам. Это идеальный пример машинного обучения с учителем: у нас есть исходные данные (количество квартир и их свойства, которые называются признаками) и готовый ответ по каждой из квартир – её стоимость. Программе предстоит решить задачу регрессии.

Ещё пример из практики: подтвердить или опровергнуть наличие рака у пациента, зная все его медицинские показатели. Выяснить, является ли входящее письмо спамом, проанализировав его текст. Это всё задачи на классификацию.

Машинное обучение без учителя

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

Если взять другую ситуацию, когда каждый из объектов в выборке обладает сотней различных признаков, то основной трудностью будет графическое отображение такой выборки. Поэтому количество признаков уменьшают до двух или трёх, и становится возможным визуализировать их на плоскости или в 3D. Это – задача уменьшения размерности.

1.4 Основные алгоритмы моделей машинного обучения

1. Дерево принятия решений

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

Для бизнес-процессов это дерево складывается из минимального числа вопросов, предполагающих однозначный ответ — «да» или «нет». Последовательно дав ответы на все эти вопросы, мы приходим к правильному выбору. Методологические преимущества дерева принятия решений – в том, что оно структурирует и систематизирует проблему, а итоговое решение принимается на основе логических выводов.

2. Наивная байесовская классификация

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

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

Всем, кто хоть немного изучал статистику, знакомо понятие линейной регрессии. К вариантам её реализации относятся и наименьшие квадраты. Обычно с помощью линейной регрессии решают задачи по подгонке прямой, которая проходит через множество точек. Вот как это делается с помощью метода наименьших квадратов: провести прямую, измерить расстояние от неё до каждой из точек (точки и линию соединяют вертикальными отрезками), получившуюся сумму перенести наверх. В результате та кривая, в которой сумма расстояний будет наименьшей, и есть искомая (эта линия пройдёт через точки с нормально распределённым отклонением от истинного значения).

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

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

Логистическая регрессия – это способ определения зависимости между переменными, одна из которых категориально зависима, а другие независимы. Для этого применяется логистическая функция (аккумулятивное логистическое распределение). Практическое значение логистической регрессии заключается в том, что она является мощным статистическим методом предсказания событий, который включает в себя одну или несколько независимых переменных. Это востребовано в следующих ситуациях:

  • кредитный скоринг;
  • замеры успешности проводимых рекламных кампаний;
  • прогноз прибыли с определённого товара;
  • оценка вероятности землетрясения в конкретную дату.

Это целый набор алгоритмов, необходимых для решения задач на классификацию и регрессионный анализ. Исходя из того что объект, находящийся в N-мерном пространстве, относится к одному из двух классов, метод опорных векторов строит гиперплоскость с мерностью (N – 1), чтобы все объекты оказались в одной из двух групп. На бумаге это можно изобразить так: есть точки двух разных видов, и их можно линейно разделить. Кроме сепарации точек, данный метод генерирует гиперплоскость таким образом, чтобы она была максимально удалена от самой близкой точки каждой группы.

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

6. Метод ансамблей

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

  • бустинг (boosting) – преобразует слабые модели в сильные посредством формирования ансамбля классификаторов (с математической точки зрения это является улучшающим пересечением);
  • бэггинг (bagging) – собирает усложнённые классификаторы, при этом параллельно обучая базовые (улучшающее объединение);
  • корректирование ошибок выходного кодирования.
  • он сводит к минимуму влияние случайностей, усредняя ошибки каждого базового классификатора;
  • уменьшает дисперсию, поскольку несколько разных моделей, исходящих из разных гипотез, имеют больше шансов прийти к правильному результату, чем одна отдельно взятая;
  • исключает выход за рамки множества: если агрегированная гипотеза оказывается вне множества базовых гипотез, то на этапе формирования комбинированной гипотезы оно расширяется при помощи того или иного способа, и гипотеза уже входит в него.

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

Кластеризировать объекты можно по разным алгоритмам. Чаще всего используют следующие:

  • на основе центра тяжести треугольника;
  • на базе подключения;
  • сокращения размерности;
  • плотности (основанные на пространственной кластеризации);
  • вероятностные;
  • машинное обучение, в том числе нейронные сети.

8. Метод главных компонент (PCA)

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

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

9. Сингулярное разложение

В линейной алгебре сингулярное разложение, или SVD, определяется как разложение прямоугольной матрицы, состоящей из комплексных или вещественных чисел. Так, матрицу M размерностью [m*n] можно разложить таким образом, что M = UΣV, где U и V будут унитарными матрицами, а Σ – диагональной.

Одним из частных случаев сингулярного разложения является метод главных компонент. Самые первые технологии компьютерного зрения разрабатывались на основе SVD и PCA и работали следующим образом: вначале лица (или другие паттерны, которые предстояло найти) представляли в виде суммы базисных компонент, затем уменьшали их размерность, после чего производили их сопоставление с изображениями из выборки. Современные алгоритмы сингулярного разложения в машинном обучении, конечно, значительно сложнее и изощрённее, чем их предшественники, но суть их в целом нем изменилась.

10. Анализ независимых компонент (ICA)

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

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

1.5 Примеры применения в реальной жизни

Пример 1. Диагностика заболеваний

Пациенты в данном случае являются объектами, а признаками – все наблюдающиеся у них симптомы, анамнез, результаты анализов, уже предпринятые лечебные меры (фактически вся история болезни, формализованная и разбитая на отдельные критерии). Некоторые признаки – пол, наличие или отсутствие головной боли, кашля, сыпи и иные – рассматриваются как бинарные. Оценка тяжести состояния (крайне тяжёлое, средней тяжести и др.) является порядковым признаком, а многие другие – количественными: объём лекарственного препарата, уровень гемоглобина в крови, показатели артериального давления и пульса, возраст, вес. Собрав информацию о состоянии пациента, содержащую много таких признаков, можно загрузить её в компьютер и с помощью программы, способной к машинному обучению, решить следующие задачи:

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

Пример 2. Поиск мест залегания полезных ископаемых

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

Для обучающей выборки берутся 2 вида прецедентов: районы, где точно присутствуют месторождения полезных ископаемых, и районы с похожими характеристиками, где эти ископаемые не были обнаружены. Но добыча редких полезных ископаемых имеет свою специфику: во многих случаях количество признаков значительно превышает число объектов, и методы традиционной статистики плохо подходят для таких ситуаций. Поэтому при машинном обучении акцент делается на обнаружение закономерностей в уже собранном массиве данных. Для этого определяются небольшие и наиболее информативные совокупности признаков, которые максимально показательны для ответа на вопрос исследования – есть в указанной местности то или иное ископаемое или нет. Можно провести аналогию с медициной: у месторождений тоже можно выявить свои синдромы. Ценность применения машинного обучения в этой области заключается в том, что полученные результаты не только носят практический характер, но и представляют серьёзный научный интерес для геологов и геофизиков.

Пример 3. Оценка надёжности и платёжеспособности кандидатов на получение кредитов

С этой задачей ежедневно сталкиваются все банки, занимающиеся выдачей кредитов. Необходимость в автоматизации этого процесса назрела давно, ещё в 1960–1970-е годы, когда в США и других странах начался бум кредитных карт.

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

Для машинного обучения составляется выборка, в которую входят кредитополучатели, чья кредитная история известна. Все заёмщики делятся на классы, в простейшем случае их 2 – «хорошие» заёмщики и «плохие», и положительное решение о выдаче кредита принимается только в пользу «хороших».

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

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

  • Машинное обучение
  • Введение в алгоритмы
  • Курс по ML

TОП-5 инструментов для машинного обучения

DataReview.info

На протяжении нескольких месяцев мы с вами активно обсуждали теоретические и практические аспекты Machine Learning. Сегодня настал момент подвести своеобразный «промежуточный итог» и рассказать о пяти программных продуктах, которые непременно помогут специалистам в решении стандартных – и не очень – задач машинного обучения.

Microsoft Azure ML

Microsoft Azure Machine Learning – инфраструктура облачных вычислений от компании Microsoft, представляющая собой обновленную версию MS Azure. В контексте машинного обучения инструмент представляет собой платформу, которая позволяет вне зависимости от качества данных строить решения прямо «на облаке» и с легкостью создавать на их основе BI-приложения. При этом разработчики заверяют, что с Azure ML может разобраться даже старшеклассник – и призывают экспериментировать, ведь концепция облачных вычислений не требует особенных вычислительных мощностей «на месте».

Такая «красота», естественно, не задаром – и платить придется не один раз, правда, и совсем немного – меньше 50 центов за час эксперимента и 75 центов за час работы над прогнозом. Azure ML

RapidMiner

RapidMiner – чуть ли не самый известный инструмент анализа данных, который прежде был известен под говорящим названием YALE (Yet Another Learning Environment – еще одна среда обучения). ПО разрабатывалось как раз в целях машинного обучения, так что на сегодня многие консервативные пользователи очевидно хорошо знакомы с его преимуществами. Среди них – удобный графический интерфейс с функцией «перетаскивания» потоков данных, которые, кстати говоря, выгружаются из самых разнообразных форматов, включая PDF.

Кроме того, у инструмента огромные возможности для расширения функционала – а еще платформа RapidMiner Extensions позволяет отдельным разработчикам вносить вклад в развитие среды, загружая и выставляя на суд общественности новые алгоритмы. Однако, как водится, за красоту, перспективу и бренд часто нужно платить – за полную версию ПО придется отдать от 999 долларов, а бесплатная Starter Edition налагает ограничения на обрабатываемый объем данных – до 1 Гб. RapidMiner

Apache Mahout

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

ПО с открытым кодом ориентировано, главным образом, на алгоритмы совместной фильтрации, кластеризации и классификации – и, хотя в Hadoop они реализуются при помощи ключевой технологии map/reduce, сторонних разработчиков никто не ограничивает: наоборот, фонд активно поощряет их к созданию алгоритмов без привязки к Hadoop.

Все это прекрасно, но до всеобъемлющего инструмента Mahout еще далеко – алгоритмы продолжают создаваться и добавляться, но не так быстро, как того хотелось бы пользователям, которые не всегда готовы довольствоваться стандартными решениями. Apache Mahout

Caffe

Известному инструменту (если быть точнее, библиотеке) Caffe мы в свое время посвятили целую статью. Сегодня напоминаем, что Caffe представляет собой библиотеку на языке C++, реализующую алгоритмы глубокого обучения, которая была разработана (и продолжает разрабатываться сторонними разработчиками, вносящими свою лепту в развитие библиотеки) с упором на такие важные характеристики, как поддержание уровня чистоты данных, их читабельность и скорость обработки.

Открытый код, поддержка Python и интеграция с MATLAB, а также высокая скорость работы (эталонные 5 и 2 миллисекунды на обучение и тестирование одного изображения соответственно) позволили Caffe найти себе широкое применение, в том числе, и в коммерческой среде. Конечно, не обходится и без ложки дегтя: не всякая реализация работает одновременно быстро и достаточно стабильно; но, если решить дилемму «скорость vs надежность» в пользу скорости, библиотеке нет равных. Caffe

OpenCV

OpenCV (Open Source Computer Vision) – еще одна библиотека с открытым кодом, реализованная на C/C++ и на текущий момент находящаяся в процессе «переноса» на другие популярные языки, включая Python, Java и MATLAB. OpenCV предлагает широкий инструментарий для работы с визуализацией – в том числе, и в целях машинного обучения, причем сегодня она работает с большинством операционных систем – включая мобильные iOS и Android.

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

Автор: Елизавета Филиппова

Топ-10 инструментов Python для машинного обучения и data-science

Python — один из наиболее популярных языков программирования. Причина — в его универсальности, ведь это мультитул с возможностью «заточки» под самые разные нужды. Сегодня мы публикуем подборку с описанием 10 полезных для data-scientist и специалиста по ИИ инструментов.

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

Skillbox рекомендует: Практический курс «Python-разработчик с нуля».
Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».

Но хватит описывать достоинства Python, давайте наконец приступим к нашей подборке.

Инструменты машинного обучения

Shogun — решение с большим количеством возможностей по машинному обучению, с фокусировкой на Support Vector Machines (SVM). Написан он на С++. Shogun предлагает широкий спектр унифицированных методов machine learning, в основе которых — надежные и доступные пониманию алгоритмы.

Shogun качественно задокументирован. Из недостатков можно назвать относительную сложность работы с API. Распространяется бесплатно.

Keras — высокоуровневый API нейросетей, предоставляющий библиотеку глубокого обучения для Python. Это один из лучших инструментов для тех, кто начинает свой путь в качестве специалиста по машинному обучению. По сравнению с другими библиотеками Keras гораздо более понятен. С ним могут работать такие популярные фреймворки Python, как TensorFlow, CNTK или Theano.

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

Scikit-Learn — open-source инструмент для дата-майнинга и анализа. Его можно использовать и в data-science. API инструмента удобный и практичный, его можно использовать для создания большого количества сервисов. Одно из главных достоинств — скорость работы: Scikit-Learn просто бьет рекорды. Главные возможности инструмента — регрессия, кластеринг, выбор модели, препроцессинг, классификация.

Pattern — модуль веб-майнинга, который предоставляет возможности для сбора данных, обработки языка, машинного обучения, анализа сети и визуализаций разного рода. Он отлично задокументирован и поставляется с 50 кейсами, а также 350 юнит-тестами. И он бесплатен!

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

Инструменты data-science

SciPy — базирующаяся на Python экосистема open-source программного обеспечения для математиков, специалистов по ИТ, инженеров. В SciPy используются различные пакеты вроде NumPy, IPython, Pandas, что позволяет использовать популярные библиотеки для решения математических и научных задач. Этот инструмент — отличная возможность, если вам нужно показать данные серьезных вычислений. И он бесплатен.

Dask — решение обеспечивающее возможность параллелизма данных в аналитике благодаря интеграции с такими пакетами, как NumPy, Pandas и Scikit-Learn. C Dask вы можете быстро распараллелить существующий код, изменив лишь несколько строк. Дело в том, что его DataFrame такой же, как в библиотеке Pandas, а работающий с ним NumPy имеет возможность распараллеливать задания, написанные на чистом Python.

Numba — компилятор с открытым исходным кодом, который использует инфраструктуру компилятора LLVM для компиляции синтаксиса Python в машинный код. Основным преимуществом работы с Numba в приложениях для научных исследований можно назвать его скорость при использовании кода с массивами NumPy. Как и Scikit-Learn, Numba подходит для создания приложений машинного обучения. Стоит отметить, что решения на основе Numba будут особенно быстро работать на оборудовании, созданном для приложений машинного обучения или научных исследований.

High-Performance Analytics Toolkit (HPAT) — compiler-based фреймворк для больших данных. Он автоматически масштабирует аналитические программы, равно как и программы машинного обучения, до уровня производительности облачных сервисов и может оптимизировать определенные функции с помощью декоратора jit.

Cython — лучший выбор для работы с математическим кодом. Cython — это транслятор исходного кода на основе Pyrex, который позволяет вам легко писать C-расширения для Python. Более того, с добавлением поддержки интеграции с IPython / Jupyter код, написанный с использованием Cython, можно использовать в Jupyter при помощи встроенных аннотаций, ровно так же, как и любой другой код Python.

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

  • Онлайн-курс«Python-разработчик с нуля».
  • Практический годовой курс «PHP-разработчик с нуля до PRO».
  • Образовательный онлайн-курс «Профессия Java-разработчик».

Инструменты машинного обучения для начинающих

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

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

  1. Сбор и обработка данных.
  2. Обучение и оценка модели.
  3. Использование обученной модели.

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

Языки программирования для машинного обучения

Нам понадобятся готовые библиотеки и фреймворки для машинного обучения. Мы ведь хотим научиться ездить на машине, а не конструировать её. Если вы пытаетесь подобрать «тот, самый подходящий» язык, то не переживайте: в любом современном языке программирования уже написаны такие инструменты, поэтому берите любой, который нравится (или знаете).

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

Инструменты для сбора, обработки и визуализации данных

Здесь мы собираем данные с различных сайтов и создаём датасет, который потом используем для обучения алгоритма. Сбор данных с сайтов ещё называют веб-скрейпингом (ранее мы подробно рассказывали об инструментах для веб-скрейпинга).

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

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

После того как мы почистили наш датасет, нужно поделить его на 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), подсвечивать узлы для отслеживания входящих данных, отображать несколько графов одновременно. Словом, всё, чтобы мониторить работу было легко и удобно.

Какие ещё инструменты машинного обучения вы бы посоветовали? Расскажите в комментариях!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *