Rumah > Peranti teknologi > AI > Apakah kaedah pengelasan untuk menangani set data yang tidak seimbang?

Apakah kaedah pengelasan untuk menangani set data yang tidak seimbang?

王林
Lepaskan: 2024-01-24 15:00:05
ke hadapan
1277 orang telah melayarinya

Apakah kaedah pengelasan untuk menangani set data yang tidak seimbang?

Dalam bidang pembelajaran mesin, set data tidak seimbang adalah masalah biasa, yang merujuk kepada perbezaan besar dalam bilangan sampel kategori berbeza dalam set data latihan. Sebagai contoh, dalam masalah klasifikasi binari, bilangan sampel positif adalah jauh lebih kecil daripada bilangan sampel negatif. Ini akan menyebabkan model terlatih lebih cenderung untuk meramalkan bilangan kategori yang lebih besar dan mengabaikan bilangan kategori yang lebih kecil, sekali gus menjejaskan prestasi model. Oleh itu, set data yang tidak seimbang perlu diklasifikasikan untuk meningkatkan prestasi model.

Artikel ini akan menggunakan contoh khusus untuk menggambarkan cara mengklasifikasikan set data yang tidak seimbang. Katakan kita mempunyai masalah klasifikasi binari di mana bilangan sampel positif ialah 100, bilangan sampel negatif ialah 1000, dan dimensi vektor ciri ialah 10. Untuk menangani set data yang tidak seimbang, langkah-langkah berikut boleh diambil: 1. Gunakan teknik undersampling atau oversampling untuk mengimbangi data, seperti algoritma SMOTE. 2. Gunakan penunjuk penilaian yang sesuai, seperti ketepatan, ketepatan, ingat semula, dsb., untuk menilai prestasi model. 3. Laraskan ambang pengelas untuk mengoptimumkan prestasi model pada kelas minoriti. 4. Gunakan kaedah pembelajaran ensemble, seperti hutan rawak atau pokok penggalak kecerunan, untuk meningkatkan prestasi generalisasi model

1. Fahami set data: Analisis set data dan dapatkan bilangan sampel positif adalah jauh lebih kecil daripada bilangan sampel negatif.

2 Pilih metrik penilaian yang sesuai: Disebabkan ketidakseimbangan set data, kami memilih ketepatan, ingat semula dan nilai F1 sebagai metrik penilaian.

Anda boleh menggunakan algoritma SMOTE untuk mensintesis sampel kelas minoriti dan mengimbangi set data. Ini boleh dilaksanakan menggunakan perpustakaan imblearn.

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))
Salin selepas log masuk

4. Pelarasan algoritma klasifikasi: Apabila melatih model, anda boleh menetapkan berat kategori untuk mengimbangi set data. Sebagai contoh, dalam algoritma regresi logistik, parameter class_weight boleh ditetapkan untuk mengimbangi bilangan sampel dalam kategori yang berbeza.

# 训练逻辑回归模型并设置类别权重
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))
Salin selepas log masuk

5 Algoritma pembelajaran ensemble: Kita boleh menggunakan algoritma hutan rawak untuk pembelajaran ensemble. Secara khususnya, ia boleh dilaksanakan menggunakan perpustakaan sklearn dalam Python:

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))
Salin selepas log masuk

Ringkasnya, kaedah untuk menangani set data yang tidak seimbang termasuk pensampelan semula data, pelarasan algoritma klasifikasi dan algoritma pembelajaran ensemble. Kaedah yang sesuai perlu dipilih berdasarkan masalah khusus, dan model perlu dinilai dan diselaraskan untuk mencapai prestasi yang lebih baik.

Atas ialah kandungan terperinci Apakah kaedah pengelasan untuk menangani set data yang tidak seimbang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:163.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan