logo

Алгоритм випадкового лісу

Випадковий ліс — це популярний алгоритм машинного навчання, який належить до методики навчання під наглядом. Його можна використовувати як для задач класифікації, так і для регресії в ML. В його основі лежить концепція навчання в ансамблі, який є процесом поєднання кількох класифікаторів для вирішення складної проблеми та покращення продуктивності моделі.

Як випливає з назви, «Випадковий ліс» — це класифікатор, який містить кілька дерев рішень на різних підмножинах заданого набору даних і бере середнє значення для підвищення точності прогнозування цього набору даних. Замість того, щоб покладатися на одне дерево рішень, випадковий ліс бере прогноз з кожного дерева на основі більшості голосів прогнозів і прогнозує кінцевий результат.

Більша кількість дерев у лісі підвищує точність і запобігає проблемі переобладнання.

mysql update join

Схема нижче пояснює роботу алгоритму випадкового лісу:

Алгоритм випадкового лісу

Примітка. Щоб краще зрозуміти алгоритм випадкового лісу, вам слід знати алгоритм дерева рішень.

Припущення для випадкового лісу

Оскільки випадковий ліс об’єднує кілька дерев для прогнозування класу набору даних, можливо, що деякі дерева рішень можуть передбачити правильний вихід, а інші – ні. Але разом усі дерева передбачають правильний результат. Тому нижче наведено два припущення для кращого класифікатора випадкових лісів:

  • У змінній ознаки набору даних мають бути деякі фактичні значення, щоб класифікатор міг передбачити точні результати, а не припущення.
  • Прогнози з кожного дерева повинні мати дуже низькі кореляції.

Навіщо використовувати Random Forest?

Нижче наведено деякі моменти, які пояснюють, чому ми повинні використовувати алгоритм випадкового лісу:

  • Він займає менше часу на навчання в порівнянні з іншими алгоритмами.
  • Він прогнозує вихідні дані з високою точністю навіть для великого набору даних, з яким він працює ефективно.
  • Він також може підтримувати точність, коли велика частка даних відсутня.

Як працює алгоритм Random Forest?

Випадковий ліс працює у два етапи: перший полягає у створенні випадкового лісу шляхом об’єднання N дерев рішень, а другий – у створенні прогнозів для кожного дерева, створеного на першому етапі.

Робочий процес можна пояснити за допомогою наступних кроків і схеми:

Крок 1: Виберіть випадкові K точок даних із навчального набору.

k алгоритм найближчого сусіда

Крок 2: Побудуйте дерева рішень, пов’язані з вибраними точками даних (підмножинами).

Крок 3: Виберіть число N для дерев рішень, які ви хочете побудувати.

Крок 4: Повторіть кроки 1 і 2.

Крок 5: Для нових точок даних знайдіть прогнози для кожного дерева рішень і призначте нові точки даних категорії, яка виграє більшість голосів.

Роботу алгоритму можна краще зрозуміти на прикладі нижче:

приклад: Припустімо, що є набір даних, який містить кілька зображень фруктів. Отже, цей набір даних передається класифікатору випадкового лісу. Набір даних розділено на підмножини та надано кожному дереву рішень. Під час фази навчання кожне дерево рішень дає прогнозований результат, і коли з’являється нова точка даних, на основі більшості результатів класифікатор «Випадковий ліс» прогнозує остаточне рішення. Розгляньте зображення нижче:

Алгоритм випадкового лісу

Застосування випадкового лісу

Існує чотири сектори, де найчастіше використовується випадковий ліс:

    Банківська справа:Банківський сектор здебільшого використовує цей алгоритм для ідентифікації кредитного ризику.Ліки:За допомогою цього алгоритму можна визначити тенденції захворювання та ризики захворювання.Землекористування:За цим алгоритмом ми можемо визначити території подібного землекористування.маркетинг:За допомогою цього алгоритму можна визначити маркетингові тренди.

Переваги випадкового лісу

  • Випадковий ліс здатний виконувати як завдання класифікації, так і регресії.
  • Він здатний обробляти великі масиви даних з високою розмірністю.
  • Це підвищує точність моделі та запобігає проблемі переобладнання.

Недоліки випадкового лісу

  • Хоча випадковий ліс можна використовувати як для завдань класифікації, так і для регресії, він не є більш придатним для завдань регресії.

Реалізація Python алгоритму випадкового лісу

Тепер ми реалізуємо дерево алгоритму випадкового лісу за допомогою Python. Для цього ми будемо використовувати той самий набір даних «user_data.csv», який ми використовували в попередніх моделях класифікації. Використовуючи той самий набір даних, ми можемо порівняти класифікатор Random Forest з іншими моделями класифікації, такими як Класифікатор дерева рішень, КНН, SVM, логістична регресія тощо.

Нижче наведено етапи впровадження:

  • Етап попередньої обробки даних
  • Підгонка алгоритму випадкового лісу до навчального набору
  • Прогнозування результату тесту
  • Перевірка точності результату (матриця створення плутанини)
  • Візуалізація результату тестового набору.

1. Етап попередньої обробки даних:

Нижче наведено код етапу попередньої обробки:

 # importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd #importing datasets data_set= pd.read_csv('user_data.csv') #Extracting Independent and dependent Variable x= data_set.iloc[:, [2,3]].values y= data_set.iloc[:, 4].values # Splitting the dataset into training and test set. from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test= train_test_split(x, y, test_size= 0.25, random_state=0) #feature Scaling from sklearn.preprocessing import StandardScaler st_x= StandardScaler() x_train= st_x.fit_transform(x_train) x_test= st_x.transform(x_test) 

У наведеному вище коді ми попередньо обробили дані. Куди ми завантажили набір даних, який надається як:

перетворити рядок на int java
Алгоритм випадкового лісу

2. Підгонка алгоритму Random Forest до навчального набору:

Тепер ми адаптуємо алгоритм випадкового лісу до навчального набору. Для його встановлення ми імпортуємо RandomForestClassifier класу від ст sklearn.ансамбль бібліотека. Код наведено нижче:

 #Fitting Decision Tree classifier to the training set from sklearn.ensemble import RandomForestClassifier classifier= RandomForestClassifier(n_estimators= 10, criterion='entropy') classifier.fit(x_train, y_train) 

У наведеному вище коді об’єкт класифікатора приймає такі параметри:

    n_estimators=Необхідна кількість дерев у випадковому лісі. Значення за замовчуванням — 10. Ми можемо вибрати будь-яке число, але потрібно подбати про проблему надмірного оснащення.критерій=Це функція для аналізу точності розбиття. Тут ми взяли «ентропію» для отримання інформації.

Вихід:

 RandomForestClassifier(bootstrap=True, class_weight=None, criterion='entropy', max_depth=None, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=None, oob_score=False, random_state=None, verbose=0, warm_start=False) 

3. Прогнозування результату набору тестів

Оскільки наша модель підігнана до навчального набору, то тепер ми можемо передбачити результат тесту. Для прогнозу ми створимо новий вектор прогнозу y_pred. Нижче наведено його код:

каджал аггарвал
 #Predicting the test set result y_pred= classifier.predict(x_test) 

Вихід:

Вектор передбачення задається як:

Алгоритм випадкового лісу

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

4. Створення матриці плутанини

Тепер ми створимо матрицю помилок, щоб визначити правильні та неправильні прогнози. Нижче наведено його код:

 #Creating the Confusion matrix from sklearn.metrics import confusion_matrix cm= confusion_matrix(y_test, y_pred) 

Вихід:

Алгоритм випадкового лісу

Як ми бачимо у наведеній вище матриці, є 4+4= 8 невірних передбачень і 64+28= 92 правильних передбачення.

5. Візуалізація результату тренувального набору

Тут ми візуалізуємо результат тренувального набору. Щоб візуалізувати результат навчального набору, ми побудуємо графік для класифікатора випадкового лісу. Класифікатор передбачить «так» або «ні» для користувачів, які придбали або не придбали позашляховик, як ми робили в логістичній регресії. Нижче наведено його код:

 from matplotlib.colors import ListedColormap x_set, y_set = x_train, y_train x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step =0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(x1, x2, classifier.predict(nm.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape), alpha = 0.75, cmap = ListedColormap(('purple','green' ))) mtp.xlim(x1.min(), x1.max()) mtp.ylim(x2.min(), x2.max()) for i, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Random Forest Algorithm (Training set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show() 

Вихід:

Алгоритм випадкового лісу

Наведене вище зображення є результатом візуалізації для класифікатора Random Forest, що працює з результатом навчального набору. Це дуже схоже на класифікатор дерева рішень. Кожна точка даних відповідає кожному користувачеві user_data, а фіолетова та зелена області є областями передбачення. Фіолетовий регіон класифікується для користувачів, які не придбали позашляховик, а зелений регіон призначений для користувачів, які придбали позашляховик.

Отже, у класифікаторі Random Forest ми взяли 10 дерев, які передбачили «Так» або «НІ» для змінної Purchased. Класифікатор взяв більшість прогнозів і надав результат.

чи може Android грати в gamepigeon

6. Візуалізація результату тестового набору

Тепер візуалізуємо результат тестового набору. Нижче наведено його код:

 #Visulaizing the test set result from matplotlib.colors import ListedColormap x_set, y_set = x_test, y_test x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step =0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(x1, x2, classifier.predict(nm.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape), alpha = 0.75, cmap = ListedColormap(('purple','green' ))) mtp.xlim(x1.min(), x1.max()) mtp.ylim(x2.min(), x2.max()) for i, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Random Forest Algorithm(Test set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show() 

Вихід:

Алгоритм випадкового лісу

Наведене вище зображення є результатом візуалізації для тестового набору. Ми можемо перевірити наявність мінімальної кількості неправильних прогнозів (8) без проблеми з переобладнанням. Змінивши кількість дерев у класифікаторі, ми отримаємо різні результати.