logo

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

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

Навчання в ансамблі

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

Види ансамблевих методів

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



  1. Укладання в мішки (початкове агрегування): Цей метод передбачає навчання кількох моделей на випадкових підмножинах навчальних даних. Прогнози з окремих моделей потім об’єднуються, як правило, шляхом усереднення.
  2. Підсилення: Цей метод передбачає навчання послідовності моделей, де кожна наступна модель фокусується на помилках, допущених попередньою моделлю. Прогнози об’єднуються за схемою зваженого голосування.
  3. Укладання: Цей метод передбачає використання передбачень з одного набору моделей як вхідних характеристик для іншої моделі. Остаточний прогноз робить модель другого рівня.

Випадковий ліс

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

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

Працює регресійна модель випадкового лісу

Працює регресійна модель випадкового лісу

Що таке регресія випадкового лісу?

Регресія випадкового лісу в машинному навчанні є технічний комплект здатний виконувати обидва регресія і класифікація завдання з використанням кількох дерев рішень і техніки під назвою Bootstrap і Aggregation, широко відомої як упаковка в мішки . Основна ідея цього полягає в тому, щоб об’єднати кілька дерев рішень для визначення кінцевого результату, а не покладатися на окремі дерева рішень.

Random Forest має кілька дерев рішень як базові моделі навчання. Ми випадково виконуємо вибірку рядків і ознак із набору даних, формуючи вибіркові набори даних для кожної моделі. Ця частина називається Bootstrap.

Нам потрібно підійти до техніки регресії випадкового лісу як до будь-якої іншої машинне навчання техніка.

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

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

У наведеному нижче прикладі ми будемо використовувати подібну техніку зразка. Нижче наведено покроковий приклад реалізації регресії випадкового лісу на наборі даних, який можна завантажити тут – https://bit.ly/417n3N5

Python Завдяки бібліотекам нам дуже легко працювати з даними та виконувати типові та складні завдання за допомогою одного рядка коду.

  • панди – Ця бібліотека допомагає завантажити фрейм даних у форматі 2D-масиву та має кілька функцій для виконання завдань аналізу за один раз.
  • Numpy – Масиви Numpy дуже швидкі та можуть виконувати великі обчислення за дуже короткий час.
  • Matplotlib / Seaborn – Ця бібліотека використовується для малювання візуалізацій.
  • Sklearn – цей модуль містить кілька бібліотек із попередньо реалізованими функціями для виконання завдань від попередньої обробки даних до розробки та оцінки моделі.
  • RandomForestRegressor – Це регресійна модель, яка базується на моделі випадкового лісу або ансамблевому навчанні, яке ми будемо використовувати в цій статті за допомогою бібліотеки sklearn.
  • sklearn: Ця бібліотека є основною бібліотекою машинного навчання в Python. Він надає широкий спектр інструментів для попередньої обробки, моделювання, оцінювання та розгортання моделей машинного навчання.
  • LabelEncoder: Цей клас використовується для кодування категоріальних даних у числові значення.
  • KNNIкомп'ютер: Цей клас використовується для імпутації відсутніх значень у наборі даних за допомогою підходу k-найближчих сусідів.
  • train_test_split: Ця функція використовується для поділу набору даних на набори для навчання та тестування.
  • StandardScaler: Цей клас використовується для стандартизації ознак шляхом видалення середнього значення та масштабування до одиничної дисперсії.
  • f1_score: Ця функція використовується для оцінки продуктивності моделі класифікації за допомогою оцінки F1.
  • RandomForestRegressor: Цей клас використовується для навчання регресійної моделі випадкового лісу.
  • cross_val_score: Ця функція використовується для виконання k-кратної перехресної перевірки для оцінки ефективності моделі

Крок 1: Імпортуйте бібліотеки

Тут ми імпортуємо всі необхідні бібліотеки.

Python3




import> pandas as pd> import> matplotlib.pyplot as plt> import> seaborn as sns> import> sklearn> import> warnings> from> sklearn.preprocessing>import> LabelEncoder> from> sklearn.impute>import> KNNImputer> from> sklearn.model_selection>import> train_test_split> from> sklearn.preprocessing>import> StandardScaler> from> sklearn.metrics>import> f1_score> from> sklearn.ensemble>import> RandomForestRegressor> from> sklearn.ensemble>import> RandomForestRegressor> from> sklearn.model_selection>import> cross_val_score> warnings.filterwarnings(>'ignore'>)>

>

>

Крок 2: Імпорт набору даних

Тепер давайте завантажимо набір даних у фрейм даних панди. Для кращої обробки даних і використання зручних функцій для виконання складних завдань за один раз.

execlp

Python3




df>=> pd.read_csv(>'Salaries.csv'>)> print>(df)>

>

>

Вихід:

 Position Level Salary 0 Business Analyst 1 45000 1 Junior Consultant 2 50000 2 Senior Consultant 3 60000 3 Manager 4 80000 4 Country Manager 5 110000 5 Region Manager 6 150000 6 Partner 7 200000 7 Senior Partner 8 300000 8 C-level 9 500000 9 CEO 10 1000000>

Ось.info()>метод надає швидкий огляд структури, типів даних і використання пам’яті набору даних.

Python3




df.info()>

>

>

Вихід:

 RangeIndex: 10 entries, 0 to 9 Data columns (total 3 columns):  # Column Non-Null Count Dtype  --- ------ -------------- -----   0 Position 10 non-null object  1 Level 10 non-null int64   2 Salary 10 non-null int64  dtypes: int64(2), object(1) memory usage: 372.0+ bytes>

Крок 3: Підготовка даних

Тут код витягне два підмножини даних із набору даних і збереже їх в окремих змінних.

  • Особливості вилучення: Він витягує функції з DataFrame і зберігає їх у змінній з іменемX>.
  • Вилучення цільової змінної: Він витягує цільову змінну з DataFrame і зберігає її у змінній з іменемy>.

Python3




# Assuming df is your DataFrame> X>=> df.iloc[:,>1>:>2>].values>#features> y>=> df.iloc[:,>2>].values># Target variable>

>

що таке номер алфавіту

>

Крок 4: Регресорна модель випадкового лісу

Код обробляє категоричні дані шляхом їх чисельного кодування, поєднує оброблені дані з числовими даними та навчає модель регресії випадкового лісу, використовуючи підготовлені дані.

Python3


іскра підручник



import> pandas as pd> from> sklearn.ensemble>import> RandomForestRegressor> from> sklearn.preprocessing>import> LabelEncoder> >Check>for> and> handle categorical variables> label_encoder>=> LabelEncoder()> x_categorical>=> df.select_dtypes(include>=>[>'object'>]).>apply>(label_encoder.fit_transform)> x_numerical>=> df.select_dtypes(exclude>=>[>'object'>]).values> x>=> pd.concat([pd.DataFrame(x_numerical), x_categorical], axis>=>1>).values> # Fitting Random Forest Regression to the dataset> regressor>=> RandomForestRegressor(n_estimators>=>10>, random_state>=>0>, oob_score>=>True>)> # Fit the regressor with x and y data> regressor.fit(x, y)>

>

>

Крок 5: Зробіть прогнози та оцінку

Код оцінює навчену регресійну модель випадкового лісу:

  • Оцінка поза сумки (OOB), яка оцінює ефективність узагальнення моделі.
  • Робить прогнози за допомогою навченої моделі та зберігає їх у масиві «передбачення».
  • Оцінює продуктивність моделі за допомогою показників середньої квадратичної помилки (MSE) і R-квадрат (R2).

Оцінка Out of Bag у RandomForest

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

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

Щоб отримати оцінку OOB конкретного алгоритму Random Forest, потрібно встановити значення True для параметра OOB_Score в алгоритмі.

Python3




# Evaluating the model> from> sklearn.metrics>import> mean_squared_error, r2_score> # Access the OOB Score> oob_score>=> regressor.oob_score_> print>(f>'Out-of-Bag Score: {oob_score}'>)> # Making predictions on the same data or new data> predictions>=> regressor.predict(x)> # Evaluating the model> mse>=> mean_squared_error(y, predictions)> print>(f>'Mean Squared Error: {mse}'>)> r2>=> r2_score(y, predictions)> print>(f>'R-squared: {r2}'>)>

>

>

Вихід:

Out-of-Bag Score: 0.644879832593859 Mean Squared Error: 2647325000.0 R-squared: 0.9671801245316117>

Крок 6: Візуалізація

Тепер візуалізуємо результати, отримані за допомогою моделі регресії RandomForest на нашому наборі даних про зарплати.

  • Створює сітку точок передбачення, що охоплює діапазон значень ознак.
  • Відтворює реальні точки даних як сині точки розсіювання.
  • Розміщує прогнозовані значення для сітки прогнозу у вигляді зеленої лінії.
  • Додає мітки та заголовок до сюжету для кращого розуміння.

Python3




import> numpy as np> X_grid>=> np.arange(>min>(X),>max>(X),>0.01>)> X_grid>=> X_grid.reshape(>len>(X_grid),>1>)> > plt.scatter(X,y, color>=>'blue'>)>#plotting real points> plt.plot(X_grid, regressor.predict(X_grid),color>=>'green'>)>#plotting for predict points> > plt.title(>'Random Forest Regression Results'>)> plt.xlabel(>'Position level'>)> plt.ylabel(>'Salary'>)> plt.show()>

>

>

Вихід:

Скріншот-2023-12-04-101235

Крок 7: Візуалізація єдиного дерева рішень з моделі випадкового лісу

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

Python3




from> sklearn.tree>import> plot_tree> import> matplotlib.pyplot as plt> # Assuming regressor is your trained Random Forest model> # Pick one tree from the forest, e.g., the first tree (index 0)> tree_to_plot>=> regressor.estimators_[>0>]> # Plot the decision tree> plt.figure(figsize>=>(>20>,>10>))> plot_tree(tree_to_plot, feature_names>=>df.columns.tolist(), filled>=>True>, rounded>=>True>, fontsize>=>10>)> plt.title(>'Decision Tree from Random Forest'>)> plt.show()>

>

>

Вихід:

Скріншот-2023-12-05-111140 Застосування регресії випадкового лісу

Регресія випадкового лісу має широкий спектр реальних проблем, зокрема:

stringbuilder
  • Прогнозування безперервних числових значень: Прогнозування цін на житло, акцій або довічної вартості клієнта.
  • Виявлення факторів ризику: Виявлення факторів ризику захворювань, фінансових криз чи інших негативних подій.
  • Обробка даних великої розмірності: Аналіз наборів даних із великою кількістю вхідних ознак.
  • Захоплення складних відносин: Моделювання складних зв’язків між вхідними характеристиками та цільовою змінною.

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

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

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

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

Висновок

Регресія випадкового лісу стала потужним інструментом для безперервних завдань прогнозування з перевагами перед традиційними деревами рішень. Його здатність обробляти багатовимірні дані, фіксувати складні взаємозв’язки та зменшувати переобладнання зробила його популярним вибором для різноманітних програм. Бібліотека scikit-learn Python дозволяє впроваджувати, оптимізувати та оцінювати моделі регресії випадкового лісу, що робить її доступною та ефективною технікою для практиків машинного навчання.

Часті запитання (FAQ)

1. Що таке регресія випадкового лісу Python?

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

2. Яке використання регресії випадкового лісу?

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

3. Яка різниця між випадковим лісом і регресією?

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

4. Як налаштувати гіперпараметри регресії випадкового лісу?

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

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

5. Чому випадковий ліс кращий за регресію?

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