Rumah  >  Artikel  >  Peranti teknologi  >  Kesan strategi pensampelan set data ke atas prestasi model

Kesan strategi pensampelan set data ke atas prestasi model

WBOY
WBOYasal
2023-10-09 08:01:06916semak imbas

Kesan strategi pensampelan set data ke atas prestasi model

Impak strategi pensampelan set data pada prestasi model memerlukan contoh kod khusus

Dengan perkembangan pesat pembelajaran mesin dan pembelajaran mendalam, The kualiti dan saiz set data menjadi semakin penting untuk prestasi model. Dalam aplikasi praktikal, kami sering menghadapi masalah seperti saiz set data yang berlebihan, kategori sampel tidak seimbang dan bunyi bising. Pada masa ini, pilihan strategi persampelan yang munasabah boleh meningkatkan prestasi dan keupayaan generalisasi model. Artikel ini akan membincangkan kesan strategi pensampelan set data yang berbeza pada prestasi model melalui contoh kod tertentu.

  1. Pensampelan rawak
    Pensampelan rawak ialah salah satu strategi pensampelan set data yang paling biasa. Semasa proses latihan, kami secara rawak memilih bahagian tertentu sampel daripada set data sebagai set latihan. Kaedah ini mudah dan intuitif, tetapi ia boleh menyebabkan pengedaran kategori sampel yang tidak seimbang atau kehilangan sampel penting. Berikut ialah kod sampel:
import numpy as np

def random_sampling(X, y, sample_ratio):
    num_samples = int(sample_ratio * X.shape[0])
    indices = np.random.choice(X.shape[0], num_samples, replace=False)
    X_sampled = X[indices]
    y_sampled = y[indices]
    return X_sampled, y_sampled
  1. pensampelan berstrata
    Pensampelan berstrata ialah strategi biasa untuk menyelesaikan masalah ketidakseimbangan kelas sampel. Dalam persampelan berstrata, kami menyusun set data mengikut kategori sampel dan memilih perkadaran sampel daripada setiap kategori. Kaedah ini boleh mengekalkan perkadaran setiap kategori dalam set data, dengan itu meningkatkan keupayaan model untuk mengendalikan kategori minoriti. Berikut ialah kod sampel:
from sklearn.model_selection import train_test_split
from sklearn.utils import resample

def stratified_sampling(X, y, sample_ratio):
    X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, test_size=1-sample_ratio)
    X_sampled, y_sampled = resample(X_train, y_train, n_samples=int(sample_ratio * X.shape[0]))
    return X_sampled, y_sampled
  1. Pensampelan Tepi
    Pensampelan tepi ialah strategi biasa untuk menyelesaikan masalah bunyi bising. Dalam pensampelan tepi, kami membahagikan sampel kepada sampel yang boleh dipercayai dan sampel bunyi dengan mempelajari model, dan kemudian hanya memilih sampel yang boleh dipercayai untuk latihan. Berikut ialah kod sampel:
from sklearn.svm import OneClassSVM

def margin_sampling(X, y, sample_ratio):
    clf = OneClassSVM(gamma='scale')
    clf.fit(X)
    y_pred = clf.predict(X)
    reliable_samples = X[y_pred == 1]
    num_samples = int(sample_ratio * X.shape[0])
    indices = np.random.choice(reliable_samples.shape[0], num_samples, replace=False)
    X_sampled = reliable_samples[indices]
    y_sampled = y[indices]
    return X_sampled, y_sampled

Ringkasnya, strategi pensampelan set data yang berbeza mempunyai kesan yang berbeza pada prestasi model. Persampelan rawak boleh dengan mudah dan cepat mendapatkan set latihan, tetapi ia boleh menyebabkan kategori sampel tidak seimbang boleh mengekalkan keseimbangan kategori sampel dan meningkatkan keupayaan model untuk mengendalikan kategori minoriti boleh menapis sampel yang bising dan meningkatkan keteguhan; daripada jantina model. Dalam aplikasi praktikal, kita perlu memilih strategi pensampelan yang sesuai berdasarkan masalah khusus, dan memilih strategi optimum melalui eksperimen dan penilaian untuk meningkatkan prestasi dan keupayaan generalisasi model.

Atas ialah kandungan terperinci Kesan strategi pensampelan set data ke atas prestasi model. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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