Saya melatih multi-class LDA classifier dengan 8 kelas data.
Saat melakukan pelatihan, saya mendapat peringatan: " Variabel collinear "
Saya mendapatkan akurasi pelatihan lebih dari 90% .
Saya menggunakan perpustakaan scikits-learn di Python do train dan menguji data multi-kelas.
Saya mendapatkan akurasi pengujian yang layak juga (sekitar 85% -95% ).
Saya tidak mengerti apa arti kesalahan / peringatan itu. Tolong bantu saya.
Sepertinya saya pikir gui11aume telah memberi Anda jawaban yang bagus, saya ingin memberikan contoh dari sudut yang sedikit berbeda yang mungkin menerangi. Pertimbangkan bahwa kovariat dalam fungsi diskriminan Anda terlihat sebagai berikut:
Misalkan LDA terbaik memiliki batas linier berikut:
atau
Jadi koefisiennya sangat berbeda tetapi kedua persamaan tersebut memberikan batasan yang sama dan aturan prediksi yang sama. Jika satu bentuk baik, yang lain juga. Tetapi sekarang Anda dapat melihat mengapa gui11ame mengatakan bahwa koefisien tidak dapat diinterpretasikan.
Ada beberapa cara lain untuk mengekspresikan batasan ini juga dengan menggantikannyaX2 untuk memberikannya 0 Koefisien dan hal yang sama dapat dilakukan untuk X3 atau X4 . Namun dalam praktiknya collinearity adalah perkiraan. Ini memperburuk keadaan karena kebisingan memungkinkan jawaban yang unik. Gangguan data yang sangat sedikit akan menyebabkan koefisien berubah secara drastis. Tetapi untuk prediksi Anda baik-baik saja karena setiap persamaan mendefinisikan batas yang hampir sama dan LDA akan menghasilkan prediksi yang hampir sama.
sumber
Sementara jawaban yang ditandai di sini benar, saya pikir Anda mencari penjelasan berbeda untuk mengetahui apa yang terjadi dalam kode Anda. Saya memiliki masalah yang sama persis berjalan melalui model.
Inilah yang terjadi: Anda sedang melatih model Anda dengan variabel yang diprediksi sebagai bagian dari kumpulan data Anda. Inilah contoh apa yang terjadi pada saya tanpa menyadarinya:
Dalam kode ini, saya ingin memprediksi nilai 'COL3' ... tetapi, jika Anda melihat train_X, saya mengatakannya untuk mengambil setiap kolom kecuali yang terakhir, jadi itu memasukkan COL1 COL2 dan COL3, bukan COL4, dan mencoba memprediksi COL3 yang merupakan bagian dari train_X.
Saya memperbaikinya dengan hanya memindahkan kolom, secara manual memindahkan COL3 di Excel menjadi kolom terakhir dalam kumpulan data saya (sekarang mengambil tempat COL4), dan kemudian:
Jika Anda tidak ingin memindahkannya di Excel, dan ingin melakukannya dengan kode saja:
Perhatikan sekarang bagaimana saya menyatakan train_X, untuk memasukkan semua kolom kecuali COL3, yang merupakan bagian dari train_Y.
Saya harap itu membantu.
sumber