Saya memiliki dataset yang berisi 34 kolom input dan 8 kolom output.
Salah satu cara untuk memecahkan masalah adalah dengan mengambil 34 input dan membangun model regresi individual untuk setiap kolom output.
Saya bertanya-tanya apakah masalah ini dapat diselesaikan dengan hanya menggunakan satu model khususnya menggunakan Jaringan Saraf Tiruan.
Saya telah menggunakan Multilayer Perceptron tetapi itu membutuhkan banyak model seperti halnya regresi linier. Bisakah Sequence to Sequence menjadi opsi yang layak?
Saya menggunakan TensorFlow. Saya memiliki kode tetapi saya pikir lebih penting untuk memahami apa yang saya lewatkan dalam hal teori perceptron multilayer.
Saya mengerti bahwa dalam MLP jika Anda memiliki satu simpul keluaran, ia akan menyediakan satu keluaran. Jika Anda memiliki 10 node output maka itu adalah masalah multi-kelas. Anda memilih kelas dengan probabilitas tertinggi dari 10 output. Tetapi dalam kasus saya sudah pasti akan ada 8 output untuk input yang sama.
Katakanlah, untuk satu set input Anda akan mendapatkan koordinat 3D dari sesuatu (X, Y, Z). Seperti, Input = {1,10,5,7} Output = {1,2,1}. Jadi untuk input yang sama {1,10,5,7} saya perlu membuat model untuk nilai X nilai Y dan Z. Salah satu solusinya adalah memiliki 3 model yang berbeda menggunakan MLP. Tetapi saya ingin melihat apakah saya dapat memiliki satu model. Jadi saya berpikir tentang menggunakan seq2seq. Karena encoder mengambil serangkaian input dan decoder menyediakan serangkaian output. Tapi sepertinya seq2seq di tensorflow tidak bisa menangani nilai float. Saya bisa salah tentang ini.
sumber
Jawaban:
Apa yang Anda gambarkan adalah regresi linier multidimensi normal. Jenis masalah ini biasanya ditangani dengan jaringan umpan-maju, baik MLP atau arsitektur lain yang sesuai dengan sifat masalah.
Setiap kerangka kerja jaringan saraf dapat melakukan sesuatu seperti itu.
Kunci untuk melakukannya adalah untuk mengingat bahwa lapisan terakhir harus memiliki aktivasi linier (yaitu tidak ada aktivasi sama sekali).
Sesuai kebutuhan Anda, bentuk lapisan input akan menjadi vektor (34,) dan output (8,).
Pembaruan : fungsi kerugian yang biasa digunakan untuk masalah regresi adalah mean squared error (MSE). Berikut ini adalah contoh dari regresi multidimensi menggunakan Keras ; jaringan bukan MLP tetapi harus OK untuk menggambarkan ide tersebut.
sumber
Anda dapat menerapkan ini dengan sangat sederhana di Python.
X Anda akan menjadi kumpulan koordinat pelatihan x, y, z.
Y Anda akan menjadi kumpulan pengujian x, y, z koordinat.
sumber
Ini jauh lebih mudah daripada yang Anda kira - Anda bisa mengatur layer output Anda menjadi vektor, bukan skalar tunggal. Tentu saja tidak ada keajaiban di sini dan saya menyarankan Anda untuk menyiapkan data Anda (melakukan normalisasi batch sehingga semua output akan bernilai antara 0 dan 1).
Jika Anda menggunakan Keras, cara untuk melakukannya adalah dengan menambahkan lapisan padat sebagai lapisan keluaran akhir:
model.add(Dense(8, activation='linear'))
sumber