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



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

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

Чтобы получить более глубокие знания об искусственном интеллекте и машинном обучении, вы можете зарегистрироваться в прямом эфире от Edureka с поддержкой 24/7 и пожизненным доступом.





Вот список тем, которые будут рассмотрены в этом блоге:

  1. Почему используется усиление?
  2. Что такое повышение?
  3. Как работает алгоритм повышения?
  4. Типы повышения
  5. Демо

Почему используется форсирование?

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



  1. На изображении есть заостренные ушки: Кот

  2. На изображении глаза в форме кошки: Кошка

  3. На изображении конечности больше: Собака



  4. На изображении есть заостренные когти: Кот

  5. Изображение имеет более широкую структуру рта: Собака

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

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

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

Итак, это подводит нас к вопросу,

Что такое повышение?

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

What-Is-Boosting-Boosting-Machine-Learning-Edureka

Что способствует развитию машинного обучения - Edureka

Как я уже упоминал, Boosting - это метод ансамблевого обучения, но что именно такое ансамблевое обучение?

Что такое ансамбль в машинном обучении?

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

Что такое ансамблевое обучение - Развитие машинного обучения - Edureka

Ниже я также обсудил разницу между Boosting и Bagging.

Повышение против Бэггинга

Ансамблевое обучение может осуществляться двумя способами:

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

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

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

Как работает алгоритм повышения?

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

Как работает алгоритм повышения - Повышение качества машинного обучения - Edureka

Вот как работает алгоритм:

Шаг 1: Базовый алгоритм считывает данные и присваивает одинаковый вес каждому наблюдению выборки.

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

Шаг 3: Повторяйте шаг 2, пока алгоритм не сможет правильно классифицировать результат.

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

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

Типы повышения

Существует три основных способа проведения бустинга:

  1. Адаптивное ускорение или AdaBoost

  2. Повышение градиента

  3. XGBoost

Я буду обсуждать основы каждого из этих типов.

Адаптивное усиление

  • AdaBoost реализуется путем объединения нескольких слабых учеников в одного сильного ученика.

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

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

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

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

  • Adaboost можно использовать как для задач классификации, так и для задач на основе регрессии, однако он чаще используется для целей классификации.

Повышение градиента

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

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

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

  1. Функция потерь это необходимо улучшить.

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

  3. An Аддитивная модель что упорядочит функцию потерь.

Как и AdaBoost, Gradient Boosting также может использоваться для задач классификации и регрессии.

XGBoost

XGBoost - это расширенная версия метода повышения градиента, буквально означает экстремальное усиление градиента. XGBoost, разработанный Тианки Ченом, относится к категории сообщества распределенного машинного обучения (DMLC).

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

XGBoost - Развитие машинного обучения - Edureka

XGBoost разработан, чтобы сосредоточиться на скорости вычислений и эффективности модели. Основные функции, предоставляемые XGBoost:

  • Параллельно создает деревья решений.

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

  • Использование вычислений вне ядра для анализа огромных наборов данных.

  • Реализация оптимизации кеша для оптимального использования ресурсов.

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

что такое Java bean

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

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

  1. Как изучить Python 3 с нуля - Руководство для начинающих

Пришло время запачкать руки и приступить к программированию.

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

Описание набора данных: Этот набор данных предоставляет подробное описание гипотетических образцов в соответствии с 23 видами жаберных грибов. Каждый вид классифицируется как съедобные грибы или несъедобные (ядовитые).

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

Шаг 1. Импортируйте необходимые пакеты

from sklearn.ensemble импортировать AdaBoostClassifier из sklearn.preprocessing import LabelEncoder from sklearn.tree import DecisionTreeClassifier import pandas as pd # Импортировать функцию train_test_split из sklearn.model_selection import train_test_split #Import scikit-learn модуль импорта метрик для расчета точности

Шаг 2. Импортируйте набор данных

# Загрузить набор данных = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Шаг 3: обработка данных

# Определите имена столбцов dataset.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor', 'gill-attachment', 'gill-spacing ',' размер жабры ',' цвет жабр ',' форма стебля ',' корень стебля ',' поверхность-поверхность-стебель-кольцо ',' поверхность-поверхность-нижнее кольцо стебля ',' цвет стебля -выше-кольцо »,« цвет-стебель-ниже-кольцо »,« вуаль-тип »,« вуаль-цвет »,« число-кольцо »,« кольцевой тип »,« цвет-печать-споры »,« популяция » ',' среда обитания '] для метки в наборе данных.columns: dataset [label] = LabelEncoder (). fit (dataset [label]). transform (dataset [label]) # Отображение информации о наборе данных print (dataset.info ( )) Int64Index: 8124 записей, от 6074 до 686 Столбцы данных (всего 23 столбца): цель 8124 ненулевое int32 cap-shape 8124 ненулевое int32 cap-surface 8124 ненулевое int32 cap-color 8124 ненулевое int32 синяки 8124 ненулевой запах int32 8124 ненулевой int32 gill-attachment 8124 ненулевой int32 интервал между жабрами 8124 ненулевой int32 размер жабры 8124 ненулевой int32 цвет жабры 8124 ненулевой int32 форма стебля 8124 ненулевой int32 stalk-root 8124 ненулевой int32 stalk-surface-above-ring 8124 ненулевое int32 stalk-surface-below-ring 8124 ненулевое int32 цвет-стебель-выше-кольцо 8124 ненулевое int32 цвет-стебель-ниже-кольцо 8124 ненулевое int32 вуаль- тип 8124 ненулевой int32 цвет вуали 8124 ненулевой int32 номер кольца 8124 ненулевой int32 тип кольца 8124 ненулевой int32 spore-print-color 8124 ненулевой цвет int32 8124 ненулевой int32 среда обитания 8124 ненулевой null int32 dtypes: int32 (23) использование памяти: 793,4 КБ

Шаг 4. Объединение данных

X = dataset.drop (['target'], axis = 1) Y = dataset ['target'] X_train, X_test, Y_train, Y_test = train_test_split (X, Y, test_size = 0,3)

Шаг 5: Постройте модель

model = DecisionTreeClassifier (критерий = 'энтропия', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = model, n_estimators = 400, learning_rate = 1)

В приведенном выше фрагменте кода мы реализовали алгоритм AdaBoost. Функция AdaBoostClassifier принимает три важных параметра:

  • base_estimator: базовая оценка (слабый ученик) по умолчанию - это деревья решений
  • n_estimator: в этом поле указывается количество используемых базовых учеников.
  • learning_rate: в этом поле указывается скорость обучения, которую мы установили на значение по умолчанию, то есть 1.
# Подбираем модель с обучающими данными boostmodel = AdaBoost.fit (X_train, Y_train)

Шаг 6: Оценка модели

# Оценить точность модели y_pred = boostmodel.predict (X_test) predictions = metrics.accuracy_score (Y_test, y_pred) # Расчет точности в процентах print ('Точность:', прогнозы * 100, '%') Точность составляет: 100,0%

Мы получили точность 100%, что идеально!

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

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