Im Bereich des maschinellen Lernens sind unausgeglichene Datensätze ein häufiges Problem, was auf den großen Unterschied in der Anzahl der Stichproben verschiedener Kategorien im Trainingsdatensatz zurückzuführen ist. Beispielsweise ist bei einem binären Klassifizierungsproblem die Anzahl der positiven Stichproben viel kleiner als die Anzahl der negativen Stichproben. Dies führt dazu, dass das trainierte Modell eher dazu neigt, eine größere Anzahl von Kategorien vorherzusagen und eine kleinere Anzahl von Kategorien zu ignorieren, was sich wiederum auf die Leistung des Modells auswirkt. Daher müssen unausgeglichene Datensätze klassifiziert werden, um die Modellleistung zu verbessern.
In diesem Artikel wird anhand eines konkreten Beispiels veranschaulicht, wie unausgeglichene Datensätze klassifiziert werden. Angenommen, wir haben ein binäres Klassifizierungsproblem, bei dem die Anzahl der positiven Proben 100, die Anzahl der negativen Proben 1000 und die Dimension des Merkmalsvektors 10 beträgt. Um mit unausgeglichenen Datensätzen umzugehen, können die folgenden Schritte unternommen werden: 1. Verwenden Sie Undersampling- oder Oversampling-Techniken, um die Daten auszugleichen, beispielsweise den SMOTE-Algorithmus. 2. Verwenden Sie geeignete Bewertungsindikatoren wie Genauigkeit, Präzision, Rückruf usw., um die Leistung des Modells zu bewerten. 3. Passen Sie den Schwellenwert des Klassifikators an, um die Leistung des Modells für Minderheitsklassen zu optimieren. 4. Verwenden Sie Ensemble-Lernmethoden wie Random Forests oder Gradient Boosting Trees, um die Generalisierungsleistung des Modells zu verbessern
1 Verstehen Sie den Datensatz: Analysieren Sie den Datensatz und stellen Sie fest, dass die Anzahl der positiven Stichproben viel geringer ist als die Anzahl der negativen Proben.
2. Wählen Sie geeignete Bewertungsmetriken: Aufgrund der Unausgewogenheit des Datensatzes wählen wir Präzision, Rückruf und F1-Wert als Bewertungsmetriken.
Sie können den SMOTE-Algorithmus verwenden, um Minderheitenklassenstichproben zu synthetisieren und den Datensatz auszugleichen. Dies kann mithilfe der imblearn-Bibliothek implementiert werden.
from imblearn.over_sampling import SMOTE from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, recall_score, f1_score # 加载数据集并划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 使用SMOTE算法进行数据重采样 smote = SMOTE(random_state=42) X_train_resampled, y_train_resampled = smote.fit_resample(X_train, y_train) # 训练逻辑回归模型 model = LogisticRegression(random_state=42) model.fit(X_train_resampled, y_train_resampled) # 在测试集上进行预测 y_pred = model.predict(X_test) # 计算评估指标 accuracy = accuracy_score(y_test, y_pred) recall = recall_score(y_test, y_pred) f1 = f1_score(y_test, y_pred) print("Accuracy: {:.2f}%, Recall: {:.2f}%, F1: {:.2f}%".format(accuracy*100, recall*100, f1*100))
4. Anpassung des Klassifizierungsalgorithmus: Beim Training des Modells können Sie Kategoriegewichte festlegen, um den Datensatz auszugleichen. Beispielsweise kann im logistischen Regressionsalgorithmus der Parameter class_weight so eingestellt werden, dass die Anzahl der Stichproben in verschiedenen Kategorien ausgeglichen wird.
# 训练逻辑回归模型并设置类别权重 model = LogisticRegression(random_state=42, class_weight="balanced") model.fit(X_train, y_train) # 在测试集上进行预测 y_pred = model.predict(X_test) # 计算评估指标 accuracy = accuracy_score(y_test, y_pred) recall = recall_score(y_test, y_pred) f1 = f1_score(y_test, y_pred) print("Accuracy: {:.2f}%, Recall: {:.2f}%, F1: {:.2f}%".format(accuracy*100, recall*100, f1*100))
5. Ensemble-Lernalgorithmus: Wir können den Random-Forest-Algorithmus zum Ensemble-Lernen verwenden. Konkret kann es mithilfe der Sklearn-Bibliothek in Python implementiert werden:
from sklearn.ensemble import RandomForestClassifier # 训练随机森林模型 model = RandomForestClassifier(random_state=42) model.fit(X_train, y_train) # 在测试集上进行预测 y_pred = model.predict(X_test) # 计算评估指标 accuracy = accuracy_score(y_test, y_pred) recall = recall_score(y_test, y_pred) f1 = f1_score(y_test, y_pred) print("Accuracy: {:.2f}%, Recall: {:.2f}%, F1: {:.2f}%".format(accuracy*100, recall*100, f1*100))
Zusammenfassend umfassen Methoden zum Umgang mit unausgeglichenen Datensätzen Daten-Resampling, Anpassung des Klassifizierungsalgorithmus und Ensemble-Lernalgorithmen. Basierend auf dem spezifischen Problem muss die geeignete Methode ausgewählt und das Modell bewertet und angepasst werden, um eine bessere Leistung zu erzielen.
Das obige ist der detaillierte Inhalt vonWelche Klassifizierungsmethoden gibt es, um mit unausgeglichenen Datensätzen umzugehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!