Saat ini saya sedang bekerja dengan Python dan Scikit belajar untuk keperluan klasifikasi, dan melakukan beberapa pembacaan di sekitar GridSearch. Saya pikir ini adalah cara yang bagus untuk mengoptimalkan parameter estimator saya untuk mendapatkan hasil terbaik.
Metodologi saya adalah ini:
- Bagi data saya menjadi pelatihan / tes.
- Gunakan GridSearch dengan validasi 5Fold Cross untuk melatih dan menguji estimator saya (Hutan Acak, Peningkatan Gradien, antara lain) untuk mendapatkan estimator terbaik dengan kombinasi optimal parameter hiper.
- Saya kemudian menghitung metrik pada masing-masing estimator saya seperti Precision, Recall, FMeasure dan Matthews Correlation Coefficient, menggunakan set pengujian saya untuk memprediksi klasifikasi dan membandingkannya dengan label kelas aktual.
Pada tahap ini saya melihat perilaku aneh dan saya tidak yakin bagaimana untuk melanjutkan. Apakah saya mengambil .best_estimator_ dari GridSearch dan menggunakan ini sebagai output 'optimal' dari pencarian grid , dan melakukan prediksi menggunakan estimator ini? Jika saya melakukan ini, saya menemukan bahwa metrik tahap 3 biasanya jauh lebih rendah daripada jika saya hanya melatih semua data pelatihan dan menguji pada set tes. Atau, apakah saya hanya mengambil objek GridSearchCV keluaran sebagai penaksir baru ? Jika saya melakukan ini, saya mendapatkan skor yang lebih baik untuk metrik tahap 3 saya, tetapi rasanya aneh menggunakan objek GridSearchCV alih-alih classifier yang dimaksud (Misalnya Hutan acak) ...
EDIT: Jadi pertanyaan saya adalah apa perbedaan antara objek GridSearchCV yang dikembalikan dan atribut .best_estimator_? Yang mana yang harus saya gunakan untuk menghitung metrik lebih lanjut? Dapatkah saya menggunakan output ini seperti classifier biasa (misalnya menggunakan predict), atau bagaimana saya harus menggunakannya?
sumber
refit=False
makaclf.fit
tidak akan dilakukan dengan classifier terbaik?GridSearchCV memungkinkan Anda menggabungkan estimator dengan pembukaan pencarian kotak untuk menyetel parameter-hiper. Metode ini mengambil parameter optimal dari pencarian grid dan menggunakannya dengan estimator yang dipilih oleh pengguna. GridSearchCV mewarisi metode dari classifier, jadi ya, Anda dapat menggunakan metode .score, .predict, dll. Langsung melalui antarmuka GridSearchCV. Jika Anda ingin mengekstrak parameter hiper terbaik yang diidentifikasi oleh pencarian kotak, Anda dapat menggunakan .best_params_ dan ini akan mengembalikan parameter hiper terbaik. Anda kemudian dapat meneruskan parameter-hiper ini ke estimator Anda secara terpisah.
Menggunakan .predict secara langsung akan menghasilkan hasil yang sama dengan mendapatkan parameter-hiper terbaik melalui .best_param_ dan kemudian menggunakannya dalam model Anda. Dengan memahami cara kerja menggarisbawahi pencarian grid kita dapat melihat mengapa hal ini terjadi.
Pencarian Grid
Teknik ini digunakan untuk menemukan parameter optimal untuk digunakan dengan suatu algoritma. Ini BUKAN bobot atau model, itu dipelajari menggunakan data. Ini jelas sangat membingungkan sehingga saya akan membedakan antara parameter-parameter ini, dengan memanggil satu parameter-hiper.
Hyper-parameter seperti k di k-Nearest Neighbors (k-NN). k-NN mengharuskan pengguna untuk memilih tetangga yang akan dipertimbangkan saat menghitung jarak. Algoritme kemudian menyetel parameter, ambang, untuk melihat apakah contoh novel termasuk dalam distribusi yang dipelajari, ini dilakukan dengan data.
Bagaimana kita memilih k?
Beberapa orang hanya pergi dengan rekomendasi berdasarkan studi terakhir dari tipe data. Lainnya menggunakan pencarian kotak. Metode ini akan dapat menentukan k mana yang paling optimal untuk digunakan untuk data Anda.
Bagaimana cara kerjanya?
Ini bertentangan dengan prinsip tidak menggunakan data uji !!
Nilai parameter-hiper yang dipilih adalah nilai yang mencapai kinerja rata-rata tertinggi di seluruh lipatan-n. Setelah Anda puas dengan algoritma Anda, maka Anda dapat mengujinya pada set pengujian. Jika Anda langsung menuju set pengujian maka Anda berisiko overfitting.
sumber