Estoy trabajando en la investigación, en la necesidad de una GANADOR clasificar de tres eventos = ( 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
Mi modelo actual es:
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
- No estoy seguro de que sea la correcta para la clasificación de varias clases
- ¿Cuál es la mejor configuración para la clasificación binaria?
EDITAR: # 2 - ¿Te gusta eso?
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
fuente
fuente
activation='softmax'
y la elección de compilación deloss='categorical_crossentropy'
? En mi opinión, sus opciones son buenas para que un modelo prediga múltiples clases mutuamente excluyentes. Si desea asesoramiento sobre el modelo completo, eso es bastante diferente, y debe explicar más sobre cuáles son sus preocupaciones, de lo contrario, hay demasiado para explicar en una sola respuesta.architecture
capas en su mayoría. ¿Algún consejo para mi pregunta # 2?activation='sigmoid'
yloss='binary_crossentropy'
activation='sigmoid'
en la capa de salida . La capa oculta puede permanecer como'relu'
lo desee (aunque probablemente comenzaría con'tanh'
este problema, esa es una preferencia personal con muy poco apoyo de la teoría)Respuestas:
Sus elecciones
activation='softmax'
en la última capa y la opción de compilación deloss='categorical_crossentropy'
son buenas para que un modelo prediga múltiples clases mutuamente excluyentes.En cuanto a las elecciones más generales, rara vez hay una forma "correcta" de construir la arquitectura. En cambio, eso debería ser algo que pruebe con diferentes metaparámetros (como tamaños de capa, número de capas, cantidad de abandono), y debería basarse en los resultados (incluidos los límites que pueda tener en el uso de recursos para el tiempo / memoria del entrenamiento) uso, etc.)
Utilice un conjunto de validación cruzada para ayudar a elegir una arquitectura adecuada. Una vez hecho esto, para obtener una medida más precisa del rendimiento general de su modelo, debe usar un conjunto de prueba separado. Para ello, se deben utilizar los datos que se conservan de su conjunto de entrenamiento por separado del conjunto de CV. Una división razonable podría ser 60/20/20 train / cv / test, según la cantidad de datos que tenga y la cantidad que necesita para informar una cifra final precisa.
Para la Pregunta # 2, puede tener dos salidas con un final softmax similar a ahora, o puede tener una capa final con una salida,
activation='sigmoid'
yloss='binary_crossentropy'
.Simplemente por una intuición de lo que podría funcionar con estos datos, sugeriría probar con
'tanh'
o'sigmoid'
activaciones en la capa oculta, en lugar de'relu'
, y también sugeriría aumentar el número de neuronas ocultas (por ejemplo, 100) y reducir la cantidad de abandono ( por ejemplo, 0.2). Advertencia: la sensación de tripa en la arquitectura de redes neuronales no es científica. Pruébalo y pruébalo.fuente