11 must-have алгоритмов машинного обучения для Data Scientist

Оглавление (нажмите, чтобы открыть):

Как выбирать алгоритмы для машинного обучения

Разновидности машинного обучения

Обучение с учителем

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

Здесь и далее будут описаны методы и алгоритмы, используемые в Azure.

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

  • Классификация. Когда данные используются для прогнозирования категории, обучение с учителем называется классификацией. В этом случае происходит назначение изображения, например «кот» или «собака». Когда есть только два варианта выбора, это называется двухклассовой классификацией. Когда категорий больше, это называется многоклассовой классификацией.
  • Регрессия. Когда прогнозируется значение, например, в случае с курсом акций, обучение с учителем называется регрессией.
  • Фильтрация выбросов. Иногда нужно определить необычные точки данных. Например, при обнаружении мошенничества под подозрение попадают любые странные закономерности трат средств с кредитной карты. Возможных вариантов так много, а примеров для обучения так мало, что практически невозможно узнать, как будет выглядеть мошенническая деятельность. При фильтрации выбросов просто изучается нормальная активность (с помощью архива допустимых транзакций) и находятся все операции с заметными отличиями.

Обучение без учителя

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

Обучение с подкреплением

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

Советы по выбору алгоритма

Точность

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

Время обучения

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

Линейность

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

Ограничение нелинейных классов — использование алгоритма линейной классификации снижает точность

Данные с нелинейной закономерностью — при использовании метода линейной регрессии возникают более серьезные ошибки, чем это допустимо

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

Количество параметров

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

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

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

Количество признаков

В некоторых типах данных признаков может быть гораздо больше, чем объектов. Это обычно происходит с данными из области генетики или с текстовыми данными. Большое количество признаков препятствует работе некоторых алгоритмов обучения, из-за чего время обучения невероятно растягивается. Для подобных случаев хорошо подходит метод опорных векторов (см. ниже).

Особые случаи

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

• — демонстрирует отличную точность, короткое время обучения и использование линейности.
○ — демонстрирует отличную точность и среднее время обучения.

Алгоритм Точность Время обучения Линейность Параметры Примечание
Двухклассовая классификация
Логистическая регрессия 5
Лес деревьев решений 6
Джунгли деревьев решений 6 Низкие требования к памяти
Улучшенное дерево принятия решений 6 Высокие требования к памяти
Нейронная сеть 9 Возможна дополнительная настройка
Однослойный перцептрон 4
Метод опорных векторов 5 Хорошо подходит для больших наборов признаков
Локальные глубинные методы опорных векторов 8 Хорошо подходит для больших наборов признаков
Байесовские методы 3
Многоклассовая классификация
Логистическая регрессия 5
Лес деревьев решений 6
Джунгли деревьев решений 6 Низкие требования к памяти
Нейронная сеть 9 Возможна дополнительная настройка
Один против всех См. свойства выбранного двухклассового метода
Многоклассовая классификация
Регрессия
Линейная 4
Байесова линейная 2
Лес деревьев решений 6
Улучшенное дерево принятия решений 5 Высокие требования к памяти
Быстрые квантильные регрессионные леса 9 Прогнозирование распределений, а не точечных значений
Нейронная сеть 9 Возможна дополнительная настройка
Пуассона 5 Технически логарифмический. Для подсчета прогнозов
Порядковая Для прогнозирования рейтинга
Фильтрация выбросов
Методы опорных векторов 2 Отлично подходит для больших наборов признаков
Фильтрация выбросов на основе метода главных компонент 3 Отлично подходит для больших наборов признаков
Метод k-средних 4 Алгоритм кластеризации

Примечания к алгоритму

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

Как мы уже говорили, линейная регрессия рассматривает данные линейно (или в плоскости, или в гиперплоскости). Это удобная и быстрая «рабочая лошадка», но для некоторых проблем она может быть чересчур простой. Здесь вы найдете руководство по линейной регрессии.

Данные с линейным трендом

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

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

Логистическая регрессия для двухклассовых данных всего с одним признаком — граница класса находится в точке, где логистическая кривая близка к обоим классам

Деревья, леса и джунгли

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

Дерево принятия решений подразделяет пространство признаков на области с примерно одинаковыми значениями

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

Улучшенные деревья принятия решений ограничивают количество разделений и распределение точек данных в каждой области, чтобы избежать ложных связей. Алгоритм создает последовательность деревьев, каждое из которых исправляет допущенные ранее ошибки. В результате мы получаем высокую степень точности без больших затрат памяти. Полное техническое описание смотрите в научной работе Фридмана.

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

Нейронные сети и восприятие

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

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

Границы, изучаемые нейронными сетями, бывают сложными и хаотичными

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

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

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

Стандартная граница класса опорной векторной машины увеличивает поле между двумя классами

Еще один продукт от Microsoft Research — двухклассовые локальные глубинные методы опорных векторов. Это нелинейный вариант методов опорных векторов, который отличается скоростью и эффективностью памяти, присущей линейной версии. Он идеально подходит для случаев, когда линейный подход не дает достаточно точных ответов. Чтобы обеспечить высокую скорость, разработчики разбивают проблему на несколько небольших задач линейного метода опорных векторов. Подробнее об этом читайте в полном описании.

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

Байесовские методы

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

Кстати, точечные машины Байеса были разработаны в Microsoft Research. В их фундаменте лежит великолепная теоретическая работа. Если вас заинтересует эта тема, читайте статью в MLR и блог Криса Бишопа (Chris Bishop).

Особые алгоритмы

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

Выявление аномалий на основе PCA — огромное множество данных попадает под стереотипное распределение; под подозрение попадают точки, которые сильно отклоняются от этого распределения

Набор данных разделяется на пять кластеров по методу k-средних

Также есть многоклассовый классификатор «один против всех», который разбивает проблему классификации N-класса на двухклассовые проблемы класса N-1. Точность, время обучения и свойства линейности зависят от используемых двухклассовых классификаторов.

Два двухклассовых классификатора формируют трехклассовый классификатор

Кроме того, Azure предлагает доступ к мощной платформе машинного обучения под названием Vowpal Wabbit. VW отказывается от категоризации, поскольку может изучить проблемы классификации и регрессии и даже обучаться от частично помеченных данных. Вы можете выбрать любой из алгоритмов обучения, функций потерь и алгоритмов оптимизации. Эта платформа отличается эффективностью, возможностью параллельного выполнения и непревзойденной скоростью. Она без труда справляется с большими наборами данных. VW была запущена Джоном Лэнгфордом (John Langford), специалистом из Microsoft Research, и является болидом «Формулы-1» в океане серийных автомобилей. Не каждая проблема подходит для VW, но если вы считаете, что это верный для вас вариант, то затраченные усилия обязательно окупятся. Также платформа доступна в виде автономного открытого исходного кода на нескольких языках.

Big Data. Machine Learning. Data Science.

Блог компании Даталитика. Интересное об искусственном интеллекте, машинном обучении, больших данных и ИТ-консалтинге

Подписаться на этот блог

Подписаться на обновления

Подготовка данных для алгоритмов машинного обучения

  • Получить ссылку
  • Facebook
  • Twitter
  • Pinterest
  • Электронная почта
  • Другие приложения

Описание стека и некоторые вводные

В нашей статье мы будем использовать язык программирования python с сопутствующими ему библиотеки (sklearn, matplotlib, seaborn) и в качестве среды для работы jupyter notebook. Цель текущего поста — показать общие подходы к подготовке данных. То есть, те манипуляции, которые необходимо совершить перед загрузкой данных в модель машинного обучения. В идеальном мире у вас будет абсолютно чистый датасет без выбросов или пропущенных значений. Однако в реальном мире такие наборы данных встречаются крайне редко.
Далее будем рассматривать данные из Kaggle: «Mental Health in Tech Survey«.

Первый взгляд на датасет и понимание его специфики

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

Это даст нам первое представление о том, что есть наши данные. Далее посмотрим на размеры наших табличных данных. Выполнив построчно код ниже

Также было бы неплохо увидеть информацию о количестве каждого уникального значения для каждого столбца в наборе данных:

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

  • Столбец «age» содержит людей, которые еще не родились (отрицательные числа).
  • Столбец «age» содержит детей (например, 5-летнего возраста), которые вряд ли будут проводить опрос о своем рабочем месте.
  • Столбец «age» содержит возраст в 99999999999 лет
  • Существует 49 различных значений для «gender». Для примера, «Male» и «male» обозначают одно и то же, но в рассматриваются как две разные категории.
  • self_employed и work_interfere содержат несколько пропущенных полей.

Разделение на обучающую выборку и целевую переменную

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

Обработка пропусков в данных

Зачастую не существует шаблонных подходов к этой задаче, поскольку подходы во многом зависит от контекста и характера данных. Например, являются ли данные случайными пропусками или же есть скрытая связь между пропусками и некоторым другим записями в обучающем примере?
Один из способов простых способов решения этой проблемы — просто игнорировать или удалять строки, в которых отсутствуют данные, выбрасывая их из нашего анализа. Однако этот метод может быть плох из-за потери информации.
Еще один способ — это заполнение пропусков, где мы заменяем отсутствующее значение каким-либо образом. Базовые реализации просто заменят все отсутствующие значения средним, медианным, либо же константой.
Для начала выясним, что делать с пропущенными значениями, найденными в self_employed и work_interfere. В обоих случаях столбец содержит категориальные данные.
Возьмем следующий пример, который представляет собой небольшой набор данных, содержащий три признака (погодное условие, температуру и влажность), чтобы предсказать, могу ли я играть в теннис или нет.

id weather temperature humidity play tennis?
1 cloudy 60 NaN yes
2 rainy 75 80% NaN
3 cloudy NaN 50% no
4 sunny 65 40% yes

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

Scikit-learn предоставляет реализацию для обработки пропусков

Поиск неявных дубликатов

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

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

Обнаружение выбросов

Как уже упоминалось ранее, оказалось, что для Age существуют значения, которые кажутся ошибочными. Такие как отрицательный возраст или чрезвычайно большие целые числа, могут негативно повлиять на результат работы алгоритма машинного обучения, и нам нужно будет их устранить.
Для этого возьмем нашу эвристическую оценку, в каком возрасте могут работать люди: от 14 до 100 лет. И все величины, не попадающие в этот диапазон, преобразуем в формат Not-a-Number.

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

Кодирование данных

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

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

Который возвращает следующие значения

Для кодирования этих данных, сопоставим каждое значение с числом.

Этот процесс известен как Label Encoding и sklearn может сделать это за нас.

Проблема с этим подходом заключается в том, что вы вводите порядок, который может отсутствовать в исходных данных. В нашем случае можно утверждать, что данные являются ранжированными («Very difficult» меньше «Somewhat difficult», который меньше «Very easy», который меньше «Somewhat easy»), но в большинстве своем категориальные данные не имеют порядка. Например, если у вас есть признак обозначающий вид животного, зачастую высказывание кошка больше собаки не имеет смысла. Опасность кодирования меток заключается в том, что ваш алгоритм может научиться отдавать предпочтение собак, кошкам из-за искусственных порядковых значений, введенных вами во время кодирования.

Общим решением для кодирования номинальных данных является one-hot-encoding.

Вместо того, чтобы заменять категориальное значение на числовое значение (кодирование меток), как показано ниже

id type numerical
1 cat 1
2 dog 2
3 snake 3
4 cat 1
5 dog 2
6 turtle 4
7 dog 2

Вместо этого мы создаем столбец для каждого значения и используем 1 и 0 для обозначения выражения каждого значения. Эти новые столбцы часто называются фиктивными переменными.

id type is_cat is_dog is_snake is_turtle
1 cat 1
2 dog 1
3 snake 1
4 cat 1
5 dog 1
6 turle 1
7 dog 1

Вы можете выполнить one-hot-encoding непосредственно в Pandas или использовать sklearn, хотя sklearn немного более прозрачен, поскольку one-hot-encoding из него работает только для целых значений. В нашем примере (где входные данные представляют собой строки) нам нужно сначала выполнить кодировку меток, а затем one-hot-encoding.

Нормализация тренировочных данных

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

Мастер Йода рекомендует:  Краткое руководство по Web Storage

ML алгоритмы, которые требуют нормализации данных:

  • Логистическая регрессия
  • Метод опорных векторов
  • Нейронная сеть
  • PCA

  • Деревья принятия решений (и случайные леса)
  • Градиентный бустинг
  • Наивный Байес

Примечание: приведенные выше списки ни в коем случае не являются исчерпывающими, а просто служат примером.

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

  • Температура: от 270 K до 305 K
  • Влажность: от 0 до 1 (т. е. Влажность 30%, равная 0,3)
  • День года: от 0 до 365

Когда вы смотрите на эти значения, вы интуитивно нормализуете значения. Например, вы знаете, что увеличение на 0,5 (=50%) для влажности намного более значимо, чем увеличение на 0,5 для температуры. И если мы не будем нормализовать эти данные, наш алгоритм может научиться использовать температуру в качестве основного предиктора просто потому, что масштаб является наибольшим (и, следовательно, изменения в значениях температуры наиболее значительны для алгоритма). Нормализация данных позволяет всем признакам вносить одинаковый вклад (или, что более точно, позволяет добавлять признаки в зависимости от их важности, а не их масштаба).

Алгоритм нормализации

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

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

Существует несколько различных методов нормализации данных, самые популярные из них:

Нормализация Min-max устанавливает наименьшее наблюдаемое значение равным 0, а наибольшее наблюдаемое значение — 1.

Для выполнения нормализации мы можем использовать функции в sklearn.

Несколько замечаний по этой реализации:
На практике вы можете выбрать только определенные столбцы. Например, вам не нужно нормализовать фиктивные переменные из one-hot-encoding.

Разделение данных для обучения и тестирования

Разделение данных на две подвыборки

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

[Перевод] Must-have алгоритмы машинного обучения

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

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

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

SVD — это способ вычисления упорядоченных компонентов.

11 must-have алгоритмов машинного обучения для Data Scientist

69’510 подписчиков
14’726 просмотров на пост

Полезные материалы по всему, что может быть интересно программисту.

Детальная рекламная статистика будет доступна после прохождения простой процедуры регистрации

  • Детальная аналитика 70’046 каналов
  • Доступ к 28’004’146 рекламных постов
  • Поиск по 112’332’059 постам
  • Отдача с каждой купленной рекламы
  • Графики динамики изменения показателей канала
  • Где и как размещался канал
  • Детальная статистика по подпискам и отпискам

Найдено 1677 постов

История искусственного интеллекта

1. Рождение теории 1936-1956
2. Золотой век 1956-1976
3. Кризис нейронных сетей 1969-1980
4. Первая зима 1975-1980
5. Краткое возвращение 1980-1984
6. Вторая зима 1984-1993
7. Новая эра 1993-н.в.

Java 11: в ожидании удаления Java EE, Java FX и COBRA

Поддержка CORBA, Java EE и JavaFX в Java 11 будет удалена, но на рассмотрении также находятся новые функции. Подтверждено 7 нововведений.

Видеокурс: классы в Python (ООП)

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

1. Классы и экземпляры
2. Переменные класса
3. Classmethods и Staticmethods
4. Наследование
5. Специальные методы (Magic / Dunder)
6. Декоратор property

Ссылка на плейлист: https://www.youtube.com/watch?v=ZDa-Z5JzLYM&list=PL-osiE80TeTsqhIuOqKhwlXsIBIdSeYtc

Веб-программирование: готовые наработки для сайтов

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

ТОП-20 лучших сайтов для практики этичного хакинга

Давно хотели попрактиковаться в этичном хакинге, но не знали где этим заняться? Здесь вы найдете 20 лучших сайтов для практики этичного хакинга.

Принципы функционального программирования: почему это важно

Рассказываем о принципах функционального программирования: какие у него минусы, и какие языки относятся к функциональным.

​​Как IT-специалисту зарабатывать 2 миллиона долларов

Пока планета испытывает недостаток в профессионалах в отрасли искусственного интеллекта, любому IT-специалисту можно пробовать вливаться в их ряды.

Эффективное самообучение в IT-сфере. Что мы делаем не так?

Мы все узнаем что-то новое, особенно в IT-сфере. Но что занимательно: нас никто не учил учиться, хотя именно самостоятельное обучение – истинный фундамент.

7 советов о том, как лучше учить английский язык

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

Введение в создание веб-приложений на Python

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

Погружение в СУБД

1. Проектирование схемы. Часть I
2. Проектирование схемы. Часть II
3. СУБД и приложение. Часть I
4. СУБД и приложение. Часть II
5. Приложение, устойчивое к смене СУБД
6. Агрегатные и оконные функции
7. Древовидные структуры и рекурсивные запросы
8. Совместный доступ к данным
9. Оптимизация выполнения запросов
10. Нереляционные возможности

Изучение Python: ТОП-10 вопросов разной направленности

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

Комитет по Этике
: 22791 | на пост: 13473 | ER: 59.1%
Публикации Упоминания Аналитика

Изучаем алгоритмы: полезные книги, веб-сайты, онлайн-курсы и видеоматериалы

В этой подборке представлен список книг, веб-сайтов и онлайн-курсов, дающих понимание как простых, так и продвинутых алгоритмов.

Backend для Frontend-разработчика и наоборот: осваиваем новое

Фронтендеру не помешает знать, как работает Backend, и наоборот. Сразу определитесь, чего хотите: полного перехода или простого знакомства?

Киты плывут на вписку с ЛСД
: 48983 | на пост: 19143 | ER: 39.1%
Публикации Упоминания Аналитика

После недавнего запуска самолетиков, Дуров написал у себя в канале: «это может стать воскресной традицией». Одновременно с этим астрологи объявили неделю ироничных скептиков, выступающих в жанре: «ну испугался Кремль ваших самолетиков, вон лучше у армян учитесь!» Вещают скептики почему-то не с баррикад на Манежной площади, а из недр Телеграма. Но это ладно. Главное вот что: любая массовая протестная активность — будь то Арабская весна, Евромайдан или нынешние выступления в Ереване — верхушка айсберга. Под ней находится огромный и незаметный пласт работы, который был проделан гражданским обществом ДО начала активной фазы.

У небезызвестного социолога Джина Шарпа есть книга «198 методов ненасильственного сопротивления». Помимо привычных маршей и демонстраций, так есть куча вариантов пассивного протеста: забастовки, бойкоты и т.д. И даже такие странные вещи, как «вывешивание флагов», «зажигание свечей», «ношение символов». Зачем все это нужно? Вы надели значок и дико напугали власть? Нет, конечно. Но давайте задумаемся: какую проблему должно решить гражданское общество? ПРОБЛЕМУ ДОВЕРИЯ. Она первична, а проблема авторитарной власти вторична т.к. власть лишь паразитирует на нашей разобщенности.

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

Что же делать? Выдумывать альтернативные способы. Вот взять хотя бы самолетик. Запустил сам. Увидел, что запустили другие. И вот уже уровень доверия от нулевого повысился до какой-то малой дроби. Это мелочь, конечно, но капля камень точит. Поэтому участвуйте в дурацких флешмобах. Они только на первый взгляд дурацкие.

8 книг по компьютерным сетям

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

Самые эффективные ресурсы и материалы для изучения Python

Что необходимо для изучения Python? Книги да видеоуроки? Не только. В нашей подборке вы также найдете курсы и интерактивные «обучалки».

Свежая подборка материалов из мира разработки под iOS

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

Трейдинг и машинное обучение с подкреплением

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

Профессия Data Scientist: машинное обучение

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

Первым 20 участникам курса — скидка 20%.

  • Подходит студентам без опыта
  • Преподаватели практики
  • Реальный проект для диплома
  • Зарплата от 90 000 р. в месяц

Курс идеально подойдет

Новичкам

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

Программистам

Сможете перейти в Data Science и обеспечить себе будущее. Научитесь создавать аналитические системы и алгоритмы машинного обучения, работать с нейросетями — и получите более престижную и высокооплачиваемую работу.

Менеджерам и бизнесу

Получите структурированные прикладные знания о Data Science от практиков. Научитесь использовать данные для построения прогнозов и оптимизации бизнес-процессов и переведете компанию на новый уровень развития.

Чему вы научитесь

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

Научитесь программировать на Python

это самый популярный язык для работы с данными.

Сможете работать с источниками данных

CSV, XML и XLSX, JSON.

Освоите визуализацию данных

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

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

и откроете себе двери в новые интересные проекты.

Поработаете с машинным зрением

и сможете найти себе работу в машиностроении и робототехнике.

Напишете рекомендательную систему

для реального клиента и добавите ее себе в портфолио.

Записаться на курс скидка 20% первым студентам

Программа курса

Программа курса содержит 4 основных блокa.

Аналитика для машинного обучения

Машинное обучение. Начальный уровень

Машинное обучение. Средний уровень

Получите полную программу и индивидуальную консультацию

Преподаватели

  • Валентин Пановский преподаватель МАИ, Chief Data Scientist в Skillbox
  • Михаил Овчинников ведущий инженер-программист Badoo
  • Алла Тамбовцева преподаватель НИУ ВШЭ
  • Александр Джумурат руководитель команды разработки рекомендательной системы в ivi.ru
  • Дмитрий Коробченко Deep Learning R&D, инженер и менеджер в NVIDIA
  • Алексей Мастов Deep Learning инженер в NVIDIA
  • Лидия Храмова Team Lead Data Scientist группы бизнес-моделирования в Qiwi

Как проходит обучение

Вы выполняете домашние задания и открываете доступ к новому уникальному контенту по теме. Достаточно выделить 3–5 часов в неделю.

Изучаете
тему

В курсе — полезные видеоуроки.

Выполняете домашнее задание

В том темпе, в котором вам удобно.

Общаетесь с наставником

Закрепляете знания и исправляете ошибки.

Защищаете дипломный проект

И дополняете им свое портфолио.

Ваше резюме после обучения

Аделина Ветрова специалист по машинному обучению

Ожидаемая зарплата от 90 000

Python Язык программирования общего назначения, применяется для работы с данными.

Jupyter Notebook Командная оболочка для интерактивных вычислений.

NumPy Библиотека с открытым исходным кодом для Python.

Pandas программная библиотека на Python для обработки и анализа данных.

SQL Язык программирования для работы с реляционными БД.

Matplotlib библиотека на Python для визуализации данных 2D-графикой.

SciPy библиотека для Python с открытым исходным кодом для выполнения научных и инженерных расчётов.

Scikit-Learn библиотека машинного обучения для Python.

Keras Открытая нейросетевая библиотека, написанная на Python.

TensorFlow Открытая программная библиотека для машинного обучения от Google

Ключевые навыки:

  • Python для работы с данными
  • чтение и запись данных, работа с библиотеками;
  • визуализация данных на Matplotlib;
  • работа с нейронными сетями;
  • владение методом Q-learning;
  • написание рекомендательных систем.
  • машинное обучение: регрессия, классификация, кластеризация;

Диплом Skillbox

Подтверждает успешное прохождение курса «Профессия Data Scientist: машинное обучение»

Профессия Data Scientist: машинное обучение

Стоимость обучения

Скидка 20% первым 20

Стоимость обучения 88 500

2 950 Рассрочка без первого взноса

70 800 Для первых 20 студентов

Гарантия возврата денег в течение 14 дней

Запишитесь на курс

Дата начала: 10 ноября

Осталось: 15 мест

О Skillbox

Максимально практическое обучение от лидеров digital-рынка. Курсы от компаний, работающих на реальных проектах.

После обучения вы можете трудоустроиться в эти компании или к партнёрам университета.

студентов учатся на наших курсах

студентов довольны преподавателями

выпускников получают карьерный рост

выпускников довольны курсом и результатом

Часто задаваемые вопросы

Я никогда не программировал. У меня получится?

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

Какой график обучения? Получится ли совмещать его с работой?

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

Сколько часов в неделю мне нужно будет уделять учебе?

Вы сами выбираете нагрузку и скорость, с которой будете проходить курс. Хотите — занимайтесь два часа в неделю, хотите — шесть часов в день. Но в любом случае не забывайте отдыхать.

Я могу общаться с преподавателем?

Да, у вас будет доступ к закрытому Telegram-чату. Преподаватель будет лично комментировать домашние задания и давать полезные советы. Так вы сможете перенять уникальный опыт, профессиональные знания и лайфхаки от нашего преподавателя.

Действуют ли какие-нибудь программы рассрочки?

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

А я точно смогу трудоустроиться?

Курс дает достаточно знаний, чтобы получить позицию Data Scientist. Конечно, многое будет зависеть и от вас самих.

Записаться на курс или получить консультацию

Появились вопросы по курсу?

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

г. Москва, метро Октябрьская,
Ленинский проспект, дом 6, строение 20

Выбор алгоритмов для Машинное обучение Azure Studio (классическая модель) How to choose algorithms for Azure Machine Learning Studio (classic)

Клиентам, которые в настоящее время используют или оценивают Студию машинного обучения (классическую), рекомендуется попробовать конструктор Машинного обучения Azure (предварительная версия), который предоставляет модули машинного обучения для перетаскивания, а также масштабируемость, управление версиями и корпоративную безопасность. Customers currently using or evaluating Machine Learning Studio (classic) are encouraged to try Azure Machine Learning designer (preview), which provides drag-n-drop ML modules plus scalability, version control, and enterprise security.

Ответ на вопрос «Какие алгоритмы машинного обучения использовать?» The answer to the question «What machine learning algorithm should I use?» всегда звучит так: «Это зависит от ряда обстоятельств». is always «It depends.» Это зависит от размера, качества и природы данных. It depends on the size, quality, and nature of the data. Это зависит от того, что нужно сделать с ответом. It depends on what you want to do with the answer. Это зависит от того, как математический алгоритм был преобразован в инструкции для вашего компьютера. It depends on how the math of the algorithm was translated into instructions for the computer you are using. И это зависит от того, сколько времени у вас есть. And it depends on how much time you have. Даже самые опытные специалисты по данным не смогут определить наилучший алгоритм, не попробовав его. Even the most experienced data scientists can’t tell which algorithm will perform best before trying them.

Машинное обучение Studio (классическая модель) предоставляет современные алгоритмы, например масштабируемые высокопроизводительные деревья решений, системы рекомендаций Байеса, глубокие нейронные сети и джунгли решений, разработанные в Microsoft Research. Machine Learning Studio (classic) provides state-of-the-art algorithms, such as Scalable Boosted Decision trees, Bayesian Recommendation systems, Deep Neural Networks, and Decision Jungles developed at Microsoft Research. В состав также включены масштабируемые пакеты машинного обучения с открытым исходным кодом, такие как Vowpal Wabbit. Scalable open-source machine learning packages, like Vowpal Wabbit, are also included. Классическая версия Машинное обучение Studio поддерживает алгоритмы машинного обучения для многоклассовой и двоичной классификации, регрессии и кластеризации. The classic version of Machine Learning Studio supports machine learning algorithms for multiclass and binary classification, regression, and clustering. Ознакомьтесь с полным списком модулей машинного обучения. See the complete list of Machine Learning Modules. В документации предоставлена некоторая информация о каждом из алгоритмов, а также способах настройки параметров для оптимизации использования алгоритма. The documentation provides some information about each algorithm and how to tune parameters to optimize the algorithm for your use.

Памятка по алгоритмам машинного обучения The Machine Learning Algorithm Cheat Sheet

Лист машинное обучение Microsoft Azure Algorithm Памятка по позволяет выбрать подходящий алгоритм машинного обучения для решений прогнозной аналитики из машинное обучение Azure библиотеки алгоритмов. The Microsoft Azure Machine Learning Algorithm Cheat Sheet helps you choose the right machine learning algorithm for your predictive analytics solutions from the Azure Machine Learning library of algorithms. В этой статье описывается, как использовать этот лист Памятка по. This article walks you through how to use this cheat sheet.

Чтобы скачать лист Памятка по и перейти к этой статье, перейдите на лист Памятка по «алгоритм машинного обучения». To download the cheat sheet and follow along with this article, go to Machine learning algorithm cheat sheet.

Эти рекомендации представляют собой объединенные отзывы и советы от большого количества специалистов по обработке и анализу данных, а также экспертов по машинному обучению. These recommendations are compiled feedback and tips from many data scientists and machine learning experts. Мы не согласились обо всем, но мы попытались хармонизе наши мнения в грубое согласие. We didn’t agree on everything, but we’ve tried to harmonize our opinions into a rough consensus. Большинство инструкций, в которых возникли разногласия, начинаются со слов «Это зависит от. » Most of the statements of disagreement begin with «It depends…»

Скачайте наглядную инфографику по основам машинного обучения и ознакомьтесь с популярными алгоритмами, которые используются для ответа на распространенные вопросы о машинном обучении. To download an easy-to-understand infographic overview of machine learning basics to learn about popular algorithms used to answer common machine learning questions, see Machine learning basics with algorithm examples.

Разновидности машинного обучения Flavors of machine learning

Контролируемое Supervised

Контролируемые алгоритмы обучения выполняют прогнозирование на основе набора примеров. Supervised learning algorithms make predictions based on a set of examples. Например, можно использовать исторические цены на акции, чтобы принять предположения о будущих ценах. For instance, historical stock prices can be used to make guesses about future prices. Каждый пример, используемый для обучения, помечается интересующим нас значением — в данном случае это стоимость акций. Each example used for training is labeled with the value of interest—in this case the stock price. Контролируемый алгоритм обучения выполняет поиск шаблонов в этих значениях. A supervised learning algorithm looks for patterns in those value labels. Он может использовать любые соответствующие сведения — день недели, время года, финансовые данные компании, тип отрасли, наличие важных геополитических событий — и каждый алгоритм ищет шаблоны различных типов. It can use any information that might be relevant—the day of the week, the season, the company’s financial data, the type of industry, the presence of disruptive geopolitical events—and each algorithm looks for different types of patterns. После того как алгоритм обнаружил наилучший шаблон, он может на основе этого шаблона предсказать неразмеченные проверочные данные — завтрашние цены. After the algorithm has found the best pattern it can, it uses that pattern to make predictions for unlabeled testing data—tomorrow’s prices.

Контролируемое обучение — это популярный и полезный тип машинного обучения. Supervised learning is a popular and useful type of machine learning. За одним исключением, все модули в классической версии Машинное обучение Azure Studio являются контролируемыми алгоритмами обучения. With one exception, all the modules in the classic version of Azure Machine Learning Studio are supervised learning algorithms. Существует несколько определенных типов контролируемого обучения, представленных в Машинное обучение Azure Studio (классическая модель): классификация, регрессия и обнаружение аномалий. There are several specific types of supervised learning that are represented within Azure Machine Learning Studio (classic): classification, regression, and anomaly detection.

  • Классификация. Classification. Если данные используются для прогнозирования категории, контролируемое обучение также называется классификацией. When the data are being used to predict a category, supervised learning is also called classification. Это происходит, когда рисунок определяется как изображение «кошки» или «собаки». This is the case when assigning an image as a picture of either a ‘cat’ or a ‘dog’. При наличии только двух вариантов такая классификация называется двухклассной или биномиальной. When there are only two choices, it’s called two-class or binomial classification. При наличии нескольких категорий, как при прогнозировании победителя турнира NCAA March Madness, классификация называется многоклассовой. When there are more categories, as when predicting the winner of the NCAA March Madness tournament, this problem is known as multi-class classification.
  • Регрессия. Regression. При прогнозировании значения, например стоимости акций, контролируемое обучение называется регрессией. When a value is being predicted, as with stock prices, supervised learning is called regression.
  • Обнаружение аномалий. Anomaly detection. Иногда задача состоит в идентификации точек данных, которые просто являются необычными. Sometimes the goal is to identify data points that are simply unusual. Например, при выявлении мошенничества с кредитной картой подозрительными являются любые необычные операции оплаты. In fraud detection, for example, any highly unusual credit card spending patterns are suspect. Количество возможных вариантов так велико, а количество известных примеров так мало, что научиться определять мошеннические действия очень трудно. The possible variations are so numerous and the training examples so few, that it’s not feasible to learn what fraudulent activity looks like. Метод обнаружения аномалий заключается в том, чтобы просто узнать, как выглядит нормальная активность (с помощью истории немошеннических транзакций) и определить что-то существенно другое. The approach that anomaly detection takes is to simply learn what normal activity looks like (using a history of non-fraudulent transactions) and identify anything that is significantly different.

Неконтролируемое Unsupervised

При неконтролируемом обучении точкам данных не присваиваются метки. In unsupervised learning, data points have no labels associated with them. Вместо этого цель алгоритма неконтролируемого обучения — определенное упорядочивание данных или описание их структуры. Instead, the goal of an unsupervised learning algorithm is to organize the data in some way or to describe its structure. Это может означать группировку данных в кластеры или поиск различных способов анализа сложных данных для их упрощения или улучшения их организации. This can mean grouping it into clusters or finding different ways of looking at complex data so that it appears simpler or more organized.

Мастер Йода рекомендует:  Курс «Введение в информационную безопасность»

Обучение с подкреплением Reinforcement learning

В обучении с подкреплением алгоритм выбирает действие в ответ на каждую точку данных. In reinforcement learning, the algorithm gets to choose an action in response to each data point. Алгоритм обучения также вскоре получает сигнал, оповещающий об успехе, который дает понять, насколько удачно было принято решение. The learning algorithm also receives a reward signal a short time later, indicating how good the decision was. На основе этого алгоритм изменяет свою стратегию для достижения лучшего результата. Based on this, the algorithm modifies its strategy in order to achieve the highest reward. В настоящее время в Машинное обучение Azure Studio (классическая модель) отсутствуют модули алгоритма обучения подкреплением. Currently there are no reinforcement learning algorithm modules in Azure Machine Learning Studio (classic). Обучение с подкреплением широко распространено в робототехнике, где набор показаний датчиков в один момент времени представляет собой точку данных и алгоритму необходимо выбрать следующее действие робота. Reinforcement learning is common in robotics, where the set of sensor readings at one point in time is a data point, and the algorithm must choose the robot’s next action. Кроме того, оно естественным образом подходит для приложений из Интернета вещей. It is also a natural fit for Internet of Things applications.

Рекомендации по выбору алгоритма Considerations when choosing an algorithm

Точность Accuracy

Получение наиболее точного ответа необходимо не всегда. Getting the most accurate answer possible isn’t always necessary. Иногда достаточно приближенного ответа в зависимости от того, для чего он используется. Sometimes an approximation is adequate, depending on what you want to use it for. В этом случае можно значительно сократить время обработки, придерживаясь более приближенных методов. If that’s the case, you may be able to cut your processing time dramatically by sticking with more approximate methods. Еще одним преимуществом более приближенных методов является то, что они обычно позволяют избежать перегонки. Another advantage of more approximate methods is that they naturally tend to avoid overfitting.

Время обучения Training time

Количество минут или часов, необходимых для обучения модели, сильно отличается для различных алгоритмов. The number of minutes or hours necessary to train a model varies a great deal between algorithms. Время обучения часто тесно связано с точностью — одно обычно сопутствует другому. Training time is often closely tied to accuracy—one typically accompanies the other. Кроме того, некоторые алгоритмы более чувствительны к количеству точек данных, чем другие. In addition, some algorithms are more sensitive to the number of data points than others. Когда время ограничено, это может повлиять на выбор алгоритма, особенно с большим набором данных. When time is limited it can drive the choice of algorithm, especially when the data set is large.

Линейность Linearity

Линейность используется во многих алгоритмах машинного обучения. Lots of machine learning algorithms make use of linearity. Алгоритмы линейной классификации предполагают, что классы могут быть разделены прямой линией (или ее аналогом для большего числа измерений). Linear classification algorithms assume that classes can be separated by a straight line (or its higher-dimensional analog). К ним относятся логистическая регрессия и поддержка векторных компьютеров (как реализовано в Машинное обучение Azure Studio (классическая модель)). These include logistic regression and support vector machines (as implemented in Azure Machine Learning Studio (classic)). Алгоритмы линейной регрессии предполагают, что тренды данных следуют прямой линии. Linear regression algorithms assume that data trends follow a straight line. Эти предположения допустимы для ряда задач, но для других задач они приводят к снижению точности. These assumptions aren’t bad for some problems, but on others they bring accuracy down.

Граница нелинейного класса — использование алгоритма линейной классификации приведет к низкой точности Non-linear class boundary — relying on a linear classification algorithm would result in low accuracy

Данные с нелинейным трендом — использование алгоритма линейной классификации приведет к появлению гораздо большего количества ошибок, чем необходимо Data with a nonlinear trend — using a linear regression method would generate much larger errors than necessary

Несмотря на их опасность, линейные алгоритмы очень популярны на первой линии атаки. Despite their dangers, linear algorithms are very popular as a first line of attack. Обычно они алгоритмически просты и быстро осваиваются. They tend to be algorithmically simple and fast to train.

Количество параметров Number of parameters

Параметры являются теми регуляторами, которые специалист по данным поворачивает при настройке алгоритма. Parameters are the knobs a data scientist gets to turn when setting up an algorithm. Это числа, которые влияют на поведение алгоритма, например чувствительность к ошибкам или количество итераций, или на варианты поведения алгоритма. They are numbers that affect the algorithm’s behavior, such as error tolerance or number of iterations, or options between variants of how the algorithm behaves. Время обучения и точность алгоритма иногда могут быть очень чувствительными к точности задания параметров. The training time and accuracy of the algorithm can sometimes be quite sensitive to getting just the right settings. Как правило, алгоритмы с большим количеством параметров занимают больше всего проб и ошибок, чтобы найти хорошее сочетание. Typically, algorithms with large numbers of parameters require the most trial and error to find a good combination.

Кроме того, существует блок очистки параметров в классической версии машинное обучение Azure Studio, которая автоматически пытается использовать все сочетания параметров при любой выбранной детализации. Alternatively, there is a parameter sweeping module block in the classic version of Azure Machine Learning Studio that automatically tries all parameter combinations at whatever granularity you choose. Хотя это отличный способ убедиться в том, что вы заполнили пространство параметров, с увеличением количества параметров экспоненциально возрастает время, необходимое для обучения модели. While this is a great way to make sure you’ve spanned the parameter space, the time required to train a model increases exponentially with the number of parameters.

Плюсом является то, что наличие большого количества параметров обычно означает, что алгоритм имеет большую гибкость. The upside is that having many parameters typically indicates that an algorithm has greater flexibility. Это часто достигает очень хорошей точности, при условии, что вы можете найти правильное сочетание настроек параметров. It can often achieve very good accuracy, provided you can find the right combination of parameter settings.

Количество функций Number of features

Для некоторых типов данных количество функций может быть очень большим по сравнению с количеством точек данных. For certain types of data, the number of features can be very large compared to the number of data points. Это часто происходит с генетическими или текстовыми данными. This is often the case with genetics or textual data. Большое количество функций для некоторых алгоритмов обучения может привести к тому, что они увязнут и время обучения станет недопустимо большим. The large number of features can bog down some learning algorithms, making training time unfeasibly long. Для этого варианта особенно хорошо подходит метод опорных векторов (см. ниже). Support Vector Machines are particularly well suited to this case (see below).

Особые случаи Special cases

Некоторые алгоритмы обучения делают определенные предположения о структуре данных или желаемых результатов. Some learning algorithms make particular assumptions about the structure of the data or the desired results. Если вы сможете найти тот алгоритм, который соответствует вашим потребностям, с ним вы сможете получить более точные результаты, более точные прогнозы и сократить время обучения. If you can find one that fits your needs, it can give you more useful results, more accurate predictions, or faster training times.

Алгоритм Algorithm Точность Accuracy Время обучения Training time Линейность Linearity Параметры Parameters Примечания Notes
Двуклассовая классификация Two-class classification
логистическая регрессия logistic regression ● ● ● ● 5 5
лес решений decision forest ● ● ○ ○ 6 6
джунгли решений decision jungle ● ● ○ ○ 6 6 Низкий объем памяти Low memory footprint
увеличивающееся дерево решений boosted decision tree ● ● ○ ○ 6 6 Большой объем памяти Large memory footprint
нейронная сеть neural network ● ● 9 9 Возможна дополнительная настройка Additional customization is possible
усредненное восприятие averaged perceptron ○ ○ ○ ○ ● ● 4. 4
метод опорных векторов support vector machine ○ ○ ● ● 5 5 Подходит для больших наборов функций Good for large feature sets
локально глубокий метод опорных векторов locally deep support vector machine ○ ○ 8 8 Подходит для больших наборов функций Good for large feature sets
точечная машина Байеса Bayes’ point machine ○ ○ ● ● 3 3
Многоклассовая классификация Multi-class classification
логистическая регрессия logistic regression ● ● ● ● 5 5
лес решений decision forest ● ● ○ ○ 6 6
джунгли решений decision jungle ● ● ○ ○ 6 6 Низкий объем памяти Low memory footprint
нейронная сеть neural network ● ● 9 9 Возможна дополнительная настройка Additional customization is possible
one-v-all one-v-all Просмотрите свойства выбранного двухклассового метода See properties of the two-class method selected
Регрессия Regression
линейная linear ● ● ● ● 4. 4
Байесовская линейная Bayesian linear ○ ○ ● ● 2 2
лес решений decision forest ● ● ○ ○ 6 6
увеличивающееся дерево решений boosted decision tree ● ● ○ ○ 5 5 Большой объем памяти Large memory footprint
квантильная регрессия быстрого леса fast forest quantile ● ● ○ ○ 9 9 Распределения, а не точечные прогнозы Distributions rather than point predictions
нейронная сеть neural network ● ● 9 9 Возможна дополнительная настройка Additional customization is possible
регрессия Пуассона Poisson ● ● 5 5 С технической точки зрения логлинейная. Technically log-linear. Для прогнозирования количества For predicting counts
порядковая ordinal 0 0 Для прогнозирования упорядочения за рангом For predicting rank-ordering
Обнаружение аномалий Anomaly detection
метод опорных векторов support vector machine ○ ○ ○ ○ 2 2 Особенно полезна для больших наборов функций Especially good for large feature sets
Обнаружение аномалий на основе анализа первичных компонентов PCA-based anomaly detection ○ ○ ● ● 3 3
K-средних K-means ○ ○ ● ● 4. 4 Алгоритм кластеризации A clustering algorithm

Свойства алгоритма: Algorithm properties:

— показывает высокую точность, быстрое время обучения и использует линейность — shows excellent accuracy, fast training times, and the use of linearity

— показывает хорошую точность и умеренное время обучения — shows good accuracy and moderate training times

Примечания к алгоритму Algorithm notes

Linear regression Linear regression

Как упоминалось ранее, линейная регрессия связывает с набором данных линию (либо плоскость или гиперплоскость). As mentioned previously, linear regression fits a line (or plane, or hyperplane) to the data set. Это быстрая и простая «рабочая лошадка», но она может быть излишне простой для некоторых задач. It’s a workhorse, simple and fast, but it may be overly simplistic for some problems.

Данные с линейным трендом Data with a linear trend

логистическая регрессия Logistic regression

Хотя в имени содержится «регрессия», логистическая регрессия на самом деле является мощным средством для классификации с двумя классами и несколькими классами . Although it includes ‘regression’ in the name, logistic regression is actually a powerful tool for two-class and multiclass classification. Это быстрый и простой метод. It’s fast and simple. Тот факт, что в нем вместо прямой линии используется S-образная кривая, позволяет естественным образом использовать его для разделения данных на группы. The fact that it uses an ‘S’-shaped curve instead of a straight line makes it a natural fit for dividing data into groups. Логистическая регрессия приводит к появлению линейных границ классов, поэтому при ее использовании убедитесь, что вам комфортно с линейной аппроксимацией. Logistic regression gives linear class boundaries, so when you use it, make sure a linear approximation is something you can live with.

Логистическая регрессия для двухклассовых данных со всего одной функцией — граница класса является точкой, в которой логистическая кривая равноудалена от обоих классов A logistic regression to two-class data with just one feature — the class boundary is the point at which the logistic curve is just as close to both classes

Деревья, леса и джунгли Trees, forests, and jungles

Леса решений (регрессионные, двухклассовые и многоклассовые), джунгли решений (двухклассовые и многоклассовые) и увеличивающиеся деревья решений (регрессионные и двухклассовые) основаны на деревьях решений, базовой концепции машинного обучения. Decision forests (regression, two-class, and multiclass), decision jungles (two-class and multiclass), and boosted decision trees (regression and two-class) are all based on decision trees, a foundational machine learning concept. Существует множество вариантов деревьев решений, но все они делают одно и то же: подразделяют пространство функций на области с преимущественно одинаковыми метками. There are many variants of decision trees, but they all do the same thing—subdivide the feature space into regions with mostly the same label. Это могут быть области с одинаковой категорией или одинаковым значением в зависимости от того, проводится ли классификация или регрессия. These can be regions of consistent category or of constant value, depending on whether you are doing classification or regression.

Дерево решений подразделяет пространство функций на области примерно c одинаковыми значениями. A decision tree subdivides a feature space into regions of roughly uniform values

Так как пространство функций можно подразделить на регионы произвольного размера, легко представить такое разделение, при котором в одном регионе будет только одна точка данных. Because a feature space can be subdivided into arbitrarily small regions, it’s easy to imagine dividing it finely enough to have one data point per region. Это крайний пример чрезмерно высокой точности. This is an extreme example of overfitting. Чтобы избежать этого, для большого набора деревьев создается специальная математическая осторожность, предпринимаемая для обеспечения того, что деревья не коррелированы. In order to avoid this, a large set of trees are constructed with special mathematical care taken to ensure the trees are not correlated. Средним для этого «леса решений» является дерево, что позволяет избежать чрезмерно высокой точности. The average of this «decision forest» is a tree that avoids overfitting. Леса решений могут использовать большой объем памяти. Decision forests can use a lot of memory. Джунгли решений — это вариант, который используют меньший объем памяти за счет небольшого увеличения времени обучения. Decision jungles are a variant that consumes less memory at the expense of a slightly longer training time.

В увеличивающихся деревьях решений во избежание чрезмерно высокой точности ограничиваются количество повторных делений и минимальное количество точек данных в каждом регионе. Boosted decision trees avoid overfitting by limiting how many times they can subdivide and how few data points are allowed in each region. Алгоритм создает последовательность деревьев, каждое из которых учится компенсировать ошибки, оставленные предыдущим деревом. The algorithm constructs a sequence of trees, each of which learns to compensate for the error left by the tree before. В результате мы получаем очень точный механизм обучения, который, как правило, использует большой объем памяти. The result is a very accurate learner that tends to use a lot of memory. Полное техническое описание см. в исходном документе Фридмана. For the full technical description, check out Friedman’s original paper.

Квантильная регрессия быстрого леса является разновидностью дерева решений для особого случая, в котором вы хотите знать не только типичное (среднее) значение данных в пределах региона, но его распределение в виде квантилей. Fast forest quantile regression is a variation of decision trees for the special case where you want to know not only the typical (median) value of the data within a region, but also its distribution in the form of quantiles.

Нейронные сети и восприятия Neural networks and perceptrons

Нейронные сети — это алгоритмы обучения, вдохновленные устройством человеческого мозга, которые охватывают многоклассовые, двухклассовые и регрессионные задачи. Neural networks are brain-inspired learning algorithms covering multiclass, two-class, and regression problems. Они бывают бесконечными, но нейронные сети в классической версии Машинное обучение Azure Studio представляют собой все формы направленных графов ациклический. They come in an infinite variety, but the neural networks within the classic version of Azure Machine Learning Studio are all of the form of directed acyclic graphs. Это означает, что входные функции передаются вперед (и только вперед) по последовательности слоев, после чего превращаются в выходные данные. That means that input features are passed forward (never backward) through a sequence of layers before being turned into outputs. В каждом слое входные функции взвешиваются в различных сочетаниях, суммируются и передаются на следующий уровень. In each layer, inputs are weighted in various combinations, summed, and passed on to the next layer. Такое сочетание простых вычислений дает возможность как по волшебству изучать границы сложных классов и тренды данных. This combination of simple calculations results in the ability to learn sophisticated class boundaries and data trends, seemingly by magic. Многослойные сети такого типа выполняют «глубокое обучение», которое так широко представлено в технических отчетах и научно-фантастической литературе. Many-layered networks of this sort perform the «deep learning» that fuels so much tech reporting and science fiction.

Но такая высокая производительность имеет и обратную сторону. This high performance doesn’t come for free, though. На обучение нейронных сетей может уходить длительное время, особенно для больших наборов данных с большим количеством функций. Neural networks can take a long time to train, particularly for large data sets with lots of features. Они также имеют больше параметров, чем большинство алгоритмов, что означает, что корректировка параметров значительно удлиняет время обучения. They also have more parameters than most algorithms, which means that parameter sweeping expands the training time a great deal. А для тех, кто хочет превысить собственные достижения и определить собственную структуру сети, возможности нейронных сетей неисчерпаемы. And for those overachievers who wish to specify their own network structure, the possibilities are inexhaustible.

Границы, изучаемые нейронными сетями, могут быть сложными и нестандартными. The boundaries learned by neural networks can be complex and irregular

Двухклассное усредненное восприятие — ответ нейронных сетей на огромное увеличение времени обучения. The two-class averaged perceptron is neural networks’ answer to skyrocketing training times. В нем используется структура сети, предоставляющая линейные границы класса. It uses a network structure that gives linear class boundaries. Она почти примитивна по сегодняшним стандартам, но имеет долгую историю надежной работы и достаточно мала для быстрого изучения. It is almost primitive by today’s standards, but it has a long history of working robustly and is small enough to learn quickly.

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

Методы опорных векторов находят границу, которая разделяет классы с как можно большей шириной. Support vector machines (SVMs) find the boundary that separates classes by as wide a margin as possible. Если два класса нельзя четко разделить, алгоритмы найдут наилучшую границу, которую смогут. When the two classes can’t be clearly separated, the algorithms find the best boundary they can. Как написано в Машинное обучение Azure Studio (классическая модель), SVM двух классов делает это только прямой линией (в SVM-говорить, что в нем используется линейное ядро). As written in Azure Machine Learning Studio (classic), the two-class SVM does this with a straight line only (in SVM-speak, it uses a linear kernel). Так как это выполняется с помощью линейной аппроксимации, время выполнения достаточно мало. Because it makes this linear approximation, it is able to run fairly quickly. Там, где это действительно, — это данные, имеющие более широкие возможности, например текстовые или геномных данные. Where it really shines is with feature-intense data, like text or genomic data. В этих случаях методы опорных векторов позволяют разделить классы быстрее и с меньшей избыточной точностью, чем большинство других алгоритмов; кроме того, они используют небольшой объем памяти. In these cases SVMs are able to separate classes more quickly and with less overfitting than most other algorithms, in addition to requiring only a modest amount of memory.

Типичная граница класса для метода опорных векторов увеличивает ширину границы, разделяющей два класса. A typical support vector machine class boundary maximizes the margin separating two classes

Другой продукт Microsoft Research, двухклассовый локально глубокий метод опорных векторов , представляет собой нелинейный вариант метода опорных векторов, который сохраняет большую часть скорости и эффективного использования памяти линейной версии метода. Another product of Microsoft Research, the two-class locally deep SVM is a non-linear variant of SVM that retains most of the speed and memory efficiency of the linear version. Он идеально подходит для случаев, в которых линейный подход не дает достаточно точных результатов. It is ideal for cases where the linear approach doesn’t give accurate enough answers. Разработчики быстро сохранили задачу, разбивая ее на ряд небольших линейных SVMных проблем. The developers kept it fast by breaking down the problem into a number of small linear SVM problems. Подробнее узнать о том, как они это сделали, можно в полном описании . Read the full description for the details on how they pulled off this trick.

С помощью эффективного расширения нелинейных методов опорных векторов одноклассовый метод опорных векторов проводит границу, которая плотно отделяет весь набор данных. Using a clever extension of nonlinear SVMs, the one-class SVM draws a boundary that tightly outlines the entire data set. Это удобно для обнаружения аномалий. It is useful for anomaly detection. Все новые точки данных, которые выходят далеко за эту границу, достаточно необычны, чтобы обратить на них внимание. Any new data points that fall far outside that boundary are unusual enough to be noteworthy.

Методы Байеса Bayesian methods

Методы Байеса имеют одно очень ценное качество: они не приводят к чрезмерному увеличению точности. Bayesian methods have a highly desirable quality: they avoid overfitting. Для этого они предварительно делают некоторые предположения о вероятном распределении ответа. They do this by making some assumptions beforehand about the likely distribution of the answer. Другим побочным эффектом этого подхода является то, что у этих методов очень мало параметров. Another byproduct of this approach is that they have very few parameters. Классическая версия Машинное обучение Azure Studio имеет алгоритмы Байеса для обеих классификациий (Многоклассовый компьютерс алгоритмом Байеса) и регрессии (Байеса линейная регрессия). The classic version of Azure Machine Learning Studio has Bayesian algorithms for both classification (Two-class Bayes’ point machine) and regression (Bayesian linear regression). Обратите внимание, что в них предполагается, что данные можно разбить прямой линией или сопоставить ей. Note that these assume that the data can be split or fit with a straight line.

С исторической точки зрения точечные машины Байеса были разработаны в Microsoft Research. On a historical note, Bayes’ point machines were developed at Microsoft Research. За ними стоит исключительная теоретическая работа. They have some exceptionally beautiful theoretical work behind them. Заинтересовавшиеся могут ознакомиться с исходной статьей в JMLR и исчерпывающим блогом Криса Бишопа (Chris Bishop). The interested student is directed to the original article in JMLR and an insightful blog by Chris Bishop.

Специализированные алгоритмы Specialized algorithms

При наличии очень конкретной цели вам может повезти со специализированным алгоритмом. If you have a very specific goal you may be in luck. В коллекции Машинное обучение Azure Studio (классической) существуют алгоритмы, специализирующиеся на: Within the Azure Machine Learning Studio (classic) collection, there are algorithms that specialize in:

Обнаружение аномалий на основе анализа первичных компонентов — большинство данных попадает в стереотипное распределение; подозрительными считаются точки, которые значительно отклоняются от этого распределения PCA-based anomaly detection — the vast majority of the data falls into a stereotypical distribution; points deviating dramatically from that distribution are suspect

Набор данных группируется в пять кластеров с использованием K-средних A data set is grouped into five clusters using K-means

Также существует многоклассовая классификация «один-все», которая разбивает проблему классификации класса N на проблемы двухклассовой классификации класса N-1. There is also an ensemble one-v-all multiclass classifier, which breaks the N-class classification problem into N-1 two-class classification problems. Точность, время обучения и свойства линейности определяются используемыми двухклассовыми классификаторами. The accuracy, training time, and linearity properties are determined by the two-class classifiers used.

Два двухклассовых классификатора объединяются вместе для получения трехклассового классификатора. A pair of two-class classifiers combine to form a three-class classifier

Классическая версия Машинное обучение Azure Studio также включает доступ к мощной платформе машинного обучения под названием Vowpal Wabbit. The classic version of Azure Machine Learning Studio also includes access to a powerful machine learning framework under the title of Vowpal Wabbit. Эта платформа пренебрегает приведенной здесь классификацией, так как может решать как классификационные, так и регрессионные задачи и даже обучаться на основе частично неразмеченных данных. VW defies categorization here, since it can learn both classification and regression problems and can even learn from partially unlabeled data. Ее можно настроить для использования любого алгоритма обучения, любой функции потери и любого алгоритма оптимизации. You can configure it to use any one of a number of learning algorithms, loss functions, and optimization algorithms. Эта система изначально разрабатывалась как эффективная, параллельная и очень быстрая. It was designed from the ground up to be efficient, parallel, and extremely fast. Она обрабатывает огромные наборы функций с минимальными усилиями. It handles ridiculously large feature sets with little apparent effort. Запущенная и управляемая Джоном Лэнгфордом из Microsoft Research, Vowpal Wabbit — это «формула один» среди других алгоритмов. Started and led by Microsoft Research’s own John Langford, VW is a Formula One entry in a field of stock car algorithms. С помощью Vowpal Wabbit можно решить не все задачи, но если система подходит для вашей задачи, возможно, стоит потратить время на изучение интерфейса системы. Not every problem fits VW, but if yours does, it may be worth your while to climb the learning curve on its interface. Система также доступна в виде автономного открытого исходного кода на нескольких языках. It’s also available as stand-alone open source code in several languages.

Дальнейшие действия Next Steps

Скачайте наглядную инфографику по основам машинного обучения и ознакомьтесь с популярными алгоритмами, которые используются для ответа на распространенные вопросы о машинном обучении. To download an easy-to-understand infographic overview of machine learning basics to learn about popular algorithms used to answer common machine learning questions, see Machine learning basics with algorithm examples.

Список категорий всех алгоритмов машинного обучения, доступных в Машинное обучение Studio (классическая модель), см. в разделе Инициализация модели в алгоритме машинное обучение Studio (классический) и в справке по модулям. For a list by category of all the machine learning algorithms available in Machine Learning Studio (classic), see Initialize Model in the Machine Learning Studio (classic) Algorithm and Module Help.

Полный алфавитный список алгоритмов и модулей в классической версии Машинное обучение Studio см. в списке модулей машинное обучение Studio (классическая модель) в машинное обучение Studio (классической модели) и в справке по модулям. For a complete alphabetical list of algorithms and modules in the classic version of Machine Learning Studio, see A-Z list of Machine Learning Studio (classic) modules in Machine Learning Studio (classic) Algorithm and Module Help.

Дорога в Data Science глазами новичка

Что такое Data Science?

В 21 веке информация повсюду. Вы буквально не можете жить, не оставляя вокруг себя информационный след. Зашли вы утром в ВК поставить пару лаек или купили в магазине пармезан, информация об этом сохранилась в огромных базах данных. А вдруг эта информация может быть полезна? Может быть, покупая один продукт, люди часто покупают и другой — тогда имеет смысл поставить эти полки рядом (или наоборот — в разных концах магазина). А может быть, скрытые закономерности есть в научных данных? Какие существуют наиболее эффективные алгоритмы их обработки? Можно ли, анализируя данные с фотографий или видео, научить компьютер узнавать на них объекты? Этим и многим другим может заниматься data scientist

Почему появился этот пост

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

Для первого дня сложно
Плюх в океан знаний
Я утонул

К концу школы структурированных знаний я так и не получил. Спикеры были очень разные и говорили на совсем разные темы. Зато какие были спикеры! Лекции нам читали (а некоторые и вели практику) люди из Яндекс, Сколтеха, IBM и томской IT-компании Rubius. Пусть я так и не узнал базовых вещей, а блокнот исписан терминами на погуглить. Зато, я увидел отличные примеры того, как можно применять анализ данных в самых разных областях: науке, индустрии и бизнесе. Базовые знания можно получить и самостоятельно, но понять, как можно их применять получается не всегда (отсюда работники Макдоналдс с красным дипломом). Школа явно показала пробелы в знаниях, которые необходимо заполнить

Об этом и данный пост. Здесь вы найдёте пошаговый план, как его видит человек, стоящий в начале этого пути. К каждой теме, которую следует изучить, будет прилагаться ссылка на курс. План рассчитан на людей без базы. Под базой я понимаю знание высшей математики и наличие навыков программирования. Для людей, обладающих этим, могу порекомендовать эту статью и специализацию по машинному обучению на Coursera. А также, буду благодарен за совет новичку. Итак, начнём!

0. Математический анализ

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

1. Математическая статистика

В анализе данных без этой дисциплины никуда. Вот список курсов, которые обеспечат вам уверенное знание предмета:

•Курс «Основы статистики» на Stepik — отлично подойдёт для начала. Есть также продолжения курса, будет полезно пройти и их

•Курс «Математическая статистика» на Stepik — поможет закрепить полученные знания с помощью достаточного количества практики

•Курс «Статистические методы в гуманитарных исследованиях» на Coursera — пусть вас не отталкивает название, курс подойдёт для всех. Преподаватель потрясающий, так что будет понятно даже гуманитариям. Главное преимущество этого курса — параллельно идёт обучение работе в программах STATISTICA и R

2. Дискретная математика

Знание этого предмета не является обязательным, пункт можно пропустить. Но всё же, вы часто будете встречать некоторые термины как, например, графы. Для уверенного обращения с ними рекомендуется изучить эту тему. Тем же, кого интересует научная сторона Data science и разработка алгоритмов — этот пункт строго обязателен

3. Программирование на Python

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

4. Машинное обучение

Время переходить непосредственно к той области, которой хотите заниматься! В этом поможет классический курс от Andrew Ng (Стэнфордский университет) на Coursera. Курс на английском. Если вы его не знаете, можно поискать переводы курса, но рекомендуется начать изучать и язык

5. Получение опыта на Kaggle

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

6. Дальнейшее обучение, собеседования

Полистайте список вакансий, подумайте, чего ещё вам не хватает и торопитесь получить работу мечты!

Больше постов про учёбу, IT и науку — в моём паблике ВК. Там же есть эта статья в более текстовом виде. Буду благодарен за советы и желаю всем удачи!

Большие данные и машинное обучение, попробовать самому

В опубликованных статьях делается акцент на практических аспектах работы с инструментами для автоматического анализа данных и с алгоритмами, которые позволяют подготовить данные к эффективному машинному анализу. В частности, приведены примеры кода на языке Python (кстати, именно на Пайтоне мы недавно писали расширение для отрисовки реечной передачи в Инкскейпа) со специализированной библиотекой Scikit-Learn, которые можно быстренько запустить на домашнем компьютере или персональном облаке, чтобы почувствовать вкус больших данных самостоятельно.

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

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

Первую статью утащу для затравки, остальное по ссылкам на Хабре:

Введение в машинное обучение с помощью Python и Scikit-Learn

Меня зовут Александр, я занимаюсь машинным обучением и анализом веб-графов (в основном — теоретическим), а также разработкой Big Data продуктов в одном из операторов Большой Тройки. Это мой первый пост — прошу, не судите строго!)

В последнее время ко мне все чаще стали обращаться люди, которые хотят научиться разрабатывать эффективные алгоритмы и участвовать в соревнованиях по машинному обучению с вопросом: «С чего начать?». Некоторое время назад я руководил разработкой инструментов Big Data для анализа медиа и социальных сетей в одном из учреждений Правительства РФ, и у меня остался некоторый материал, по которому обучалась моя команда и которым можно поделиться. Предполагается, что у читателя есть хорошее знание математики и машинного обучения (в команде были в основном выпускники МФТИ и студенты Школы Анализа Данных).

По-сути это было введение в Data Science. В последнее время эта наука стала довольно популярна. Все чаще проводятся соревнования по машинному обучению (например, Kaggle, TudedIT), зачастую с немалым бюджетом. Целью данной статьи является дать читателю быстрое введение инструменты машинного обучения, чтобы он мог как можно скорее участвовать в соревнованиях.

Наиболее распространенными инструментами Data Scientist’а на сегодняшний день являются R и Python. У каждого инструмента есть свои плюсы и минусы, однако, в последнее время по всем параметрам выигрывает Python (это исключительно мнение автора, к тому же пользующегося одновременно и тем и другим). Это стало после того, как появилась отлично документированная библиотека Scikit-Learn, в которой реализовано большое количество алгоритмов машинного обучения.

Сразу отметим, что в статье мы остановимся именно на алгоритмах Machine Learning. Первичный анализ данных лучше обычно проводится средствами пакета Pandas, разобраться с которым можно самостоятельно. Итак, сосредоточимся на реализации, для определенности полагая, что на входе у нас есть матрица обьект-признак, хранящаяюся в файле с расширением *.csv

Загрузка данных

В первую очередь данные необходимо загрузить в оперативную память, чтобы мы имели возможность работать с ними. Сама библиотека Scikit-Learn использует в своей реализации NumPy массивы, поэтому будем загружать *.csv файлы средствами NumPy. Загрузим один из датасетов из репозитория UCI Machine Learning Repository:

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

Нормализация данных

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

Отбор признаков

Не секрет, что зачастую самым важным при решении задачи является умение правильно отобрать и даже создать признаки. В англоязычной литературе это называется Feature Selection и Feature Engineering. В то время как Future Engineering довольно творческий процесс и полагается больше на интуицию и экспертные знания, для Feature Selection есть уже большое количество готовых алгоритмов. «Древесные» алгоритмы допускают расчета информативности признаков:

Все остальные методы так или иначе основаны на эффективном переборе подмножеств признаков с целью найти наилучшее подмножество, на которых построенная модель дает наилучшее качество. Одним из таких алгоритмов перебора является Recursive Feature Elimination алгоритм, который также доступен в библиотеке Scikit-Learn:

Построение алгоритма

Как уже было отмечено, в Scikit-Learn реализованы все основные алгоритмы машинного обучения. Рассмотрим некоторые из них.

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

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

Наивный Байес

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

K-ближайших соседей

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

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

Classification and Regression Trees (CART) часто используются в задачах, в которых обьекты имеют категориальные признаки и используется для задач регресии и классификации. Очень хорошо деревья подходят для многоклассовой классификации

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

SVM (Support Vector Machines) является одним из самых известных алгоритмов машинного обучения, применяемых в основном для задачи классификации. Также как и логистическая регрессия, SVM допускает многоклассовую классификацию методом one-vs-all.

Помимо алгоритмов классификации и регрессии, в Scikit-Learn имеется огромное количество более сложных алгоритмов, в том числе кластеризации, а также реализованные техники построения композиций алгоритмов, в том числе Bagging и Boosting.

Оптимизация параметров алгоритма

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

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

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

Мы рассмотрели весь процесс работы с библиотекой Scikit-Learn за исключением вывода результатов обратно в файл, что предлагается сделать читателю в качестве упражнения, потому как одним из достоинств Python (и самой библиотеки Scikit-Learn) по-сравнению с R является отличная документация. В следующих частях мы рассмотрим подробно каждый из разделов, в частности, затронем такую важную вещь как Feauture Engineering.

Я очень надеюсь, что данный материал поможет начинающим Data Scientist’ам как можно скорее приступить к решению задач машинного обучения на практике. В заключение хочу пожелать успехов и терпения тем, кто только начинает участвовать в соревнованиях по машинному обучению!

[Перевод] Must-have алгоритмы машинного обучения 18.09.2020 12:19

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

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

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

SVD — это способ вычисления упорядоченных компонентов.

Метод наименьших квадратов

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

Используйте этот алгоритм, чтобы соответствовать простым кривым/регрессии.

Ограниченная линейная регрессия

Метод наименьших квадратов может смутить выбросами, ложными полями и т. д. Нужны ограничения, чтобы уменьшить дисперсию линии, которую мы помещаем в набор данных. Правильное решение состоит в том, чтобы соответствовать модели линейной регрессии, которая гарантирует, что веса не будут вести себя «плохо». Модели могут иметь норму L1 (LASSO) или L2 (Ridge Regression) или обе (elastic regression).

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

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

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

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

Логистическая регрессия ограничена линейной регрессией с нелинейностью (в основном используется сигмоидальная функция или tanh) после применения весов, следовательно, ограничение выходов приближено к + / — классам (что равно 1 и 0 в случае сигмоида). Функции кросс-энтропийной потери оптимизированы с использованием метода градиентного спуска.

Примечание для начинающих: логистическая регрессия используется для классификации, а не регрессии. В целом, она схожа с однослойной нейронной сетью. Обучается с использованием методов оптимизации, таких как градиентный спуск или L-BFGS. NLP-разработчики часто используют её, называя «классификацией методом максимальной энтропии».

Используйте LR для обучения простых, но очень «крепких» классификаторов.

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

SVM — линейная модель, такая как линейная/логистическая регрессия. Разница в том, что она имеет margin-based функцию потерь. Вы можете оптимизировать функцию потерь, используя методы оптимизации, например, L-BFGS или SGD.

Одна уникальная вещь, которую могут выполнять SVM — это изучение классификаторов классов.

SVM может использоваться для обучения классификаторов (даже регрессоров).

Нейронные сети прямого распространения

В основном, это многоуровневые классификаторы логистической регрессии. Многие слои весов разделены нелинейностями (sigmoid, tanh, relu + softmax и cool new selu). Также они называются многослойными перцептронами. FFNN могут быть использованы для классификации и «обучения без учителя» в качестве автоэнкодеров.

FFNN можно использовать для обучения классификатора или извлечения функций в качестве автоэнкодеров.

Свёрточные нейронные сети

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

Рекуррентные нейронные сети (RNNs)

RNNs моделируют последовательности, применяя один и тот же набор весов рекурсивно к состоянию агрегатора в момент времени t и вход в момент времени t. Чистые RNN редко используются сейчас, но его аналоги, например, LSTM и GRU являются самыми современными в большинстве задач моделирования последовательности. LSTM, который используется вместо простого плотного слоя в чистой RNN.

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

Условные случайные поля (CRFs)

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

Используйте CRF для связки последовательностей (в тексте, изображении, временном ряду, ДНК и т. д.).

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

Один из самых распространённых алгоритмов машинного обучения. Используется в статистике и анализе данных для прогнозных моделей. Структура представляет собой «листья» и «ветки». На «ветках» дерева решения записаны атрибуты, от которых зависит целевая функция, в «листьях» записаны значения целевой функции, а в остальных узлах — атрибуты, по которым различаются случаи.

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

Вводные гайды:
Больше информации о машинном обучении и Data Science вы узнаете подписавшись на мой аккаунт на Хабре и Telegram-канал Нейрон. Не пропускайте будущих статей.

11 must-have алгоритмов машинного обучения для Data Scientist

16 модулей, 2 месяца

  • Введение в программирование на Python
  • Анализ данных в Pandas и NumPy
  • Визуализация, очистка данных и feature engineering
  • Работа c файлами, html-страницами и API

8 модулей, 2 месяца

  • Линейная алгебра
  • Матанализ и методы оптимизации
  • Основы статистики и теории вероятности
  • Анализ временных рядов и другие математические методы

9 модулей, 2 месяца

  • Введение в машинное обучение
  • Предобработка данных
  • Основные модели машинного обучения
  • Оценка качества алгоритмов

11 модулей, 3 месяца

  • Фреймворк TensorFlow, библиотека Keras и другие
  • Сверточные нейронные сети и компьютерное зрение
  • Рекуррентные нейронные сети
  • Анализ естественного языка и другие задачи DL

8 модулей, 2 месяца

  • Hadoop
  • Spark
  • ETL и BI
  • Облачные технологии AWS и Azure

4 модуля, 1 месяц

  • Data Science в production
  • Оценка эффективности моделей в реальных бизнес-задачах
  • Управление data science проектом и командой
  • Общение с заказчиками

Стоимость обучения
Если курс не подойдет, мы вернем вам деньги

currentPrice
basePrice
priceComment

Можно в рассрочку на 24 месяца
installmentPrice в месяц
Подробнее

С помощью обучающих алгоритмов машинного обучения можно научить программы делать что угодно:

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

2. Предсказывать события в клиентской базе. Таким образом можно заранее предпринять меры, которые сократят расходы или увеличат прибыль. Возьмем к примеру страховую компанию, которая предоставляет услуги ДМС. Если она научит программу предсказывать, кто из клиентов в ближайшее время обратится за дорогостоящей медицинской услугой, то сможет предпринять меры, чтобы сократить расходы по ДМС. Например, позвонить клиенту и предложить ему проконсультироваться с хорошим врачом, чтобы не допустить развитие болезни.

3. Формировать заказы на поставку для магазинов сети с учетом динамики продаж, сезона, прогноза погоды и других параметров. Таким образом не допускать, чтобы в торговых точках было затоваривание или нехватка товара.

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

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

По версии кадрового агентства Glassdoor, профессия Data Scientist, напрямую связанная с машинным обучением, занимает первую строчку в рейтинге самых лучших профессий Америки.

Ценятся такие специалисты высоко. Журнал IncRussia пишет, что зарплата специалиста по машинному обучению составляет 130-300 тысяч рублей. Причина в том, что на рынке мало специалистов в области Data Science. Полученная квалификация в этой области поможет вам совершить рывок в текущей работе или запуске собственного проекта.

Мастер Йода рекомендует:  Как написать хороший рекламный текст
Добавить комментарий