Машинное обучение: сбалансированный классификатор пакетов
Классификатор сбалансированного мешка — это ансамблевый метод, предназначенный для решения проблемы несбалансированных данных в машинном обучении.
Он сочетает в себе принципы объединения и случайной недостаточной выборки для балансировки распределения классов.
1. РАБОТА
- Как и традиционный пакетирование, сбалансированное пакетирование создает ансамбль классификаторов путем обучения нескольких базовых классификаторов на разных подмножествах обучающих данных.
- Кроме того, он использует случайную заниженную выборку. Для каждого подмножества он уменьшает количество выборок класса большинства, чтобы они соответствовали классу меньшинства. Это помогает выравнивать распределение классов.
- Классификаторы базовых классификаторов учатся на сбалансированных подмножествах, уменьшая смещение в сторону класса большинства. И ансамбль объединяет предсказания всех базовых классификаторов, часто большинством голосов в задачах бинарной классификации.
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))