Машинное обучение: сбалансированный классификатор пакетов

Классификатор сбалансированного мешка — это ансамблевый метод, предназначенный для решения проблемы несбалансированных данных в машинном обучении.

Он сочетает в себе принципы объединения и случайной недостаточной выборки для балансировки распределения классов.

1. РАБОТА

  1. Как и традиционный пакетирование, сбалансированное пакетирование создает ансамбль классификаторов путем обучения нескольких базовых классификаторов на разных подмножествах обучающих данных.
  2. Кроме того, он использует случайную заниженную выборку. Для каждого подмножества он уменьшает количество выборок класса большинства, чтобы они соответствовали классу меньшинства. Это помогает выравнивать распределение классов.
  3. Классификаторы базовых классификаторов учатся на сбалансированных подмножествах, уменьшая смещение в сторону класса большинства. И ансамбль объединяет предсказания всех базовых классификаторов, часто большинством голосов в задачах бинарной классификации.

2. ПРАКТИЧЕСКИЕ УКАЗАНИЯ

Сбалансированный классификатор мешков является надежным, менее склонным к переоснащению и универсальным, поскольку он может работать с различными базовыми классификаторами. Однако для того, чтобы он был эффективным, требуется достаточное количество выборок класса меньшинства, и его успех зависит от конкретной проблемы и характеристик данных.

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

3. КОД

Вот пример кода Python, который использует классификатор сбалансированной упаковки для обнаружения аномалий в наборе данных для обнаружения мошенничества с кредитными картами:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report, confusion_matrix
from imblearn.ensemble import BalancedBaggingClassifier

# Load the Credit Card Fraud Detection dataset
data = pd.read_csv('creditcard.csv')

# Split the data into features (X) and the target variable (y)
X = data.drop(['Class'], axis=1)
y = data['Class']

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

# Create the Balanced Bagging Classifier with Decision Tree as the base estimator
base_estimator = DecisionTreeClassifier()
bbc = BalancedBaggingClassifier(base_estimator=base_estimator, sampling_strategy='auto', replacement=False, random_state=42)

# Fit the model on the training data
bbc.fit(X_train, y_train)

# Make predictions on the test data
y_pred = bbc.predict(X_test)

# Evaluate the performance of the model
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))