Openbravo-rus.ru

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

Алгоритмы машинного обучения

Алгоритмы машинного обучения простым языком. Часть 1

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

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

  • Градиентный спуск и линия наилучшего соответствия.
  • Линейная регрессия (включая регуляризацию).
  • Логистическая регрессия.

Прежде всего, давайте разберёмся, в чём разница между алгоритмом и моделью. Хорошее объяснение есть на Quora:

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

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

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

(Хоть первое и не считается алгоритмом машинного обучения, его понимание важно для понимания того, как происходит оптимизация алгоритмов)

И вот объяснения:

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

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

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

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

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

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

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

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

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

Всё просто: линейная регрессия — это то, как мы анализируем силу зависимости между одной переменной (“результирующая переменная”) и одной или несколькими другими переменными (“независимыми переменными”).

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

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

Ещё одна важная деталь: результирующая переменная или то, что меняется с изменением наших других переменных, непрерывна. Что это значит?

Скажем, мы хотим измерить зависимость количества осадков от высоты над уровнем моря в штате Нью-Йорк. Тогда наша результирующая переменная — дождливость, независимая переменная — высота над уровнем моря. Если будем использовать линейную регрессию, то результирующую переменную нужно сформулировать как, например, “сколько дюймов осадков выпадает за определённое количество времени”, а не “дождливо/не дождливо”. Наша результирующая переменная должна быть непрерывной — значит она может быть любым числом (даже дробным).

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

Руководство по машинному обучению для новичков

Простое объяснение с примерами из математики, программирования и реальной жизни.

Для кого это руководство?

  • Для технических специалистов, которые хотят повторить основы машинного обучения.
  • Для тех, кто не смыслит в технике, но хочет ознакомиться с машинным обучением и не знает, с чего начать.
  • Для тех, кто считает, что машинное обучение “тяжело” освоить.

Почему именно машинное обучение?

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

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

Подготовка к изучению машинного обучения

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

  • Углубленные знания начального уровня алгебры: Вы должны разбираться в таких понятиях, как переменные, коэффициенты, линейные уравнения, исчисления, а также графики.
  • Владение основами программирования, а также опыт написания кода на Python: Опыт в машинном обучении не требуется, однако вы должны уметь читать и писать код Python с базовыми конструкциями, такими как определения функций, списки, словари, циклы и условные выражения.
  • Базовые знания следующих библиотек Python:
  • NumPy
  • Pandas
  • SciKit-Learn
  • SciPy
  • Matplotlib (и/или Seaborn )

Семантическое дерево:

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

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

Что такое машинное обучение?

Артур Сэмюэл описывает машинное обучение как: “Область науки, благодаря которой компьютеры могут обучаться без явного программирования.” Это старое и неформальное определение, которое на данный момент почти потеряло смысл.

Том Митчелл дает более современное определение: “Компьютерная программа обучается на основе опыта E по отношению к некоторому классу задач T и меры качества P, если качество решения задач из T, измеренное на основе P, улучшается с приобретением опыта E.”

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

Алгоритмы машинного обучения относятся к следующим категориям: обучение с учителем (Supervised Learning), обучение без учителя (Unsupervised Learning) и обучение с подкреплением (Reinforcement Learning) .

  • Supervised Learning: Алгоритм обучения с учителем принимает маркированные данные и создает модель, которая выполняет предсказания, предоставляя новые данные. Это могут быть как задачи классификации , так и задачи регрессии .
  • Unsupervised Learning: Приобучении без учителя предоставляются непомеченные и неклассифицированные данные, в которых нужно найти закономерности и создать структуру данных для получения значения. Формы обучения без учителя: кластеризация ( clustering) и уменьшение размерности ( dimensionality reduction) .
  • Reinforcement Learning: Обучение с подкреплением использует систему поощрений и метод проб и ошибок в целях максимизации долгосрочного поощрения.

Roadmap для начала изучения машинного обучения:

  • Начать стоит с изучения/повторения линейной алгебры. MIT предоставляет отличный open course по линейной алгебре, с помощью которого можно ознакомиться с ключевыми концепциями. Особое внимание следует уделить изучению векторов, умножению матриц, детерминантам и спектральному разложению матрицы — они играют важную роль в работе алгоритмов машинного обучения.
  • Затем уделите внимание высшей математике. Изучите производные и способы их использования для оптимизации. Обязательно разберите все темы в Single Variable Calculus и (как минимум) первые два раздела Multivariable Calculus.
  • Изучите библиотеки Python, используемые в машинном обучении, такие как Numpy, Pandas, Matplotlib и SKLearn. Разобраться в машинном обучении без этих ‘инструментов’ будет довольно сложно.
  • Начните программировать! Советую реализовать все алгоритмы из scratch вPython, прежде чем использовать готовые модели в SciKit — Learn, чтобы разобраться, как все это работает. Я делал алгоритмы в следующем порядке по возрастанию сложности:
  • Линейная регрессия (Linear Regression)
  • Логистическая регрессия (Logistic Regression)
  • Наивный байесовский классификатор (Naive Bayes Classifier)
  • Метод k-ближайших соседей (K — Nearest Neighbors — KNN)
  • Метод k-средних (K — Means)
  • Метод опорных векторов (Support Vector Machine — SVM)
  • Дерево принятия решений (Decision Trees)
  • Random Forests
  • Gradient Boosting

Roadmap для реализации алгоритма:

  • Соберите данные для работы. В интернете доступны миллионы наборов данных, удовлетворяющих даже самым причудливым потребностям. Kaggle и UCI — отличные ресурсы для просмотра наборов данных. Вы также можете сгенерировать собственные данные.
  • Выберите алгоритм(ы). После сбора данных можно начать работу над алгоритмами. На изображении показан приблизительный ориентир. (Из документации SKLearn)

На этой стадии следует пройтись по краткой теории каждого алгоритма, которые я разместил на Github с каждой реализацией.

3. Визуализируйте данные! В Python есть множество библиотек, таких как Matplotlib и Seaborn, с помощью которых можно выстроить данные в график и получить финальный результат. Таким образом, вам будет легче разобраться в данных и в том, какие действия они выполняют. (и конечно, сделать крутую модель!)

Читать еще:  Нео лектурес ру обучение

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

5. Оцените модель. БиблиотекаPython SKLearn предоставляет множество инструментов для анализа модели и проверки показателей, таких как правильность, показатель f1, точность и т. д.

Примечания:

  • Ознакомившись с несколькими алгоритмами и концепциями, попробуйте выполнить один или несколько простых и краткосрочных проектов (для начала).
  • Не бойтесь совершать ошибки. По-началу вы будете тратить большую часть времени на попытки разобраться в математике и причинах возникновения ошибок. Однако терпение — ключ к успеху.
  • Маленькие модели — основа для изучения чего-то большего. Пробуйте все подряд и тогда у вас получится создать лучшую модель.
  • Наилучший способ изучить библиотеки Python — пройти Datacamp courses или начать с изучения документации.

Все вышеописанное можно найти на Github в репозитории Machine-Learning . Все алгоритмы систематизированы, как с реализациями из scratch, так и с использованием SciKit-Learn. Также представлены используемые наборы данных и краткая теория о работе алгоритмов вместе с примерами из реальной жизни.

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

В этой статье мы поговорим об основных алгоритмах, которые используются в процессе машинного обучения. И назовём лучшие из них по мнению Джеймса Ли, автора статьи «A Tour of The Top 10 Algorithms for Machine Learning Newbies». Как говорится, встречайте «горячую десятку»!

Алгоритм алгоритму рознь

Знакома ли вам теорема «No Free Lunch»? Суть её проста: не существует алгоритма, который стал бы наилучшим выбором для любой задачи и особенно обучения с учителем. К примеру, мы не можем утверждать, что нейронные сети всегда функционируют лучше, нежели деревья решений. Собственно говоря, на эффективность работы алгоритма оказывает влияние множество данных, включая и размер данных, и структуру набора данных.

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

Идём дальше. Алгоритмы машинного обучения мы можем описать как обучение целевой функции f, которая самым лучшим образом соотносит входные переменные x и выходную переменную y: y = f(x).

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

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

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

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

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

Зная x, мы должны найти y. Что касается цели этого алгоритма, то она состоит в поиске значений коэффициентов b0 и b1.

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

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

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

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

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

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

3. LDA — линейный дискриминантный анализ

Логистическая регрессия применяется, если нужно отнести образец к одному из 2-х классов. Но если классов более двух, лучше подходит алгоритм LDA. Его представление довольно простое и состоит из статистических свойств данных, которые рассчитаны для каждого класса. Это включает для каждой входной переменной: — дисперсию, рассчитанную по всем классам; — среднее значение для каждого класса.

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

4. Древа принятия решений

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

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

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

5 . Наивный Байесовский классификатор

Простой, но весьма эффективный алгоритм.

Здесь модель состоит из 2 типов вероятностей, рассчитываемых посредством тренировочных данных, а именно: 1. Вероятность каждого класса. 2. Условная вероятность для каждого класса при каждом значении x.

После расчёта модели её можно применять для предсказания с новыми данными, используя теорему Байеса. Если данные вещественные, то при нормальном распределении рассчитать вероятности совсем несложно.

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

6. KNN

Модель K-nearest neighbors представлена полным набором тренировочных данных. Предсказание для новой точки осуществляется посредством поиска «K-ближайших соседей» в наборе данных с последующим суммированием выходной переменной для этих K-экземпляров.

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

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

Идея KNN может не очень хорошо работать с многомерными данными (при множестве входных переменных), что негативно отразится на эффективности алгоритма (это называют «проклятием размерности»).

7 . LVQ — сети векторного квантования

Главный недостаток KNN — необходимость хранения всего тренировочного набора данных. Это недостатка лишён алгоритм LVQ (Learning vector quantization).

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

После обучения вектора могут применяться для предсказания по аналогии с KNN. В этом случае алгоритм тоже ищет «ближайшего соседа» (максимально подходящий кодовый вектор), вычисляя расстояние между новым экземпляром данных и каждым кодовым вектором. После этого для наиболее подходящего вектора в качестве предсказания происходит возвращение класса (или числа в случае регрессии). Наилучшего результата удаётся достичь, если все данные находятся в одном диапазоне, к примеру, от 0 до 1.

8. SVM — метод опорных векторов

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

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

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

Метод SVM считают одним из наиболее эффективных классических классификаторов.

9 . Бэггинг и случайный лес

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

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

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

10 . Бустинг и AdaBoost

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

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

AdaBoost применяют вместе с короткими древами решений. После создания 1-го проверяется эффективность древа на каждом тренировочном объекте, что позволяет узнать, сколько внимания должно уделить следующее древо всем объектам. Данным, которые предсказать сложно, даётся больший вес, которые легко предсказать — меньший вес. Модели создают последовательно одну за другой, причём каждая из них обновляет веса для последующего древа. После того, как все деревья построены, выполняются предсказания для новых данных. В итоге эффективность каждого древа определяется исходя их того, насколько точным оно было на тренировочных данных.

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

Читать еще:  Раскрутка инстаграм обучение

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

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

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

Алгоритмы машинного обучения: Какой из них выбрать для решения вашей проблемы?

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

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

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

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

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

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

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

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

Обучение с частичным привлечением учителя

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

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

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

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

Наиболее часто используемые алгоритмы машинного обучения

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

Линейная регрессия и линейный классификатор

Вероятно, это самые простые алгоритмы машинного обучения. У вас есть функции x1, . xn объектов (матрица A) и метки (вектор b). Ваша цель — найти наиболее оптимальные веса w1, . wn и смещение для этих функций в соответствии с некоторой функцией потерь; например, среднеквадратичная ошибка или средняя абсолютная ошибка для задачи регрессии. В случае среднеквадратичной ошибки существует математическое уравнение из метода наименьших квадратов:

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

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

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

Не путайте эти алгоритмы классификации с методами регрессии из-за использования «регрессии» в названии. Логистическая регрессия выполняет двоичную классификацию, поэтому маркированные выходы являются двоичными. Определим P (y = 1 | x) как условную вероятность того, что выход y равен 1 при условии, что задан входной вектор-функция x. Коэффициенты w — это веса, которые модель хочет изучить.

Поскольку этот алгоритм вычисляет вероятность принадлежности к каждому классу, вы должны учитывать, насколько вероятность отличается от 0 или 1 и усредняет его по всем объектам, как это было с линейной регрессией. Такая функция потерь представляет собой среднее значение кросс-энтропии:

Не паникуйте! Я облегчу это для вас. Позвольте y иметь правильные ответы: 0 или 1, y_pred — предсказанные ответы. Если y равно 0, то первое слагаемое при сумме равно 0, а второе меньше, чем мы предсказали y_pred до 0 согласно свойствам логарифма. Аналогично, в случае, когда y равно 1.

Что хорошего в логистической регрессии? Он принимает линейную комбинацию функций и применяет к ней нелинейную функцию (сигмовидную), поэтому это очень маленький экземпляр нейронной сети!

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

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

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

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

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

Иногда, вам ничего не известно о свойствах, и ваша цель — назначать свойства в соответствии с особенностями объектов. Это называется задачей кластеризации.

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

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

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

Анализ основных компонентов

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

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

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

Теперь алгоритм понятен:

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

Новые функции — координаты от проекции, а их число зависит от количества собственных векторов, на которых вы рассчитываете проекцию.

Нейронные сети

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

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

Для работы с текстами и последовательностями вам лучше выбрать рекуррентные нейронные сети (англ. Recurrent neural network ; RNN ). RNN содержат модули долгой краткосрочной памяти или управляемых рекуррентных нейронов и могут работать с данными, для которых мы заранее знаем размер. Одним из наиболее известных приложений RNN является машинный перевод.

Заключение

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

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

Рекомендуемая литература

Статья написана: Daniil Korbut | Октябрь 27, 2017г.

Алгоритмы машинного обучения: основные понятия

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

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

Читать еще:  Обучающее видео excel

Что такое алгоритмы машинного обучения?

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

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

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

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

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

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

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

Контролируемое обучение против неконтролируемого

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

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

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

Очистка данных для машинного обучения

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

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

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

Кодирование и нормализация данных для машинного обучения

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

Первая – нумерация меток, каждое значение текстовой метки заменяется числом. Вторая – «единая горячая» (one-hot) кодировка, каждое значение текстовой метки превращается в столбец с двоичным значением (1 или 0). Большинство платформ машинного обучения имеют функции, которые выполняют кодировку самостоятельно. Как правило, предпочтительной является единая горячая кодировка, поскольку нумерация меток иногда может запутать алгоритм машинного обучения, заставляя думать, что коды упорядочены.

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

Что такое признаки в машинном обучении?

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

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

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

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

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

Вот некоторые из наиболее распространенных алгоритмов:

  • линейная регрессия, она же регрессия наименьших квадратов (для числовых данных);
  • логистическая регрессия (для бинарной классификации);
  • линейный дискриминантный анализ (для мультикатегорийной классификации);
  • деревья решений (для классификации и регрессии);
  • наивный байесовский классификатор (для классификации и регрессии);
  • метод k-ближайших соседей, он же k-NN (для классификации и регрессии);
  • обучение нейронной сети Кохонена, он же LVQ (для классификации и регрессии);
  • метод опорных векторов, он же SVM (для двоичной классификации);
  • «случайный лес» и методы бэггинга (для классификации и регрессии);
  • методы бустинга, включая AdaBoost и XGBoost, являются ансамблями алгоритмов, которые создают серию моделей, где каждая новая модель пытается исправить ошибки предыдущей модели (для классификации и регрессии).

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

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

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

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

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

Некоторые платформы машинного обучения предусматривают автоматическую настройку гиперпараметров. По сути, системе следует сообщить, какие гиперпараметры надо изменить, и, возможно, какую метрику требуется оптимизировать, и система просматривает эти гиперпараметры столько запусков, сколько ей будет позволено. (Например, Google Cloud hyperparameter tuning извлекает соответствующую метрику из модели TensorFlow, поэтому вам не нужно ее указывать.)

Есть три подхода в оптимизации гиперпараметров: Байесовская оптимизация, поиск по решетке и случайный поиск. Как правило, самым эффективным подходом оказывается Байесовская оптимизация.

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

Автоматизированное машинное обучение

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

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

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

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

Поделитесь материалом с коллегами и друзьями

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