Rumah Keuangan Pribadi Berjuang dengan Overfitting in Machine Learning - dummies

Berjuang dengan Overfitting in Machine Learning - dummies

Daftar Isi:

Video: BERJUANG DENGAN CINTA (MITRA KUKAR) by Domy Stupa 2024

Video: BERJUANG DENGAN CINTA (MITRA KUKAR) by Domy Stupa 2024
Anonim

Mengingat arsitektur jaringan syaraf tiruan, Anda bisa membayangkan betapa mudahnya algoritma tersebut dapat mempelajari hampir semua hal dari data, terutama jika Anda menambahkan terlalu banyak lapisan. Sebenarnya, algoritme melakukannya dengan sangat baik sehingga ramalannya sering dipengaruhi oleh varians perkiraan tinggi yang disebut overfitting. Overfitting menyebabkan jaringan saraf mempelajari setiap detail contoh pelatihan, yang memungkinkan untuk meniru mereka dalam fase prediksi. Tapi selain dari set pelatihan, tidak akan pernah benar memprediksi sesuatu yang berbeda.

Memahami masalah overfitting

Bila Anda menggunakan jaringan syaraf tiruan untuk masalah yang sebenarnya, Anda harus mengambil beberapa langkah peringatan dengan cara yang jauh lebih ketat daripada algoritma lainnya. Jaringan syaraf tiruan lebih lemah dan lebih rentan terhadap kesalahan yang relevan daripada solusi pembelajaran mesin lainnya.

Pertama, Anda membagi data dengan hati-hati menjadi pelatihan, validasi, dan tes. Sebelum algoritma belajar dari data, Anda harus mengevaluasi kebaikan parameter Anda: arsitektur (jumlah lapisan dan simpul di dalamnya); fungsi aktivasi; parameter pembelajaran; dan jumlah iterasi. Secara khusus, arsitektur ini menawarkan banyak kesempatan untuk menciptakan model prediktif yang kuat dengan risiko overfitting yang tinggi. Parameter belajar mengontrol seberapa cepat sebuah jaringan belajar dari data, namun mungkin tidak cukup untuk mencegah overfitting data pelatihan.

Anda memiliki dua kemungkinan solusi untuk masalah ini:

  • Solusi pertama adalah regularisasi, seperti pada regresi linier dan logistik. Anda dapat menghitung semua koefisien koneksi, kuadrat atau nilai absolut, untuk menghukum model dengan terlalu banyak koefisien dengan nilai tinggi (dicapai dengan regularisasi L2) atau dengan nilai yang berbeda dari nol (dicapai dengan regularisasi L1).
  • Solusi kedua juga efektif karena kontrol saat terjadi overfitting. Ini disebut early-stop dan bekerja dengan memeriksa fungsi biaya pada set validasi saat algoritma belajar dari rangkaian pelatihan.

Anda mungkin tidak menyadari kapan model Anda mulai overfitting. Fungsi biaya yang dihitung dengan menggunakan set pelatihan terus meningkat seiring kemajuan pengoptimalan. Namun, segera setelah Anda mulai merekam suara dari data dan berhenti mempelajari peraturan umum, Anda dapat memeriksa fungsi biaya pada sampel yang tidak diunggah (sampel validasi). Pada titik tertentu, Anda akan melihat bahwa itu berhenti membaik dan mulai memburuk, yang berarti model Anda telah mencapai batas belajarnya.

Membuka kotak hitam jaringan saraf

Cara terbaik untuk belajar membangun jaringan saraf adalah dengan membangunnya. Python menawarkan banyak kemungkinan implementasi untuk jaringan syaraf tiruan dan pembelajaran yang dalam. Python memiliki perpustakaan seperti Theano, yang memungkinkan perhitungan kompleks pada tingkat abstrak, dan paket praktis lainnya, seperti Lasagne, yang memungkinkan Anda membangun jaringan syaraf tiruan, meskipun masih membutuhkan beberapa abstraksi. Untuk alasan ini, Anda memerlukan pembungkus, seperti nolearn, yang kompatibel dengan scikit-learn, atau Keras, yang juga bisa membungkus perpustakaan TensorFlow yang dirilis oleh Google yang berpotensi menggantikan Theano sebagai perpustakaan perangkat lunak untuk perhitungan saraf.

R menyediakan perpustakaan yang kurang rumit dan lebih mudah diakses, seperti nnet, AMORE, dan neuralnet. Contoh singkat di R ini menunjukkan bagaimana cara melatih kedua jaringan klasifikasi (pada kumpulan data Iris) dan jaringan regresi (pada kumpulan data Boston). Mulai dari klasifikasi, kode berikut memuat kumpulan data dan membaginya menjadi set pelatihan dan tes:

perpustakaan (neuralnet)

target <- model. matriks (~ Spesies & # x00A0; - 1, data = iris)

colnames (target) <- c ("setosa", "versicolor", "virginica")

. benih (101)

indeks <- sampel (1: nrow (iris), 100)

train_predictors <- iris [index, 1: 4]

test_predictors <- iris [-index, 1: 4]

Karena jaringan saraf mengandalkan keturunan gradien, Anda perlu menstandarisasi atau menormalkan masukan. Normalisasi lebih baik sehingga minimal adalah nol dan maksimal satu untuk setiap fitur. Tentu, Anda belajar bagaimana membuat konversi numerik menggunakan pelatihan yang ditetapkan hanya untuk menghindari kemungkinan menggunakan informasi dari tes di luar sampel.

min_vector <- apply (train_predictors, 2, min)

range_vector <- apply (train_predictors, 2, max) -

berlaku (train_predictors, 2, min)

train_scaled <- cbind (skala train_predictors,

min_vector, range_vector),

target [index,])

test_scaled <- cbind (skala (test_predictors,

min_vector, range_vector),

target [-index,]) < summary (train_scaled)

Saat set pelatihan sudah siap, Anda bisa melatih model untuk menebak tiga variabel biner, masing-masing mewakili kelas. Outputnya adalah nilai untuk setiap kelas yang sebanding dengan probabilitasnya menjadi kelas sesungguhnya. Anda memilih prediksi dengan mengambil nilai tertinggi. Anda juga dapat memvisualisasikan jaringan dengan menggunakan plot internal dan dengan demikian melihat arsitektur jaringan syaraf tiruan dan bobot yang ditetapkan.

set. benih (102)

nn_iris <- neuralnet (setosa + versicolor + virginica ~

Panjang Sepal Panjang + Sepal Width

+ Petal Panjang + Petal Lebar,

data = kereta_scaled, hidden = c (2),

linear output = F)

plot (nn_iris)

prediksi <- hitung (nn_iris, test_scaled [1: 4])

y_predicted <- apply (prediksi $ net. hasil, 1, yang max)

y_true <- apply (test_scaled [5: 7], 1, yang max)

confusion_matrix <- table (y_true, y_predicted)

akurasi <- sum diag (confusion_matrix)) /

jumlah (confusion_matrix)

print (confusion_matrix)

print (paste ("Akurasi:", akurasi))

Anda dapat merencanakan jaringan saraf yang terlatih.

Contoh berikut menunjukkan bagaimana memprediksi nilai rumah di Boston, dengan menggunakan kumpulan data Boston. Prosedurnya sama seperti pada klasifikasi sebelumnya, tapi di sini Anda memiliki satu unit output. Kode tersebut juga memplot hasil prediksi test set terhadap nilai sebenarnya untuk memverifikasi kecocokan model.

no_examples <- nrow (Boston)

fitur <- colnames (Boston)

set. benih (101)

indeks <- sample (1: no_examples, 400)

kereta <- boston [index,]

test <- boston [-index,]

min_vector <- apply (kereta api, 2, min)

range_vector <- apply (kereta api, 2, max) - berlaku (kereta api, 2, min)

scaled_train <- scale (kereta api, min_vector, range_vector)

scaled_test <- scale test, min_vector, range_vector)

formula = paste ("medv ~", paste (fitur [1: 13],

collapse = & apos; + & apos;))

nn_boston <- neuralnet (formula, data = scaled_train,

hidden = c (5, 3), linear, output = T)

prediksi <- hitung (nn_boston, scaled_test [1: 13])

forecast_values ​​<- (prediksi $ net. Hasil [<] range_vector [14]) + min_vector [14]

RMSE <- sqrt (rata-rata ((uji [14] - expected_values) ^ 2))

cetak (paste ("RMSE:", RMSE))

plot (uji [14], prediksi_values, cex = 1. 5)

abline (0, 1, lwd = 1)

Berjuang dengan Overfitting in Machine Learning - dummies

Pilihan Editor

Bagaimana Menyediakan Dokumen dengan CSS3 - dummies

Bagaimana Menyediakan Dokumen dengan CSS3 - dummies

Menggunakan CSS3 untuk membuat garis besar dokumen berguna bila halaman berisi banyak materi dan Anda ingin pengguna menavigasi dengan mudah. Garis besar bergantung pada berbagai tag yang Anda berikan. Metode pembuatan dokumen saat ini adalah menggunakan tag sampai . Pendekatan ini bekerja dengan baik ...

Cara Mendaftar untuk Akun Google - dummies

Cara Mendaftar untuk Akun Google - dummies

Pembuat google Page menyediakan alat canggih yang memungkinkan bahkan halaman desain perancang pemula Sebelum Anda dapat menggunakan Google Page Creator untuk membuat halaman Web Anda sendiri, Anda harus mendaftar ke akun Google. Untuk mendaftar dan memulai membangun situs Web, ikuti langkah-langkah ini:

Bagaimana mengedarkan tepi dan membuat beberapa kolom dengan CSS3 - dummies

Bagaimana mengedarkan tepi dan membuat beberapa kolom dengan CSS3 - dummies

Daripada memiliki untuk menggunakan hingga empat gambar terpisah untuk memberi ilusi bentuk melengkung di situs Anda, dengan CSS3 Anda sekarang dapat membuat wadah dengan sudut melengkung! Inilah kodenya, yang memiliki deklarasi CSS3 yang didukung penuh di bagian atas diikuti oleh duplikat yang diawali untuk browser lainnya: #box {border-radius: 20px; ...

Pilihan Editor

PHP & MySQL For Dummies Cheat Sheet - dummies

PHP & MySQL For Dummies Cheat Sheet - dummies

Saat menulis program PHP untuk membuat aplikasi database Web Anda dan berkomunikasi Dengan database MySQL, Anda memiliki banyak hal yang perlu diingat. Anda harus mengeja kode dengan benar dan menggunakan sintaks yang sempurna. Lembar Cheat ini memberikan referensi untuk melihat secara cepat sintaks yang benar untuk kode yang paling sering Anda gunakan.

Gunakan kembali Kode di Program PHP melalui Fungsi - dummies

Gunakan kembali Kode di Program PHP melalui Fungsi - dummies

Anda dapat, dengan bantuan sebuah auto_prepend_file, buat sebuah fungsi file yang secara otomatis disertakan dalam semua program PHP Anda. Fungsi ini mungkin sesuatu yang sederhana seperti memulai sesi atau serumit fungsi login keseluruhan. Setiap kali Anda membutuhkan atau berpikir bahwa Anda perlu memiliki fungsi di lebih dari satu file, ...

Memecahkan skrip PHP - dummies

Memecahkan skrip PHP - dummies

Anda tidak dapat menulis skrip tanpa membuat kesalahan tertentu. Caranya adalah dengan melatih diri untuk mengenalinya, putar mata Anda, katakan, "Tidak lagi," dan perbaiki saja. Satu pesan kesalahan yang akan Anda lihat berkali-kali adalah Parse error: parse error in c: test. php on line 7 Ini adalah cara PHP untuk mengatakan "Hah? "Artinya ...

Pilihan Editor

Bagaimana Membangun Kampanye Otomasi Pemasaran untuk Memimpin Memimpin Memelihara - dummies

Bagaimana Membangun Kampanye Otomasi Pemasaran untuk Memimpin Memimpin Memelihara - dummies

Anda dapat memberdayakan tenaga penjualan dengan mengasuh program otomasi pemasaran untuk membantu mereka menjadi lebih efektif dengan waktu mereka. Berikut adalah beberapa item yang perlu dipertimbangkan sebelum Anda membuat program pengasuhan yang spesifik ini: Segmentasi / otomasi: Anda perlu menyiapkan cara agar penjualan mengarah ke program tetes dalam Customer Relationship Management ...

Bagaimana Membangun Kampanye Pemasaran Otomatis untuk Penjualan Dingin Memimpin - dummies

Bagaimana Membangun Kampanye Pemasaran Otomatis untuk Penjualan Dingin Memimpin - dummies

Kampanye pemasaran otomatis pertama Anda harus membangun penjualan setelah menghidupkan pemberdayaan penjualan harus dirancang untuk menangkap dan memelihara prospek yang tidak dapat dicapai penjualan melalui proses penjualan. Prospek ini biasanya jatuh melalui celah-celah dan tidak pernah terdengar lagi. Banyak artikel yang mencakup keefektifan penjualan merujuk pada statistik bahwa ...

Bagaimana Membangun Kampanye Otomasi Pemasaran Memimpin Bersih Memimpin Baru - dummies

Bagaimana Membangun Kampanye Otomasi Pemasaran Memimpin Bersih Memimpin Baru - dummies

Tujuan jaring baru memimpin memupuk program otomasi pemasaran adalah untuk mengambil keputusan baru dari pertunangan pertamanya untuk menjadi timbal penjualan yang siap. Saat membangun program pengasuhan utama bersih pertama, gunakan daftar periksa berikut untuk memastikan bahwa Anda memiliki semua yang Anda butuhkan untuk membuat program hebat: Konten: Anda ...