Классификатор случайного леса: обзор, принцип работы, плюсы и минусы

Опубликовано: 2021-06-18

Вы когда-нибудь задумывались, как Netflix выбирает фильм, чтобы порекомендовать вам? Или как Amazon выбирает продукты для показа в вашей ленте?

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

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

Мы рассмотрим преимущества и недостатки случайного леса sklearn и многое другое в следующих пунктах.

Оглавление

Классификатор случайного леса: введение

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

Почему классификатор случайного леса называется случайным лесом?

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

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

Как это работает?

Предполагая, что в вашем наборе данных есть «m» объектов, случайный лес случайным образом выберет «k» объектов, где k < m. Теперь алгоритм вычислит корневой узел среди k объектов, выбрав узел с наибольшим приростом информации.

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

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

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

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

Следующий пример поможет вам понять, как вы используете классификатор случайного леса в повседневной жизни:

Пример

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

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

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

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

Плюсы и минусы классификатора случайного леса

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

Преимущества

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

Недостатки

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

Разница между случайным лесом и деревьями решений

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

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

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

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

Построение алгоритма (случайный лес Sklearn)

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

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

Первый шаг: импортируйте библиотеки и загрузите набор данных

Во-первых, нам нужно импортировать необходимые библиотеки и загрузить наш набор данных во фрейм данных.

Вход:

#Импорт необходимых библиотек

импортировать панд как pd

импортировать numpy как np

импортировать matplotlib.pyplot как plt

#Импорт набора данных

из sklearn.datasets импортировать load_iris
набор данных = load_iris ()

Второй шаг: разделите набор данных на обучающий набор и тестовый набор.

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

Вход:

# Подгонка классификатора к тренировочному набору

из sklearn.tree импортировать DecisionTreeClassifier

модель = DecisionTreeClassifier (критерий = «энтропия», сплиттер = «лучший», random_state = 0)

model.fit(X_train, y_train)

Выход:

DecisionTreeClassifier (class_weight = Нет, критерий = 'энтропия', max_depth = Нет,
max_features=Нет, max_leaf_nodes=Нет,
min_impurity_decrease=0.0, min_impurity_split=нет,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, presort=False, random_state=0,

сплиттер='лучший')

Третий шаг: создайте классификатор случайного леса.

Теперь мы создадим наш классификатор случайного леса, используя Python и scikit-learn.

Вход:

#Подгонка классификатора к обучающей выборке

из sklearn.ensemble импортировать RandomForestClassifier

модель = RandomForestClassifier (n_estimators = 100, критерий-'энтропия', random_state = 0)

model.fit(X_train, y_train)

Выход:

RandomForestClassifier (bootstrap = True, class_weight = None, критерий = 'энтропия',

max_depth=Нет, max_features='auto', max_leaf_nodes=Нет,

min_impurity_decrease=0.0, min_impurity_split=нет,

min_samples_leaf=1, min_sampes_split=2,

min_weight_fraction_leaf = 0,0, n_estimators = 100, n_jobs = нет,

oob_score=False, random_state=0, verbose=0, warm_start=False)

Четвертый шаг: предскажите результаты и создайте матрицу путаницы.

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

Вход:

# Предсказать результаты набора тестов

y_pred = режим.predict(X_test)

#Создать матрицу путаницы

из sklearn.metrics импортировать путаницу_матрицу

см = матрица_замешательства (y_test, y_pred)

см

Выход :

массив ([[16, 0, 0]

[0, 17, 1]

[0, 0, 11]])

Вход :

#Получите оценку своей модели

model.score(X_test, y_test)

Выход :

0,977777777777777

Заключение

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

Если вам интересно узнать больше об искусственном интеллекте, ознакомьтесь с программой Executive PG IIIT-B и upGrad в области машинного обучения и искусственного интеллекта, которая предназначена для работающих профессионалов и предлагает более 450 часов тщательного обучения, более 30 тематических исследований и заданий, IIIT -B статус выпускника, 5+ практических практических проектов и помощь в трудоустройстве в ведущих фирмах.

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

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

В чем разница между случайным лесом и деревьями решений?

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

Каковы недостатки случайного леса?

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