SOS: Скрипт работающей модели LightGBM для поиска лучшей модели

Вопрос или проблема

Я пытался получить работающую модель LightGBM, которую я мог бы обучить на своих данных, выбрать наилучшую модель с наивысшим F1 показателем, а затем использовать ее для получения F1 показателя на тестовых данных. Однако все материалы, которые я нашел в интернете, выдают мне ошибки.

На данный момент я делаю следующее: после разделения данных и тестового набора (70:30) и подготовки cv-складок я готовлю рецепт, затем параметры настройки и т.д., в конечном итоге изучая модели для выбора параметров с использованием F1 показателей.

У меня есть данные, которые я хочу использовать для предсказания статуса неплатежеспособности по кредиту и того, будет ли кто-то неплатежеспособным, используя 21 предиктор в моем наборе данных с применением даунсемплинга.

Есть ли у кого-нибудь работающий скрипт или полезные ресурсы?

Заранее спасибо.

Я обнаружил, что обычно в Kaggle доступно много полных кодов решений для таких проблем. Вот несколько, которые я смог найти на основе быстрого поиска в Google:

Надеюсь, это поможет.

Ответ или решение

Приготовление модели LightGBM для предсказания статусa дефолта по кредитам: Полное руководство

Если вы ищете рабочий сценарий для создания модели LightGBM, которая предсказывала бы статус дефолта по кредитным займам с учетом оценки F1, этот ответ предназначен именно для вас. Мы шаг за шагом рассмотрим процесс создания модели, от подготовки данных до выбора наилучшей модели.

Шаг 1: Подготовка данных

Первым делом вам нужно загрузить и подготовить ваши данные. Предположим, что ваши данные имеют 21 предиктор и целевую переменную loan_default, которая принимает значение 0 (нет дефолта) или 1 (дефолт). Вы должны разделить набор данных на обучающую и тестовую выборки в пропорции 70:30.

import pandas as pd
from sklearn.model_selection import train_test_split

# Загрузка данных
data = pd.read_csv('your_data.csv')

# Разделение данных
X = data.drop('loan_default', axis=1)
y = data['loan_default']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42, stratify=y)

Шаг 2: Предварительная обработка и балансировка

С учетом того, что вы говорили о «downsampling» для балансировки классов, мы можем использовать метод случайного подбора для уменьшения количества примеров в классе, где наблюдений больше.

from sklearn.utils import resample

# Объедините обучающие данные
train_data = pd.concat([X_train, y_train], axis=1)

# Разделение по классам
not_default = train_data[train_data.loan_default == 0]
default = train_data[train_data.loan_default == 1]

# Подборка
not_default_downsampled = resample(not_default, 
                                    replace=False,     # без замены
                                    n_samples=len(default),    # равное количество примеров
                                    random_state=42)  # для воспроизводимости 

# Объединение обратно
downsampled = pd.concat([not_default_downsampled, default])

# Обновление X_train и y_train
X_train = downsampled.drop('loan_default', axis=1)
y_train = downsampled['loan_default']

Шаг 3: Настройка параметров и кросс-валидация

Используя библиотеку lightgbm, создадим и откалибруем модель с помощью сетки параметров, чтобы выбрать наилучший набор гиперпараметров.

import lightgbm as lgb
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import f1_score

# Определение модели и гиперпараметров
model = lgb.LGBMClassifier()
param_grid = {
    'num_leaves': [31, 50],
    'max_depth': [-1, 10],
    'learning_rate': [0.05, 0.1],
    'n_estimators': [20, 40]
}

# Кросс-валидация
grid = GridSearchCV(estimator=model, param_grid=param_grid, scoring='f1', cv=5)
grid.fit(X_train, y_train)

# Лучшая модель
best_model = grid.best_estimator_
print(f"Лучшие параметры: {grid.best_params_}")

Шаг 4: Оценка на тестовых данных

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

from sklearn.metrics import classification_report

# Прогнозирование на тестовых данных
y_pred = best_model.predict(X_test)

# Оценка
print(classification_report(y_test, y_pred))

Заключение

Следуя вышеизложенным шагам, вы сможете успешно построить и оценить модель LightGBM для предсказания риска кредитного дефолта. Не забывайте, что важно экспериментировать с гиперпараметрами и проводить кросс-валидацию, чтобы оптимизировать вашу модель. Используйте предоставленный код как основу и адаптируйте его под свои нужды.

Если у вас остались вопросы или возникли трудности, рассмотрите возможность взглянуть на аналогичные решения на Kaggle. также, например, это может быть отличным ресурсом.

Оцените материал
Добавить комментарий

Капча загружается...