У цій статті ми побачимо, як створити a Класифікатор випадкового лісу використовуючи Бібліотека Scikit-Learn з Мова програмування Python і для цього ми використовуємо Набір даних IRIS який є досить поширеним і відомим набором даних.
Випадковий ліс
The Випадковий ліс або Random Decision Forest — це контрольований алгоритм машинного навчання, який використовується для класифікації, регресії та інших завдань із використанням дерев рішень. Випадкові ліси особливо добре підходять для роботи з великими та складними наборами даних, роботи з просторами функцій великої розмірності та надання інформації про важливість функцій. Здатність цього алгоритму підтримувати високу точність прогнозування, мінімізуючи переобладнання, робить його популярним вибором у різних областях, включаючи фінанси, охорону здоров’я та аналіз зображень тощо.
Класифікатор випадкового лісу
Класифікатор випадкового лісу створює a встановити з дерева рішень з випадково вибраної підмножини навчального набору. Це набір дерев рішень (DT) із випадково вибраної підмножини навчального набору, а потім Він збирає голоси з різних дерев рішень, щоб прийняти остаточний прогноз.
Класифікатор випадкового лісу
Крім того, класифікатор випадкового лісу може виконувати завдання класифікації та регресії, а його здатність надавати оцінки важливості ознак робить його цінним інструментом для розуміння значущості різних змінних у наборі даних.
Як працює класифікація випадкових лісів
Класифікація випадкового лісу – це методика ансамблевого навчання, призначена для підвищення точності та надійності класифікаційних завдань. Алгоритм будує безліч дерев рішень під час навчання та виводить клас це режим класифікації класів. Кожне дерево рішень у випадковому лісі будується з використанням підмножини навчальних даних і випадкової підмножини характеристик, що вносить різноманітність серед дерев, роблячи модель більш надійною та менш схильною до переобладнання.
Алгоритм випадкового лісу використовує техніку, що називається bagging (Bootstrap Aggregating), щоб створити ці різноманітні підмножини.
На етапі навчання кожен дерево будується шляхом рекурсивного поділу даних на основі функцій. На кожному розкол, алгоритм вибирає найкращу функцію з випадкової підмножини, оптимізуючи приріст інформації або домішку Джіні. Процес триває, доки не буде виконано заздалегідь визначений критерій зупинки, наприклад досягнення максимальної глибини або наявність мінімальної кількості зразків у кожному вузлі листа.
Коли випадковий ліс навчено, він може робити прогнози, використовуючи голоси кожного дерева для класу, і клас з найбільшою кількістю голосів стає прогнозованим класом для вхідних даних.
Вибір функцій у випадкових лісах
Вибір функції у випадкових лісах невід'ємно вбудовано в побудову окремих дерев рішень і процес агрегації.
Під час фази навчання кожне дерево рішень будується з використанням випадкової підмножини функцій, що сприяє різноманітності серед дерев. Процес, відомий як пакетування функцій, допомагає запобігти домінуванню будь-якої окремої функції та сприяє більш надійній моделі.
Алгоритм оцінює різні підмножини функцій у кожній точці розбиття, вибираючи найкращу функцію для розбиття вузлів на основі таких критеріїв, як приріст інформації або домішка Джіні. Отже, випадкові ліси природним чином включають форму вибору функцій, гарантуючи, що ансамбль отримує переваги від різноманітного набору функцій для покращення узагальнення та зменшення надмірного оснащення.
Класифікатор випадкового лісу в машинному навчанні
Крок 1: Завантаження набору даних
python3
список ініціалізації python
# importing required libraries> # importing Scikit-learn library and datasets package> from> sklearn>import> datasets> # Loading the iris plants dataset (classification)> iris>=> datasets.load_iris()> |
>
>
Крок 2. Перевірка вмісту набору даних і назв функцій, присутніх у ньому.
python3
print>(iris.target_names)> |
>
>
Вихід:
[‘setosa’ ‘versicolor’ ‘virginica’]>
python3
print>(iris.feature_names)> |
>
ярлики linux
>
Вихід:
[‘sepal length (cm)’, ’sepal width (cm)’, ’petal length (cm)’, ’petal width (cm)’]>
Крок 3: Тренуйте тестовий спліт
python3
# dividing the datasets into two parts i.e. training datasets and test datasets> X, y>=> datasets.load_iris( return_X_y>=> True>)> # Splitting arrays or matrices into random train and test subsets> from> sklearn.model_selection>import> train_test_split> # i.e. 70 % training dataset and 30 % test datasets> X_train, X_test, y_train, y_test>=> train_test_split(X, y, test_size>=> 0.30>)> |
>
>
Крок 4. Імпортуйте модуль класифікатора випадкового лісу.
python3
# importing random forest classifier from assemble module> from> sklearn.ensemble>import> RandomForestClassifier> import> pandas as pd> # creating dataframe of IRIS dataset> data>=> pd.DataFrame({>'sepallength'>: iris.data[:,>0>],>'sepalwidth'>: iris.data[:,>1>],> >'petallength'>: iris.data[:,>2>],>'petalwidth'>: iris.data[:,>3>],> >'species'>: iris.target})> |
>
>
Огляд набору даних
python3
# printing the top 5 datasets in iris dataset> print>(data.head())> |
>
>
Вихід:
sepallength sepalwidth petallength petalwidth species 0 5.1 3.5 1.4 0.2 0 1 4.9 3.0 1.4 0.2 0 2 4.7 3.2 1.3 0.2 0 3 4.6 3.1 1.5 0.2 0 4 5.0 3.6 1.4 0.2 0>
Крок 5: Навчання моделі
python3
# creating a RF classifier> clf>=> RandomForestClassifier(n_estimators>=> 100>)> # Training the model on the training dataset> # fit function is used to train the model using the training sets as parameters> clf.fit(X_train, y_train)> # performing predictions on the test dataset> y_pred>=> clf.predict(X_test)> # metrics are used to find accuracy or error> from> sklearn>import> metrics> print>()> # using metrics module for accuracy calculation> print>(>'ACCURACY OF THE MODEL:'>, metrics.accuracy_score(y_test, y_pred))> |
переваги та недоліки техніки
>
>
Вихід:
ACCURACY OF THE MODEL: 0.9238095238095239>
Крок 6: Прогнози
Python3
# predicting which type of flower it is.> clf.predict([[>3>,>3>,>2>,>2>]])> |
>
як відкрити файл за допомогою java
>
Вихід:
array([0])>
Це означає, що це так шовковистий тип квітки, оскільки ми отримали три види або класи в нашому наборі даних: Setosa, Versicolor і Virginia.
Перевірте важливі функції
Тепер ми також дізнаємося важливі функції або функції вибору в наборі даних IRIS за допомогою наступних рядків коду.
python3
# using the feature importance variable> import> pandas as pd> feature_imp>=> pd.Series(clf.feature_importances_, index>=> iris.feature_names).sort_values(ascending>=> False>)> feature_imp> |
>
>
Вихід:
petal length (cm) 0.440050 petal width (cm) 0.423437 sepal length (cm) 0.103293 sepal width (cm) 0.033220 dtype: float64>
Випадкові ліси в Python Scikit-Learn бібліотеки поставляються з набором гіперпараметри які дозволяють точніше налаштувати поведінку моделі. Розуміння та вибір відповідних гіперпараметрів має вирішальне значення для оптимізації продуктивності моделі.
Параметри класифікатора випадкового лісу
- n_estimators: Кількість дерев у лісі.
- Більше дерев, як правило, призводить до кращої продуктивності, але ціною обчислювального часу.
- Почніть зі значення 100 і збільшуйте за потреби.
- max_depth: Максимальна глибина кожного дерева.
- Більш глибокі дерева можуть вловлювати складніші візерунки, але також ризикують переобладнати.
- Експериментуйте зі значеннями від 5 до 15 і розгляньте нижчі значення для менших наборів даних.
- max_features: Кількість функцій, які розглядаються для поділу на кожному вузлі.
- Загальним значенням є «sqrt» (квадратний корінь із загальної кількості функцій).
- Налаштуйте на основі розміру набору даних і важливості функції.
- критерій: Функція, що використовується для вимірювання якості розподілу («джині» або «ентропія»).
- Домішка Джіні часто трохи швидша, але обидва загалом однакові за продуктивністю.
- min_samples_split: Мінімальна кількість зразків, необхідних для розділення вузла.
- Вищі значення можуть запобігти переобладнанню, але занадто високі можуть перешкодити складності моделі.
- Почніть з 2 і відрегулюйте за потреби.
- min_samples_leaf: Мінімальна кількість зразків, які повинні бути на листовому вузлі.
- Подібно до min_samples_split, але зосереджено на листкових вузлах.
- Почніть з 1 і відкоригуйте за потреби.
- bootstrap: Визначає, чи використовувати вихідну вибірку під час побудови дерев (правда чи хибність).
- Бутстрапінг може покращити дисперсію моделі та узагальнення, але може трохи збільшити зміщення.
Переваги класифікатора випадкового лісу
- Ансамблева природа випадкових лісів, що поєднують кілька дерев, робить їх менш схильними до переобладнання порівняно з окремими деревами рішень.
- Ефективний для наборів даних із великою кількістю функцій і добре обробляє нерелевантні змінні.
- Випадкові ліси можуть надати розуміння важливості функцій, допомагаючи у виборі функцій і розумінні набору даних.
Недоліки класифікатора випадкового лісу
- Випадкові ліси можуть бути обчислювально дорогими та вимагати більше ресурсів через побудову кількох дерев рішень.
- Природа ансамблю ускладнює інтерпретацію обґрунтування окремих прогнозів порівняно з одним деревом рішень.
- У незбалансованих наборах даних випадкові ліси можуть бути зміщені в бік більшості класів, що впливає на ефективність прогнозування для меншинних класів.
Висновок
Підсумовуючи, Random Forest з їх набором дерев рішень виділяються як надійне рішення для різноманітних завдань машинного навчання, демонструючи їх універсальність і ефективність.
Часті запитання (FAQ)
Q. Що таке класифікатор випадкового лісу?
Random Forest Classifier — це метод ансамблевого навчання з використанням кількох дерев рішень для завдань класифікації, покращуючи точність. Він чудово обробляє складні дані, запобігає переобладнанню та забезпечує надійні прогнози з важливими функціями.
Q. Чи можна використати випадковий ліс для регресії?
Випадковий ліс можна використовувати як для завдань регресії, так і для класифікації, що робить його універсальним алгоритмом машинного навчання.
З. Що таке принцип випадкового лісу?
Random Forest створює кілька дерев рішень, використовуючи випадкові підмножини набору даних, і об’єднує їхні результати для підвищення точності.
Q. Яке застосування випадкового лісу?
Реальні програми включають:
- Медичний діагноз: Виявлення захворювань за даними пацієнтів.
- Фінанси: Кредитний скоринг для оцінки ризиків у кредитуванні.