🤔 Что такое random forest?



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



🚩Как работает Random Forest?



1⃣Bootstrap Aggregating (Bagging):

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

Обучение деревьев: На каждой подвыборке обучается отдельное дерево решений.



2⃣Случайный выбор признаков:

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



3⃣Агрегация результатов:

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



🚩Плюсы

Стабильность и точность: Random Forest устойчив к переобучению благодаря агрегированию результатов множества деревьев и использованию бутстрэппинга.

Обработка больших наборов данных: Он может эффективно работать с большими объемами данных и высоким числом признаков.

Оценка важности признаков: Random Forest предоставляет оценки важности признаков, что полезно для выбора значимых признаков в модели.

Устойчивость к шуму: Random Forest менее чувствителен к шуму и выбросам в данных по сравнению с отдельными деревьями решений.



🚩Пример использования



Рассмотрим пример использования Random Forest для задачи классификации с использованием библиотеки scikit-learn:

from sklearn.ensemble import RandomForestClassifier

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split

from sklearn.metrics import accuracy_score



# Загрузка данных

iris = load_iris()

X, y = iris.data, iris.target



# Разделение данных на обучающую и тестовую выборки

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)



# Создание и обучение модели случайного леса

model = RandomForestClassifier(n_estimators=100, random_state=42)

model.fit(X_train, y_train)



# Предсказание на тестовой выборке

y_pred = model.predict(X_test)



# Оценка точности

accuracy = accuracy_score(y_test, y_pred)

print(f"Точность: {accuracy}")



# Оценка важности признаков

importances = model.feature_importances_

print(f"Важность признаков: {importances}")




🚩Пошаговое объяснение кода:



1⃣Импорт библиотек

RandomForestClassifier для создания модели случайного леса, load_iris для загрузки данных Iris, train_test_split для разделения данных и accuracy_score для оценки точности.

2⃣Загрузка данных

Загрузка набора данных Iris и разделение на признаки (X) и целевые значения (y).

3⃣Разделение данных

Разделение данных на обучающую и тестовую выборки.

4⃣Создание и обучение модели

Создание модели случайного леса с 100 деревьями и обучение её на обучающей выборке.

5⃣Предсказание

Получение предсказаний на тестовой выборке.

6⃣Оценка точности

Вычисление точности модели на тестовой выборке.

7⃣Оценка важности признаков

Вычисление важности каждого признака для модели.



Ставь 👍 и забирай 📚 Базу знаний