Saya menggunakan paket nnet dalam R untuk mencoba membangun JST untuk memprediksi harga real estat untuk kondominium (proyek pribadi). Saya baru dalam hal ini dan tidak memiliki latar belakang matematika, jadi tolong beri tahu saya.
Saya memiliki variabel input yang bersifat biner dan kontinu. Misalnya beberapa variabel biner yang awalnya ya / tidak dikonversi ke 1/0 untuk neural net. Variabel lain seperti terus menerus Sqft
.
Saya telah menormalkan semua nilai pada skala 0-1. Mungkin Bedrooms
dan Bathrooms
seharusnya tidak dinormalisasi karena kisaran mereka hanya 0-4?
Apakah input campuran ini menimbulkan masalah bagi JST? Saya mendapatkan hasil yang baik-baik saja, tetapi setelah memeriksa dengan cermat bobot yang telah dipilih JST untuk variabel-variabel tertentu tampaknya tidak masuk akal. Kode saya di bawah, ada saran?
ANN <- nnet(Price ~ Sqft + Bedrooms + Bathrooms + Parking2 + Elevator +
Central.AC + Terrace + Washer.Dryer + Doorman + Exercise.Room +
New.York.View,data[1:700,], size=3, maxit=5000, linout=TRUE, decay=.0001)
UPDATE: Berdasarkan komentar di bawah ini tentang memecah input biner ke bidang yang terpisah untuk setiap kelas nilai, kode saya sekarang terlihat seperti:
ANN <- nnet(Price ~ Sqft + Studio + X1BR + X2BR + X3BR + X4BR + X1Bath
+ X2Bath + X3Bath + X4bath + Parking.Yes + Parking.No + Elevator.Yes + Elevator.No
+ Central.AC.Yes + Central.AC.No + Terrace.Yes + Terrace.No + Washer.Dryer.Yes
+ Washer.Dryer.No + Doorman.Yes + Doorman.No + Exercise.Room.Yes + Exercise.Room.No
+ New.York.View.Yes + New.York.View.No + Healtch.Club.Yes + Health.Club.No,
data[1:700,], size=12, maxit=50000, decay=.0001)
Node tersembunyi dalam kode di atas adalah 12, tetapi saya telah mencoba berbagai node tersembunyi dari 3 hingga 25 dan semuanya memberikan hasil yang lebih buruk daripada parameter asli yang saya miliki di atas dalam kode asli yang diposting. Saya juga sudah mencobanya dengan output linear = true / false.
Dugaan saya adalah bahwa saya perlu memberi makan data ke nnet dengan cara yang berbeda karena itu tidak menafsirkan input biner dengan benar. Entah itu, atau saya perlu memberikan parameter yang berbeda.
Ada ide?
sumber
Jawaban:
Salah satu cara untuk menangani situasi ini adalah mengubah skala input sehingga variansnya berada pada skala yang hampir sama. Saran ini umumnya diberikan untuk pemodelan regresi, tetapi itu benar-benar berlaku untuk semua situasi pemodelan yang melibatkan variabel yang diukur pada skala yang berbeda. Ini karena varians dari variabel biner sering sangat berbeda dari varians dari variabel kontinu. Gelman dan Hill (2006) merekomendasikan untuk men-rescaling input kontinu dengan dua standar deviasi untuk memperoleh paritas dengan input biner (tidak diskalakan). Rekomendasi ini juga tercermin dalam makalah dan posting blog .
Rekomendasi yang lebih spesifik untuk jaringan saraf adalah menggunakan "efek pengkodean" untuk input biner (yaitu, -1 dan 1) alih-alih "pengkodean boneka" (0 dan 1), dan untuk mengambil langkah tambahan memusatkan variabel kontinu. Rekomendasi ini datang dari FAQ yang luas oleh Warren Sarle, khususnya bagian "Mengapa tidak kode input biner sebagai 0 dan 1?" dan "Haruskah saya membakukan variabel input?" Intinya, adalah sama:
Adapun variabel kategori tidak terurut - Anda harus memecahnya menjadi indikator biner. Mereka hanya tidak berarti sebaliknya.
sumber