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

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

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

Показатель

  • Введение в машинное обучение.
  • Основные алгоритмы машинного обучения.
  • Контролируемое и неконтролируемое обучение.
  • Линейная регрессия.
  • Многомерная линейная регрессия.
  • Полиномиальная регрессия.
  • Экспоненциальная регрессия.
  • Синусоидальная регрессия.
  • Логарифмическая регрессия.

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

Машинное обучение действует аналогично росту ребенка. По мере того, как ребенок растет, его опыт E в выполнении задачи T увеличивается, что приводит к более высокому показателю производительности (P).

Например, мы дарим ребенку игрушку «сортировочный кубик». (Теперь мы в целом понимаем, что в этой игрушке у нас разные формы и промежутки формы). В этой ситуации наше обязательство T состоит в том, чтобы найти подходящее отверстие формы для формы. После этого ребенок наблюдает за формой и пытается вписать ее в формованный зазор. Допустим, эта игрушка имеет три формы: круг, треугольник и квадрат. В ее первой попытке найти сформированный зазор ее показатель эффективности (P) равен 1/3, что означает, что ребенок обнаружил 1 из 3 отверстий правильной формы.

Во-вторых, юноша пробует это в другой раз и сообщает, что у нее мало опыта в этом задании. Учитывая набранный опыт (Э), юноша пробует это поручение еще раз, и при измерении успеваемости (Р) он оказывается равным 2/3. Повторив это задание (T) несколько раз, ребенок понял, какая фигура входит в какое отверстие формы.

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

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

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

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

Зачем нам нужно машинное обучение?

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

  1. Сколько глаз у каждого животного?
  2. Какого цвета глаза у каждого животного?
  3. Какова высота каждого животного?
  4. Какова масса каждого животного?
  5. Чем обычно питается каждое животное?

Формируем вектор по ответам на каждый из этих вопросов. Затем мы применяем набор правил, таких как:

Если рост › 1 фут и вес › 15 фунтов, то это может быть кошка.

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

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

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

Модели машинного обучения помогают нам во многих задачах, таких как:

  • Распознавание объектов
  • Подведение итогов
  • Прогноз
  • Классификация
  • Кластеризация
  • Рекомендательные системы
  • И другие

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

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

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

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

1. Регрессия (прогнозирование)

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

Алгоритмы регрессии:

  • Линейная регрессия
  • Полиномиальная регрессия
  • Экспоненциальная регрессия
  • Логистическая регрессия
  • Логарифмическая регрессия

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

Мы используем алгоритмы классификации для прогнозирования класса или категории набора элементов.

Алгоритмы классификации:

  • K-ближайшие соседи
  • Деревья решений
  • Случайный лес
  • Машина опорных векторов
  • Наивный Байес

3. Кластеризация

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

Алгоритмы кластеризации:

  • К-означает
  • ДБСКАН
  • Среднее смещение
  • Иерархический

4. Ассоциация

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

Алгоритмы ассоциации:

  • Априори

5. Обнаружение аномалий

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

6. Разработка шаблона последовательности

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

7. Уменьшение размерности

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

8. Системы рекомендаций

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

Примеры:

  • Система рекомендаций Нетфликс.
  • Система рекомендаций книг.
  • Система рекомендаций по продуктам на Amazon.

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

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

Искусственный интеллект (ИИ):

Искусственный интеллект (ИИ), по определению профессора Эндрю Мура, представляет собой науку и технику, позволяющую заставить компьютеры вести себя таким образом, который до недавнего времени считался необходимым для человеческого интеллекта [4].

К ним относятся:

  • Компьютерное зрение
  • Языковая обработка
  • Творческий подход
  • Подведение итогов

Машинное обучение (МО):

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

К ним относятся:

  • Классификация
  • Нейронная сеть
  • Кластеризация

Глубокое обучение:

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

Почему мы предпочитаем Python для реализации алгоритмов машинного обучения?

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

Давайте кратко рассмотрим некоторые интересные библиотеки Python.

  1. Numpy: это математическая библиотека для работы с n-мерными массивами в Python. Это позволяет нам выполнять вычисления эффективно и рационально.
  2. Scipy: это набор численных алгоритмов и набор инструментов для предметной области, включая обработку сигналов, оптимизацию, статистику и многое другое. Scipy — это функциональная библиотека для научных и высокопроизводительных вычислений.
  3. Matplotlib: это модный пакет для построения графиков, который обеспечивает как двухмерное, так и трехмерное построение графиков.
  4. Scikit-learn: это бесплатная библиотека машинного обучения для языка программирования Python. Он имеет большинство алгоритмов классификации, регрессии и кластеризации и работает с числовыми библиотеками Python, такими как Numpy, Scipy.

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

  • Алгоритмы контролируемого обучения
  • Алгоритмы неконтролируемого обучения

I. Алгоритмы контролируемого обучения:

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

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

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

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

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

  • Линейная регрессия
  • Логистическая регрессия
  • K-ближайшие соседи
  • Древо решений
  • Случайный лес
  • Машина опорных векторов

II. Неконтролируемое обучение:

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

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

Более продвинутая ветвь — это кластеризация, которая исследует скрытые закономерности в данных, а затем делает на их основе прогнозы; модели включают кластеризацию K-средних, смешанные модели Гаусса, закрытые марковские модели и другие.

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

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

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

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

Примеры алгоритмов обучения без учителя:

  • Уменьшение размера
  • Оценка плотности
  • Анализ рыночной корзины
  • Генеративно-состязательные сети (GAN)
  • Кластеризация

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

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

Некоторые реальные примеры линейной регрессии:

(1) Для прогнозирования продаж продукции.

(2) Для прогнозирования экономического роста.

(3) Для прогнозирования цен на нефть.

(4) Предсказать эмиссию нового автомобиля.

(5) Влияние среднего балла на поступление в колледж.

Существует два типа линейной регрессии:

  • Простая линейная регрессия
  • Многомерная линейная регрессия

1.1 Простая линейная регрессия:

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

Пошаговая реализация на Python:

а. Импортировать необходимые библиотеки:

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

Источник: Изображение создано автором.

б. Прочтите CSV-файл:

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

Источник: Изображение создано автором.

в. Выберите функции, которые мы хотим учитывать при прогнозировании значений:

Здесь наша цель — предсказать значение «выбросов CO2» по значению «размера двигателя» в нашем наборе данных.

Источник: Изображение создано автором.

д. График данных:

Мы можем визуализировать наши данные на точечной диаграмме.

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

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

ж. Обучение нашей модели:

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

г. Постройте наиболее подходящую линию:

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

График данных для линейной регрессии на основе ее коэффициентов | Источник: Изображение создано автором.

ч. Функция прогнозирования:

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

я. Прогнозирование выбросов CO2:

Прогнозирование значений выбросов CO2 на основе линии регрессии.

1.2 Многомерная линейная регрессия:

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

1.3 Полиномиальная регрессия:

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

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

Синусоидальная регрессия:

Некоторые примеры синусоидальной регрессии из реальной жизни:

  • Генерация музыкальных волн.
  • Звук распространяется волнами.
  • Тригонометрические функции в конструкциях.
  • Используется в космических полетах.
  • Расчет местоположения по GPS.
  • Архитектура.
  • Электрический ток.
  • Радиовещание.
  • Отливы и приливы океана.
  • Здания.

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

Логарифмическая регрессия:

Несколько реальных примеров логарифмического роста:

  • Магнитуда землетрясений.
  • Интенсивность звука.
  • Кислотность раствора.
  • Уровень рН растворов.
  • Выходы химических реакций.
  • Производство товаров.
  • Рост младенцев.
  • График COVID-19.

Веб-сайт: https://bigdata-world.net/machine-learning-algorithms/