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

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

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

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

Как работает машинное обучение

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

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

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

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

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

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

Обучение с учителем и обучение без учителя

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

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

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

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

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

  1. Просмотрите данные и исключите все столбцы, в которых много данных отсутствует.
  2. Посмотрите на данные еще раз и выберите столбцы, которые вы хотите использовать для своего прогноза. (Это то, что вы можете изменить при повторении.)
  3. Исключите из оставшихся столбцов все строки, в которых все еще отсутствуют данные.
  4. Исправляйте очевидные опечатки и объединяйте эквивалентные ответы. Например, США, США, США и Америка следует объединить в одну категорию.
  5. Исключите строки с данными, выходящими за пределы допустимого диапазона. Например, если вы анализируете поездки на такси в пределах Нью-Йорка, вам нужно отфильтровать строки с широтой и долготами посадки или высадки, которые выходят за пределы границы мегаполиса.

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

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

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

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

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

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

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

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

Некоторые преобразования, которые люди используют для создания новых функций или уменьшения размерности векторов признаков, просты. Например, вычесть Year of Birthиз Year of Deathи вы строите Age at Death, который является главным независимой переменной для жизни и анализа смертности. В других случаях конструкция функции может быть не такой очевидной.

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

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

  • Линейная регрессия, также известная как регрессия наименьших квадратов (для числовых данных)
  • Логистическая регрессия (для двоичной классификации)
  • Линейный дискриминантный анализ (для классификации по нескольким категориям)
  • Деревья решений (как для классификации, так и для регрессии)
  • Наивный Байес (как для классификации, так и для регрессии)
  • K-ближайшие соседи, также известные как KNN (как для классификации, так и для регрессии)
  • Квантование вектора обучения, также известное как LVQ (как для классификации, так и для регрессии)
  • Машины опорных векторов, также известные как SVM (для двоичной классификации)
  • Случайные леса, тип алгоритма ансамбля «мешков» (как для классификации, так и для регрессии)
  • Методы повышения, включая AdaBoost и XGBoost, представляют собой ансамблевые алгоритмы, которые создают серию моделей, в которых каждая новая модель пытается исправить ошибки предыдущей модели (как для классификации, так и для регрессии).

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

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

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

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

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

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

Настройка гиперпараметров

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

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

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

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

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

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

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

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