Saya menggunakan perpustakaan ini untuk mengimplementasikan agen pembelajaran.
Saya telah membuat kasus pelatihan, tetapi saya tidak tahu pasti apa validasi dan set tes.
Sang guru berkata:
70% harus menjadi kasus kereta api, 10% akan menjadi kasus uji dan sisanya 20% harus menjadi kasus validasi.
sunting
Saya memiliki kode ini untuk pelatihan, tetapi saya tidak tahu kapan harus berhenti pelatihan.
def train(self, train, validation, N=0.3, M=0.1):
# N: learning rate
# M: momentum factor
accuracy = list()
while(True):
error = 0.0
for p in train:
input, target = p
self.update(input)
error = error + self.backPropagate(target, N, M)
print "validation"
total = 0
for p in validation:
input, target = p
output = self.update(input)
total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output
accuracy.append(total)
print min(accuracy)
print sum(accuracy[-5:])/5
#if i % 100 == 0:
print 'error %-14f' % error
if ? < ?:
break
sunting
Saya bisa mendapatkan kesalahan rata-rata 0,2 dengan data validasi, setelah mungkin 20 kali pelatihan, seharusnya 80%?
rata-rata kesalahan = jumlah perbedaan absolut antara target validasi dan output, mengingat input data validasi / ukuran data validasi.
1
avg error 0.520395
validation
0.246937882684
2
avg error 0.272367
validation
0.228832420879
3
avg error 0.249578
validation
0.216253590304
...
22
avg error 0.227753
validation
0.200239244714
23
avg error 0.227905
validation
0.199875013416
Jawaban:
Set pelatihan dan validasi digunakan selama pelatihan.
Setelah Anda selesai pelatihan, maka Anda menjalankan terhadap set pengujian Anda dan memverifikasi bahwa keakuratannya cukup.
Set Pelatihan : set data ini digunakan untuk menyesuaikan bobot pada jaringan saraf.
Set Validasi : set data ini digunakan untuk meminimalkan overfitting. Anda tidak menyesuaikan bobot jaringan dengan set data ini, Anda hanya memverifikasi bahwa setiap peningkatan akurasi atas set data pelatihan benar-benar menghasilkan peningkatan akurasi atas set data yang belum pernah ditampilkan ke jaringan sebelumnya, atau setidaknya jaringan belum dilatih untuk itu (yaitu kumpulan data validasi). Jika akurasi atas set data pelatihan meningkat, tetapi akurasi atas set data validasi tetap sama atau menurun, maka Anda overfitting jaringan saraf Anda dan Anda harus menghentikan pelatihan.
Set Pengujian : set data ini hanya digunakan untuk menguji solusi akhir untuk mengkonfirmasi daya prediksi aktual dari jaringan.
sumber
validation set
tidaktest set
digunakan untuk mengatur bobot jaringan saraf. Mengapa Anda tidak bisa menggunakan kumpulan data yang sama, tidak digunakan untuk melatih bobot, sepertivalidation set
dantest set
? Apa yang diperoleh dengan memisahkan mereka?Dari ftp://ftp.sas.com/pub/neural/FAQ1.txt bagian " Apa populasi, sampel, set pelatihan, set desain, validasi "
Permukaan kesalahan akan berbeda untuk set data yang berbeda dari set data Anda (pembelajaran batch). Karenanya, jika Anda menemukan minima lokal yang sangat bagus untuk data set pengujian Anda, itu mungkin bukan poin yang sangat baik, dan mungkin merupakan titik yang sangat buruk di permukaan yang dihasilkan oleh beberapa set data lain untuk masalah yang sama. Oleh karena itu Anda perlu menghitung model seperti itu yang tidak hanya menemukan konfigurasi bobot yang baik untuk set pelatihan tetapi juga harus dapat memprediksi data baru (yang tidak ada dalam set pelatihan) dengan kesalahan yang baik. Dengan kata lain jaringan harus dapat menggeneralisasi contoh-contoh sehingga ia mempelajari data dan tidak hanya mengingat atau memuat set pelatihan dengan overfitting data pelatihan.
Set data validasi adalah serangkaian data untuk fungsi yang ingin Anda pelajari, yang tidak Anda gunakan secara langsung untuk melatih jaringan. Anda melatih jaringan dengan satu set data yang Anda sebut kumpulan data pelatihan. Jika Anda menggunakan algoritma berbasis gradien untuk melatih jaringan, maka permukaan kesalahan dan gradien di beberapa titik akan sepenuhnya bergantung pada set data pelatihan sehingga set data pelatihan secara langsung digunakan untuk menyesuaikan bobot. Untuk memastikan Anda tidak overfit jaringan Anda perlu memasukkan dataset validasi ke jaringan dan memeriksa apakah kesalahan itu dalam beberapa rentang. Karena set validasi tidak digunakan secara langsung untuk menyesuaikan bobot netowork, maka kesalahan yang baik untuk validasi dan juga set tes menunjukkan bahwa jaringan memprediksi dengan baik untuk contoh set kereta,
Berhenti lebih awal adalah cara untuk menghentikan pelatihan. Ada variasi berbeda yang tersedia, garis besarnya adalah, baik kesalahan set kereta dan validasi dipantau, kesalahan kereta berkurang pada setiap iterasi (backprop dan saudara) dan pada awalnya kesalahan validasi berkurang. Pelatihan dihentikan pada saat kesalahan validasi mulai meningkat. Konfigurasi bobot pada titik ini menunjukkan model, yang memprediksi data pelatihan dengan baik, serta data yang tidak terlihat oleh jaringan . Tetapi karena data validasi sebenarnyamempengaruhi konfigurasi bobot secara tidak langsung untuk memilih konfigurasi bobot. Di sinilah set Tes masuk. Set data ini tidak pernah digunakan dalam proses pelatihan. Setelah model dipilih berdasarkan set validasi, data set uji diterapkan pada model jaringan dan kesalahan untuk set ini ditemukan. Kesalahan ini merupakan perwakilan dari kesalahan yang dapat kita harapkan dari data yang benar-benar baru untuk masalah yang sama.
EDIT:
Juga, dalam hal Anda tidak memiliki cukup data untuk set validasi, Anda dapat menggunakan crossvalidation untuk menyesuaikan parameter serta memperkirakan kesalahan pengujian.
sumber
Set validasi silang digunakan untuk pemilihan model, misalnya, pilih model polinomial dengan jumlah kesalahan paling sedikit untuk set parameter yang diberikan. Set tes kemudian digunakan untuk melaporkan kesalahan generalisasi pada model yang dipilih. Dari sini: https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets
sumber
Kami membuat set validasi ke
Mengapa set validasi digunakan :
sumber
Katakanlah Anda melatih model pada set pelatihan dan kemudian mengukur kinerjanya pada set tes. Anda berpikir bahwa masih ada ruang untuk perbaikan dan Anda mencoba mengubah parameter-hiper (Jika model adalah Jaringan Saraf - parameter-hyper adalah jumlah lapisan, atau node dalam lapisan). Sekarang Anda mendapatkan kinerja yang sedikit lebih baik. Namun, ketika model dikenakan data lain (tidak dalam set pengujian dan pelatihan) Anda mungkin tidak mendapatkan tingkat akurasi yang sama. Ini karena Anda memperkenalkan beberapa bias sambil mengubah parameter hiper untuk mendapatkan akurasi yang lebih baik pada set pengujian. Anda pada dasarnya telah mengadaptasi model dan hiper-parameter untuk menghasilkan model terbaik untuk set pelatihan tertentu.
Solusi umum adalah dengan memecah set pelatihan lebih lanjut untuk membuat set validasi . Sekarang kamu punya
Anda melanjutkan seperti sebelumnya tetapi kali ini Anda menggunakan set validasi untuk menguji kinerja dan men-tweak parameter-hiper. Lebih khusus lagi, Anda melatih banyak model dengan berbagai hiper-parameter pada set pelatihan yang dikurangi (yaitu, set pelatihan penuh dikurangi set validasi), dan Anda memilih model yang berkinerja terbaik pada set validasi.
Setelah Anda memilih model dengan kinerja terbaik pada set validasi, Anda melatih model terbaik pada set pelatihan penuh (termasuk set validasi), dan ini memberi Anda model terakhir.
Terakhir, Anda mengevaluasi model akhir ini pada set tes untuk mendapatkan perkiraan kesalahan generalisasi.
sumber
Pelatihan Dataset : Sampel data yang digunakan agar sesuai dengan model.
Validasi Dataset : Sampel data yang digunakan untuk memberikan evaluasi model yang tidak bias pada dataset pelatihan saat menyetel model hiperparameter. Evaluasi menjadi lebih bias karena keterampilan pada dataset validasi dimasukkan ke dalam konfigurasi model.
Test Dataset : Sampel data yang digunakan untuk memberikan evaluasi yang tidak bias dari model akhir yang sesuai pada dataset pelatihan.
sumber
Dengan kata sederhana, tentukan set Pelatihan, set Tes, set Validasi
Set pelatihan: Digunakan untuk menemukan tetangga terdekat. Set validasi: Adalah untuk menemukan k yang berbeda yang berlaku untuk set train. Kumpulan uji: Digunakan untuk menemukan akurasi maksimum dan data yang tidak terlihat di masa mendatang.
sumber