LGBMClassifier: Посібник із початку роботи - KDnuggets

LGBMClassifier: Посібник із початку роботи – KDnuggets

Вихідний вузол: 2793517

LGBMClassifier: посібник із початку роботи
Зображення редактора 
 

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

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

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

Тепер, коли ми маємо контекст щодо моделей ансамблю, давайте двічі клацнемо модель ансамблю посилення, зокрема алгоритм Light GBM (LGBM), розроблений Microsoft. 

LGBMClassifier розшифровується як Light Gradient Boosting Machine Classifier. Він використовує алгоритми дерева рішень для ранжування, класифікації та інших завдань машинного навчання. LGBMClassifier використовує нову техніку односторонньої вибірки на основі градієнта (GOSS) і об’єднання ексклюзивних функцій (EFB) для точної обробки великомасштабних даних, ефективно пришвидшуючи їх і зменшуючи використання пам’яті.

Що таке градієнтна одностороння вибірка (GOSS)?

Традиційні алгоритми посилення градієнта використовують усі дані для навчання, що може зайняти багато часу при роботі з великими наборами даних. З іншого боку, GOSS LightGBM зберігає всі екземпляри з великими градієнтами та виконує випадкову вибірку для екземплярів із малими градієнтами. Інтуїція, яка лежить в основі цього, полягає в тому, що екземпляри з великими градієнтами важче підібрати, і тому вони містять більше інформації. GOSS вводить постійний множник для екземплярів даних з малими градієнтами, щоб компенсувати втрату інформації під час вибірки.

Що таке об’єднання ексклюзивних функцій (EFB)?

У розрідженому наборі даних більшість ознак є нулями. EFB — це майже безвтратний алгоритм, який об’єднує/комбінує взаємовиключні функції (функції, які не є відмінними від нуля одночасно), щоб зменшити кількість вимірів, тим самим прискорюючи процес навчання. Оскільки ці функції є «ексклюзивними», вихідний простір функцій зберігається без значної втрати інформації.

Пакет LightGBM можна встановити безпосередньо за допомогою менеджера пакетів pip – python. Введіть наведену нижче команду в терміналі або в командному рядку, щоб завантажити та встановити бібліотеку LightGBM на ваш комп’ютер:

pip install lightgbm

 

Користувачі Anaconda можуть встановити його за допомогою команди «conda install», як зазначено нижче.

conda install -c conda-forge lightgbm

 

Залежно від вашої ОС ви можете вибрати спосіб встановлення за допомогою Це керівництво.

Тепер давайте імпортуємо LightGBM та інші необхідні бібліотеки:

import numpy as np
import pandas as pd
import seaborn as sns
import lightgbm as lgb
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split

Підготовка набору даних

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

titanic = sns.load_dataset('titanic')

 

Видаліть непотрібні стовпці, такі як «deck», «embark_town» і «alive», оскільки вони зайві або не сприяють виживанню жодної людини на кораблі. Далі ми помітили, що ознаки «age», «tare» і «embarked» мають відсутні значення – зауважте, що різні атрибути приписуються відповідними статистичними показниками.

# Drop unnecessary columns
titanic = titanic.drop(['deck', 'embark_town', 'alive'], axis=1) # Replace missing values with the median or mode
titanic['age'] = titanic['age'].fillna(titanic['age'].median())
titanic['fare'] = titanic['fare'].fillna(titanic['fare'].mode()[0])
titanic['embarked'] = titanic['embarked'].fillna(titanic['embarked'].mode()[0])

 

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

# Convert categorical variables to numerical variables
titanic['sex'] = pd.Categorical(titanic['sex']).codes
titanic['embarked'] = pd.Categorical(titanic['embarked']).codes # Split the dataset into input features and the target variable
X = titanic.drop('survived', axis=1)
y = titanic['survived']

Навчання LGBMClassifier Model

Щоб розпочати навчання моделі LGBMClassifier, нам потрібно розділити набір даних на вхідні функції та цільові змінні, а також набори для навчання та тестування за допомогою функції train_test_split від scikit-learn.

# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

 

Давайте позначимо кодування категорійних («хто») і порядкових даних («клас»), щоб гарантувати, що модель постачається числовими даними, оскільки LGBM не використовує нечислові дані.

class_dict = { "Third": 3, "First": 1, "Second": 2
}
who_dict = { "child": 0, "woman": 1, "man": 2
}
X_train['class'] = X_train['class'].apply(lambda x: class_dict[x])
X_train['who'] = X_train['who'].apply(lambda x: who_dict[x])
X_test['class'] = X_test['class'].apply(lambda x: class_dict[x])
X_test['who'] = X_test['who'].apply(lambda x: who_dict[x])

 

Далі ми вказуємо гіперпараметри моделі як аргументи конструктору або можемо передати їх як словник методу set_params.  

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

params = { 'objective': 'binary', 'boosting_type': 'gbdt', 'num_leaves': 31, 'learning_rate': 0.05, 'feature_fraction': 0.9
}
clf = lgb.LGBMClassifier(**params)
clf.fit(X_train, y_train)

 

Далі давайте оцінимо продуктивність навченого класифікатора на невидимому або тестовому наборі даних.

predictions = clf.predict(X_test)
print(classification_report(y_test, predictions))

 

 precision recall f1-score support 0 0.84 0.89 0.86 105 1 0.82 0.76 0.79 74 accuracy 0.83 179 macro avg 0.83 0.82 0.82 179
weighted avg 0.83 0.83 0.83 179

Налаштування гіперпараметрів

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

  • кількість_листків: це основний параметр для керування складністю моделі дерева. В ідеалі значення num_leaves має бути менше або дорівнювати 2^(max_depth).
  • min_data_in_leaf: Це важливий параметр для запобігання переобладнанню листового дерева. Його оптимальне значення залежить від кількості навчальних вибірок і num_leaves.
  • max_depth: ви можете використовувати це, щоб явно обмежити глибину дерева. Найкраще налаштувати цей параметр на випадок переобладнання.

Давайте налаштуємо ці гіперпараметри та навчимо нову модель:

model = lgb.LGBMClassifier(num_leaves=31, min_data_in_leaf=20, max_depth=5)
model.fit(X_train, y_train)

 

predictions = model.predict(X_test)
print(classification_report(y_test, predictions))

 

 precision recall f1-score support 0 0.85 0.89 0.87 105 1 0.83 0.77 0.80 74 accuracy 0.84 179 macro avg 0.84 0.83 0.83 179
weighted avg 0.84 0.84 0.84 179

 

Зауважте, що фактичне налаштування гіперпараметрів — це процес, який передбачає спроби й помилки, а також може керуватися досвідом і глибшим розумінням алгоритму посилення, а також предметними знаннями (знаннями предметної області) бізнес-проблеми, над якою ви працюєте.

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

Часова мітка:

Більше від KDnuggets