В этой статье мы еще больше погрузимся в мир машинного обучения. Мы будем изучать разные алгоритмы и то, как они работают. Попутно помните, что в машинном обучении нет единого алгоритма, который лучше всего работал бы для каждой проблемы.
Описание статьи
1. Общая концепция
2. Предварительные требования
3. Типы алгоритмов машинного обучения
4. 5 лучших алгоритмов
5. Оптимизация производительности
6. Выбор лучшей модели
1-Большая концепция
Алгоритмы машинного обучения - это не более чем функции сопоставления, и они описываются как обучение целевой функции (f), которая наилучшим образом сопоставляет входные переменные X с выходной переменной Y. Наиболее распространенный тип машинного обучения - изучение этой функции для создания новых прогнозов Y для новых точек данных (X). Подводя итог, наша функция будет выглядеть так:
2 предварительных требования
Первое, что приходит в голову, когда вы слышите слово ML, - это математика! А это кошмар каждого новичка. В этой статье я собираюсь охватить основы, не вдаваясь в сложные математические детали. Это похоже на подход к обучению по черному ящику. Для остальной части руководства вам понадобятся только базовые навыки работы с Python в дополнение к необходимым библиотекам.
3 типа алгоритмов машинного обучения
Основные категории алгоритмов машинного обучения следующие:
- Обучение с учителем
- Обучение без учителя
- Обучение с подкреплением
Контролируемое обучение
В этом типе обучения человек-эксперт действует как учитель, где мы загружаем компьютер входными данными и показываем ему правильный ответ (результат). На основе этих данных компьютер должен уметь изучать закономерности и применять функцию карты. Основными типами задач контролируемого обучения являются классификация и регрессия.
Регрессия. Цель состоит в том, чтобы найти связь между независимой переменной X и зависимой переменной Y. Эта связь представлена в виде линии, которая наилучшим образом соответствует точкам данных (минимизировать расстояние между выводом и прогнозом, применяя LSE). Вывод непрерывный.
Классификация. Цель состоит в том, чтобы предсказать дискретные значения. Есть много типов, таких как двоичная и мультиклассовая классификация.
Список распространенных алгоритмов: деревья решений, SVM, линейная регрессия
Обучение без учителя
Как показано на изображении, здесь нет учителя, и компьютер должен изучать шаблоны, поскольку данные не помечены. Это может быть полезно, если специалисты-люди ничего не знают о данных. Основные типы обучения без учителя включают алгоритмы кластеризации и алгоритмы обучения правилам ассоциации. Это семейство алгоритмов называется описательными моделями. Проблемы в этой категории можно разделить на:
- Связь: чтобы определить вероятность одновременного появления элементов в коллекции. Например, если кто-то купил яйцо, он с 80% вероятностью купит хлеб.
- Кластеризация: разделение точек данных на группы таким образом, чтобы точки в одной группе были более похожи, чем точки в других группах.
Список распространенных алгоритмов: Kmeans, PCA, SVD
Обучение с подкреплением
В этом типе обучения алгоритм получает данные и выбирает лучшее следующее действие на основе своего текущего состояния. Другими словами, это означает принятие действий таким образом, чтобы максимизировать вознаграждение и минимизировать риск. Когда этот шаг повторяется, проблема известна как процесс принятия решений Маркова. Алгоритмы подкрепления обычно используются в робототехнике, где робот находит оптимальный путь, получая либо отрицательную, либо положительную обратную связь. Ярким примером является технология беспилотных автомобилей.
Список распространенных алгоритмов: Q-Learning, Sarsa
4– 5 лучших алгоритмов
Как мы упоминали выше, не существует единого алгоритма, который лучше всего работал бы с одной проблемой. Тем самым наличие разных моделей. В следующих строках мы кратко рассмотрим самые популярные из них. Давайте начнем!
* Линейная регрессия:
Линейная регрессия, пожалуй, один из самых известных алгоритмов в мире машинного обучения. Речь идет о поиске взаимосвязи между двумя переменными X и Y. Эта взаимосвязь обычно представлена линией, которая лучше всего соответствует точкам данных. Проще говоря, эта линия должна минимизировать сумму квадратов ошибок прогнозов. Уравнение простое, мы начинаем с умножения входных данных на определенные веса, получаем их сумму и добавляем смещение. Вес указывает на крутизну нашей линии, а точка пересечения указывает на ее местоположение.
После обращения LG пора заняться кодом. Также мы попрактикуемся в некоторых навыках, которые мы видели в прошлой статье.
* Логистическая регрессия:
Хотя это название может показаться сложным, для задач классификации обычно используется логистическая регрессия. В отличие от предыдущего алгоритма, который выводит непрерывные числовые значения, логистическая регрессия преобразует свой вывод с помощью сигмоидной функции для возврата значения вероятности. Для простоты сигмовидная функция - это не более чем большая буква S со значениями в диапазоне [0; 1]. Чтобы сопоставить эти числа с дискретным классом, мы создаем порог. К сожалению, мы не можем использовать ту же функцию затрат, что и линейная регрессия, по сложным математическим причинам. Я расскажу обо всех подробностях в следующей статье, не волнуйтесь!
p≥0,5, класс = 1
p ‹0,5, класс = 0
Всегда полезно просмотреть код для лучшего понимания. Здесь я буду использовать титанический набор данных и склеарн, чтобы продемонстрировать нашу работу.
* Поддержка векторных машин (SVM):
SVM используются как для классификации, так и для регрессии. Однако в основном они используются для задач классификации. В этом типе алгоритмов контролируемого обучения мы наносим наши точки данных на n-мерное пространство, а затем разделяем классы, находя лучшую гиперплоскость (n-1 измерения). Цель состоит в том, чтобы выбрать тот, который имеет наибольший запас в любой точке обучающей выборки. Базовый пример показан на изображении ниже.
Вышеупомянутое является классическим примером линейного классификатора, однако в большинстве случаев классификация не так проста, и часто для разделения классов требуются более сложные структуры. Фактически, им требуются другие типы фигур для выполнения желаемой задачи, такой как рисование кривой. Это показано на иллюстрации ниже.
И здесь появляется роль SVM для сопоставления точек данных и их ранжирования, чтобы они стали линейно разделяемыми. Этот процесс известен как сопоставление, и он основан на наборе математических функций, называемых ядрами . Для более подробной информации, ядро - это функция, которая берет низкоразмерное входное пространство и преобразует его в более высокомерное. Это известно как трюк с ядром.
Я не буду вдаваться в подробности, но покажу вам код, лежащий в основе этого классификатора.
* Кластеризация K-средних:
K-Means - это тип алгоритмов обучения без учителя, который используется с немаркированными данными. Цель этого алгоритма - разделить данные на k кластеров и назначить каждую точку данных одной из K групп на основе предоставленных функций. Здесь я расскажу, как работает этот алгоритм:
1. Кластеризует данные в k групп.
2. Создает новые случайные точки данных, называемые центроидами (n = k).
3. Назначает объекты их центру шкафа в соответствии с евклидовым расстоянием.
4. Вычисляет среднее значение объектов в одном кластере.
5. Повторяет предыдущие шаги до сходимости.
Главный вопрос о k-средних - как выбрать оптимальное количество кластеров. Что ж, идеального решения этой проблемы не существует, но мы можем использовать метод локтя. Этот метод заключается в запуске алгоритма при различных значениях k при вычислении SSE. Затем по графику значений мы можем заметить падение значений SSE при переходе от одного значения k к другому. Мы рассмотрим все подробности в следующих статьях, но ради любопытства покажу, как это выглядит.
Теперь для лучшего понимания лучше посмотреть, как работает код. Это совсем несложно, однако полный код вы можете найти на моем гитхабе.
*Древо решений :
Наш следующий классификатор не так сильно отличается от предыдущих, но более прост и удобен в реализации. Если вы любитель природы, она вам обязательно понравится. Что ж, по крайней мере, вы хоть раз в жизни слышали о древовидной структуре в CS. Он широко используется в статистике и кодировании для описания подмножеств. В машинном обучении этот метод относится к контролируемому обучению и является непараметрическим. DT используются как для регрессии, так и для классификации, и их основной тип - CART: Classification And Regression Trees.
Для начала корневой узел получает весь обучающий набор, а затем разбивает его на узлы принятия решений. Теперь каждый узел задаст вопрос T / F об одной из функций, и в ответ на этот вопрос он разделит данные на два подмножества (также известные как дочерние узлы). Цель этого процесса - расшатывать метки по мере того, как мы спускаемся. Когда у нас больше нет вопросов, узел называется листовым узлом.
Уловка для построения эффективного дерева (ID3) состоит в том, чтобы понять, какие вопросы и когда задавать. Для этого нам нужно использовать следующие метрики:
1- Энтропия: мера примеси или беспорядка в наборе данных.
2- Получение информации: уменьшение неопределенности.
Начнем с вычисления энтропии до разделения. Затем левый и правый. Объединяем их вместе и получаем конечную энтропию. Теперь, сравнивая два результата, мы получаем меру прироста информации. Этот процесс повторяется для каждого узла, и для разделения выбирается функция с наибольшим информационным усилением. Он применяется рекурсивно от корневого узла и вниз и останавливается, когда мы получаем чистое подмножество или листовой узел.
5-Оптимизация производительности
Возможно, вы выполнили все, от загрузки данных до визуализации, однако алгоритм не работает, и точность не та, на которую мы действительно рассчитывали. Следовательно, возникает необходимость в некоторой оптимизации и повышении точности. Здесь мы обсудим различные подходы к повышению производительности.
Чистые данные: удаление отсутствующих значений или их вменение и удаление выбросов.
Масштабирование данных: масштабирование данных в меньших диапазонах.
Разработка функций: агрегирование, создание новых атрибутов и добавление статистической информации во фрейм данных.
Повторная выборка данных: разделение данных на выборки и тестирование модели или применение случайного леса.
Прежде чем переходить к другим деталям, мы должны уточнить некоторые термины: систематическая ошибка, дисперсия, недостаточное и избыточное соответствие.
Смещение:
разница между предсказанием нашей модели и правильным значением, которое мы пытаемся предсказать.
Пока дисперсия составляет:
Среднее значение квадратов отличий от среднего. Он измеряет, насколько распространены данные.
Теперь, когда мы хотим вычислить дисперсию, мы получаем сумму (xi - среднее) ** 2. Если набор данных относится к выборке, мы делим ее на размер выборки минус один.
Связь между систематической ошибкой и дисперсией
На ранних этапах машинного обучения существует концепция, называемая компромиссом смещения и дисперсии:
- Когда сложность модели увеличивается, дисперсия также увеличивается, а смещение уменьшается.
- Когда модель упорядочена, смещение увеличивается, а дисперсия уменьшается.
Теперь люди меньше говорят о компромиссе, и у нас есть четыре случая, как показано на изображении ниже.
Интерпретация
Красная зона представляет реальный выход. Начиная с верхнего левого угла:
- Низкое смещение + низкая дисперсия: модель работает очень хорошо, и точки данных близки друг к другу (низкая дисперсия).
- L Смещение + высокая дисперсия: модель предсказывает только некоторые правильные значения. Эти значения как-то разделены. Это соответствует переобучению.
- Высокое смещение + Низкое отклонение: прогнозы становятся все хуже и хуже. Значения близки друг к другу (низкая дисперсия).
- Высокое смещение + высокое отклонение: модель выходит за пределы цели.
В целом, высокое смещение указывает на недостаточное соответствие, тогда как большое отклонение указывает на переобучение.
Переобучение - это когда модель хорошо работает на обучающем наборе, но не на наборе разработчика. Следовательно, он имеет тенденцию помнить, а не учиться.
Недообучение - это когда модель не показывает хорошие результаты на тренировках. Другими словами, это не соответствует данным.
Дисперсия и предвзятость - вот принципы метода самонастройки. Этот метод используется для повышения точности алгоритмов машинного обучения, и мы рассмотрим его в другой статье.
6-Выбор лучшей модели
Мы видели только 5 классификаторов, но на самом деле есть много других алгоритмов машинного обучения, которые могут выполнять ту же работу. В этом разделе мы прольем свет на важную технику под названием EnsembleVoteClassifier. Это метод ансамбля, в котором мы перечисляем точность многих алгоритмов, а затем выбираем лучший на основе его точности.
Для лучшего понимания на следующей диаграмме хорошо показан упомянутый метод.
И вот код, стоящий за этим.
На сегодня все. Следите за новостями в ближайшее время!