Çok sınıflı sınıflandırma için en iyi Keras modeli nedir?


30

Ben araştırma, üzerinde çalışıyorum nerede üç olay KAZANAN ait sınıflandırmak birine ihtiyacı = ( 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

Şu anki modelim:

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
  1. Çok sınıflı sınıflandırma için doğru olanın olduğundan emin değilim.
  2. İkili sınıflandırma için en iyi kurulum nedir?

EDIT: # 2 - Bunun gibi mi?

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')

1
"Model" mi demek istiyorsun, yoksa sadece son katman activation='softmax'seçimine loss='categorical_crossentropy'mi, derleme seçimine mi atıfta bulunuyorsun ? IMO, bunlar için yaptığınız seçimler, birbirini dışlayan çok sayıda dersi tahmin etmek için bir model için iyidir. Tüm model hakkında tavsiye almak istiyorsanız, bu oldukça farklı ve endişelerinizin ne olduğu hakkında daha fazla açıklama yapmanız gerekiyor, aksi halde tek bir cevapta açıklamak için çok fazla şey var.
Neil Slater

Ben architectureçoğunlukla katmanları kastediyorum . 2 numaralı sorum için herhangi bir tavsiye var mı?
SpanishBoy

1
Mimariyi inşa etmenin nadiren "doğru" bir yolu vardır; bu, farklı meta-paramlarla test ettiğiniz bir şey olmalı ve sonuçlara dayalı olmalıdır (eğitim süresi / bellek kullanımı için kaynak kullanımıyla ilgili sınırlamalar dahil). # 2 için, şimdiki gibi softmax'a sahip iki çıkışa sahip olabilirsiniz ya da bir çıkışa sahip çıkış katmanına sahip olabilirsiniz, activation='sigmoid'veloss='binary_crossentropy'
Neil Slater

activation='sigmoid'içerisinde çıkış tabakası. Gizli katman 'relu'istediğiniz gibi kalabilir (muhtemelen 'tanh'bu sorunla başlasam da, bu teoriden çok az destek alarak kişisel bir tercihtir)
Neil Slater

Yanıtlar:


35

Kullandığınız seçeneklerin activation='softmax'son katmanın ve derleme seçiminde loss='categorical_crossentropy'birden karşılıklı münhasır sınıfları tahmin etmek için bir model için iyi.

Daha genel seçimlerle ilgili olarak, mimariyi inşa etmenin nadiren “doğru” bir yolu yoktur. Bunun yerine, farklı meta-paramlarla test ettiğiniz bir şey (katman boyutları, katman sayısı, bırakma miktarı gibi) ve sonuç odaklı olmalıdır (eğitim süresi / belleği için kaynak kullanımında olabilecek sınırlar dahil) vb kullanın).

Uygun bir mimari seçmenize yardımcı olması için bir çapraz doğrulama seti kullanın. Bir kez yapıldığında, modelinizin genel performansını daha doğru ölçmek için ayrı bir test seti kullanmalısınız. Eğitim setinizden CV setine ayrı tutulan veriler bunun için kullanılmalıdır. Makul bir bölünme, ne kadar veriniz olduğuna ve kesin bir son rakamı ne kadar rapor etmeniz gerektiğine bağlı olarak, 60/20/20 train / cv / test olabilir.

Soru # 2 için, şimdiki gibi softmax final ile sadece iki çıkışa sahip olabilirsiniz veya bir çıkışla son katmana sahip olabilirsiniz activation='sigmoid've loss='binary_crossentropy'.

Tamamen bu verilerle neyin işe yarayacağına dair bir içgüdüm duyduğumda , bunun yerine gizli katmanla denemeyi 'tanh'veya 'sigmoid'aktivasyonları denemeyi 'relu've gizli nöronların sayısını arttırmayı (örn. 100) ve bırakma miktarını azaltmayı önerebilirim ( örneğin 0.2). Uyarma: Sinir ağları mimarisinde Gut hissi bilimsel değildir. Deneyin ve test edin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.