Frage

Ich arbeite an der Forschung, wo muss ein von drei Event -Gewinner klassifiziert = ((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

Mein aktuelles Modell ist:

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. Ich bin mir nicht sicher, ob dies die richtige für die Klassifikation mit mehreren Klassen ist
  2. Was ist das beste Setup für die binäre Klassifizierung?

Bearbeiten: #2 - so?

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')
War es hilfreich?

Lösung

Ihre Entscheidungen von activation='softmax' in der letzten Schicht und kompilieren Sie die Wahl von loss='categorical_crossentropy' sind gut für ein Modell, um mehrere gegenseitig exklusive Klassen vorherzusagen.

In Bezug auf allgemeinere Entscheidungen gibt es selten einen "richtigen" Weg, um die Architektur zu konstruieren. Stattdessen sollte dies etwas sein, das Sie mit unterschiedlichen Meta-Params testen (z. B. Schichtgrößen, Anzahl der Schichten, Ausfallmenge) und sollte ergebnisgesteuert sein (einschließlich aller Grenzen, die Sie möglicherweise für die Ressourcenverwendung für die Trainingszeit/den Speicher haben verwenden usw.).

Verwenden Sie einen Kreuzvalidationssatz, um eine geeignete Architektur auszuwählen. Sobald Sie fertig sind, sollten Sie einen separaten Testsatz verwenden, um ein genaueres Maß für die allgemeine Leistung Ihres Modells zu erhalten. Dafür sollten Daten aus Ihrem Trainingssatz getrennt in den Lebenslaufsatz verwendet werden. Eine angemessene Aufteilung kann 60/20/20 Zug/Lebenslauf/Test betragen, je nachdem, wie viel Daten Sie haben und wie viel Sie benötigen, um eine genaue endgültige Abbildung zu melden.

Für Frage 2 können Sie entweder nur zwei Ausgänge mit einem Softmax -Finale haben, ähnlich wie jetzt, oder Sie können haben Finale Schicht mit einem Ausgang, activation='sigmoid' und loss='binary_crossentropy'.

Nur aus einem Bauchgefühl aus dem, was mit diesen Daten funktionieren könnte, würde ich vorschlagen, es zu versuchen 'tanh' oder 'sigmoid' Aktivierungen in der versteckten Schicht statt von 'relu', und ich würde auch empfehlen, die Anzahl der versteckten Neuronen (z. B. 100) zu erhöhen und die Menge des Ausfalls zu verringern (z. B. 0,2). Vorbehalt: Das Bauchgefühl in der neuronalen Netzwerkarchitektur ist nicht wissenschaftlich. Probieren Sie es aus und testen Sie es.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top