Konsekuensi dari Penskalaan Fitur

11

Saat ini saya menggunakan SVM dan meningkatkan fitur pelatihan saya ke kisaran [0,1]. Saya pertama kali cocok / mengubah set pelatihan saya dan kemudian menerapkan transformasi yang sama untuk set pengujian saya. Sebagai contoh:

    ### Configure transformation and apply to training set
    min_max_scaler = MinMaxScaler(feature_range=(0, 1))
    X_train = min_max_scaler.fit_transform(X_train)

    ### Perform transformation on testing set
    X_test = min_max_scaler.transform(X_test)

Mari kita asumsikan bahwa fitur yang diberikan dalam set pelatihan memiliki kisaran [0,100], dan fitur yang sama dalam set pengujian memiliki kisaran [-10.120]. Di set latihan fitur itu akan diskalakan dengan tepat ke [0,1], sementara di set pengujian fitur itu akan diskalakan ke rentang di luar yang ditentukan pertama, sesuatu seperti [-0.1,1.2].

Saya bertanya-tanya apa konsekuensi dari fitur set pengujian yang berada di luar jangkauan yang digunakan untuk melatih model? Apakah ini masalah?

mike1886
sumber

Jawaban:

6

Di dalam setiap kelas, Anda akan memiliki distribusi nilai untuk fitur. Itu sendiri bukanlah alasan untuk khawatir.

Dari sudut pandang yang sedikit teoretis, Anda dapat bertanya pada diri sendiri mengapa Anda harus membuat skala fitur Anda dan mengapa Anda harus menskalakannya dengan cara yang dipilih secara tepat.
Salah satu alasannya mungkin karena algoritma pelatihan khusus Anda diketahui konvergen lebih cepat (lebih baik) dengan nilai sekitar 0 - 1 daripada dengan fitur yang mencakup urutan besarnya lainnya. Kalau begitu, Anda mungkin baik-baik saja. Dugaan saya adalah SVM Anda baik-baik saja: Anda ingin menghindari angka yang terlalu besar karena produk dalam, tetapi maks 1.2 dan maks 1.0 tidak akan membuat banyak perbedaan.
(OTOH, jika Anda misalnya tahu algoritma Anda untuk tidak menerima nilai-nilai negatif Anda jelas akan bermasalah.)

Pertanyaan praktisnya adalah apakah model Anda berkinerja baik untuk kasus-kasus yang sedikit di luar jangkauan yang dicakup oleh pelatihan. Ini saya percaya paling baik dan mungkin hanya dijawab dengan pengujian dengan kasus-kasus seperti itu / memeriksa hasil tes untuk penurunan kinerja untuk kasus-kasus di luar domain pelatihan. Ini adalah masalah yang valid dan melihat ini akan menjadi bagian dari validasi model Anda.

Mengamati perbedaan ukuran yang Anda gambarkan adalah IMHO alasan untuk cukup melihat stabilitas model.

cbeleites tidak senang dengan SX
sumber
7

Ini dimaksudkan sebagai komentar tetapi terlalu panjang.

Fakta bahwa test set Anda memiliki rentang yang berbeda kekuatan merupakan tanda bahwa rangkaian pelatihan bukanlah representasi yang baik dari rangkaian tes. Namun, jika perbedaannya sangat kecil seperti pada contoh Anda, kemungkinan itu tidak akan mempengaruhi prediksi Anda. Sayangnya, saya tidak berpikir saya punya alasan bagus untuk berpikir itu tidak akan mempengaruhi SVM dalam keadaan apa pun.

Perhatikan bahwa alasan untuk menggunakan MinMaxScalar adalah (sesuai dengan dokumentasi):

Motivasi untuk menggunakan penskalaan ini mencakup ketahanan terhadap standar deviasi fitur yang sangat kecil dan mempertahankan nol entri pada data yang jarang.

Karena itu, penting bagi Anda untuk memastikan bahwa data Anda cocok dengan kasing itu.

Jika Anda benar-benar khawatir tentang memiliki rentang perbedaan, Anda harus menggunakan standardisasi reguler (seperti preprocessing.scale).

Robert Smith
sumber
Hai Robert, terima kasih atas jawabannya! Poin bagus tentang representasi set pelatihan / tes tetapi ini adalah data deret waktu sehingga data baru masuk Saya tidak dapat menjamin bahwa nilainya akan sama dalam kisaran dengan yang sebelumnya. Saya memiliki perasaan yang sama persis seperti Anda bahwa saya tidak memiliki alasan yang baik untuk berpikir itu tidak akan mempengaruhi SVM dalam keadaan apa pun.
mike1886
Sudahkah Anda membandingkan prediksi menggunakan MinMaxScaler dan standardisasi?
Robert Smith
Saya punya dan hasilnya mirip, tapi itu tidak benar-benar memberi tahu saya jika ada yang kacau dengan MinMaxScalar.
mike1886
Tentu. Bagaimanapun, akan lebih baik menggunakan standardisasi jika Anda tidak mendapatkan sesuatu yang berharga dari MinMaxScaler.
Robert Smith