Saya bekerja pada penelitian, di mana kebutuhan untuk satu mengklasifikasikan tiga acara WINNER = ( win
, draw
, lose
)
WINNER LEAGUE HOME AWAY MATCH_HOME MATCH_DRAW MATCH_AWAY MATCH_U2_50 MATCH_O2_50
3 13 550 571 1.86 3.34 4.23 1.66 2.11
3 7 322 334 7.55 4.1 1.4 2.17 1.61
Model saya saat ini adalah:
def build_model(input_dim, output_classes):
model = Sequential()
model.add(Dense(input_dim=input_dim, output_dim=12, activation=relu))
model.add(Dropout(0.5))
model.add(Dense(output_dim=output_classes, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adadelta')
return model
- Saya tidak yakin itu yang benar untuk klasifikasi multi-kelas
- Apa pengaturan terbaik untuk klasifikasi biner?
EDIT: # 2 - Seperti itu?
model.add(Dense(input_dim=input_dim, output_dim=12, activation='sigmoid'))
model.add(Dropout(0.5))
model.add(Dense(output_dim=output_classes, activation='softmax'))
model.compile(loss='binary_crossentropy', optimizer='adadelta')
python
neural-network
classification
clustering
keras
SpanishBoy
sumber
sumber
activation='softmax'
dan kompilasi pilihanloss='categorical_crossentropy'
? IMO, pilihan Anda untuk itu bagus untuk model untuk memprediksi beberapa kelas yang saling eksklusif. Jika Anda ingin saran tentang keseluruhan model, itu sangat berbeda, dan Anda harus menjelaskan lebih banyak tentang apa yang menjadi perhatian Anda, jika tidak ada terlalu banyak untuk dijelaskan dalam satu jawaban.architecture
lapisan kebanyakan. Adakah saran untuk pertanyaan saya # 2?activation='sigmoid'
danloss='binary_crossentropy'
activation='sigmoid'
di lapisan output . Lapisan tersembunyi dapat tetap seolah-'relu'
olah Anda suka (walaupun saya mungkin akan mulai dengan'tanh'
untuk masalah ini, yaitu preferensi pribadi dengan sangat sedikit dukungan dari teori)Jawaban:
Pilihan Anda
activation='softmax'
di lapisan terakhir dan kompilasi pilihanloss='categorical_crossentropy'
yang baik untuk model untuk memprediksi beberapa kelas yang saling eksklusif.Mengenai pilihan yang lebih umum, jarang ada cara "benar" untuk membangun arsitektur. Alih-alih itu harus menjadi sesuatu yang Anda uji dengan meta-param yang berbeda (seperti ukuran lapisan, jumlah lapisan, jumlah drop-out), dan harus didorong oleh hasil (termasuk batas apa pun yang mungkin Anda miliki tentang penggunaan sumber daya untuk waktu / memori pelatihan) gunakan dll).
Gunakan set validasi silang untuk membantu memilih arsitektur yang sesuai. Setelah selesai, untuk mendapatkan ukuran kinerja umum model yang lebih akurat, Anda harus menggunakan set tes terpisah. Data yang disimpan dari set pelatihan Anda terpisah dengan set CV harus digunakan untuk ini. Pemisahan yang masuk akal mungkin 60/20/20 kereta / cv / test, tergantung pada berapa banyak data yang Anda miliki, dan seberapa banyak Anda perlu melaporkan angka akhir yang akurat.
Untuk Pertanyaan # 2, Anda dapat memiliki dua output dengan final softmax yang sama dengan sekarang, atau Anda dapat memiliki layer final dengan satu output,
activation='sigmoid'
danloss='binary_crossentropy'
.Murni dari firasat dari apa yang mungkin bekerja dengan data ini, saya akan menyarankan mencoba dengan
'tanh'
atau'sigmoid'
aktivasi di lapisan tersembunyi, alih-alih'relu'
, dan saya juga menyarankan peningkatan jumlah neuron tersembunyi (misalnya 100) dan mengurangi jumlah putus sekolah ( mis. 0.2). Peringatan: Perasaan sakit pada arsitektur jaringan saraf tidak ilmiah. Cobalah, dan ujilah.sumber