Saya mencoba untuk membakukan kolom dataset untuk regresi linier.
Salah satu kolom memiliki standar deviasi = 0.
def standardize(X):
return (X - mean(X)) / std(X)
Jadi kode ini tidak berfungsi.
Apakah ada trik untuk menyelesaikan masalah ini? Saya sudah mencoba dua hal
- Lempar kolom dengan standar deviasi 0 karena itu adalah parameter yang tidak berguna.
- Tambahkan beberapa noise yang sangat kecil seperti ke salah satu elemen kolom sehingga fungsinya bekerja.
standardize
Terima kasih!
regression
standardization
Pratik Deoghare
sumber
sumber
Jawaban:
Situasi yang Anda gambarkan akan muncul sebagai hasil dari salah satu dari dua skenario ini:
Untuk Skenario 1 : lewati kolom itu, standarisasi semua kolom lainnya, dan kemudian jalankan regresi seperti biasa.
Namun, untuk Skenario 2 , Anda harus menyingkirkan kolom konstanta tambahan itu seluruhnya. Bahkan, terlepas dari pertanyaan Standardisasi , Anda tidak akan pernah dapat menjalankan regresi dengan dua kolom konstan sejak saat itu Anda akan memiliki collinearity yang sempurna . Hasilnya adalah bahwa bahkan jika Anda mencoba menjalankan regresi, program komputer akan mengeluarkan pesan kesalahan dan berhenti di tengah jalan [Catatan: ini karena regresi OLS memerlukan matriks X'X menjadi non-singular untuk hal-hal yang berhasil benar].
Bagaimanapun, semoga berhasil dengan, um, kemunduran Anda!
[****] Hanya untuk memperjelas: Yang saya maksud dengan "dua kolom konstanta" adalah bahwa Anda memiliki satu kolom di mana setiap elemen adalah '1' dan kolom kedua di mana setiap elemen adalah beberapa 'k' konstan .. .
sumber
Cara yang benar adalah dengan menghapus kolom fitur dari data. Tetapi sebagai peretasan sementara -
Anda bisa mengganti 0 std ke 1 untuk fitur itu. Ini pada dasarnya akan berarti bahwa nilai skala akan menjadi nol untuk semua poin data untuk fitur itu. Ini masuk akal karena ini menyiratkan bahwa nilai-nilai fitur tidak menyimpang bahkan sedikit dari rata-rata (karena nilainya konstan, konstan adalah rata-rata.)
FYI- Inilah yang dilakukan sklearn! https://github.com/scikit-learn/scikit-learn/blob/7389dbac82d362f296dc2746f10e43ffa1615660/sklearn/preprocessing/data.py#L70
sumber
Fitur yang memiliki nol varians tidak berguna, hapus saja.
Pertimbangkan ini, jika ini adalah satu - satunya fitur, Anda tidak akan belajar apa pun tentang respons terhadap fitur ini dari data. Dalam kasus multivariat, dibutuhkan aljabar linier untuk sampai pada kesimpulan yang sama, tetapi idenya sama.
sumber