Qual é o melhor modelo Keras para classificação de várias classes?


30

Eu estou trabalhando em pesquisa, onde necessidade de uma classificar de WINNER três event = ( 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

Meu modelo atual é:

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. Não sei se esse é o correto para a classificação de várias classes
  2. Qual é a melhor configuração para a classificação binária?

EDIT: # 2 - assim?

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
Você quer dizer "modelo", ou apenas se referindo à escolha da última camada activation='softmax'e escolha de compilação loss='categorical_crossentropy'? Na IMO, suas escolhas são boas para um modelo prever várias classes mutuamente exclusivas. Se você deseja aconselhamento sobre todo o modelo, isso é bem diferente e deve explicar mais sobre quais são suas preocupações, caso contrário, há muito o que explicar em uma única resposta.
Neil Slater

Quero dizer sobre architecturecamadas principalmente. Algum conselho para a minha pergunta # 2?
SpanishBoy 01/02

1
Raramente existe uma maneira "correta" de construir a arquitetura, que deve ser algo que você testa com diferentes meta-parâmetros e deve ser orientada a resultados (incluindo quaisquer limites que você possa ter no uso de recursos para tempo de treinamento / uso de memória, etc.). Para # 2, você pode apenas ter duas saídas com semelhante softmax agora, ou você pode ter camada de saída com uma saída, activation='sigmoid'eloss='binary_crossentropy'
Neil Slater

activation='sigmoid'na camada de saída . A camada escondida pode ficar como 'relu'se você gosta (embora eu provavelmente começaria com 'tanh'para este problema, que é preferência pessoal com muito pouco apoio da teoria)
Neil Slater

Respostas:


35

Suas escolhas activation='softmax'na última camada e na compilação loss='categorical_crossentropy'são boas para um modelo prever várias classes mutuamente exclusivas.

Em relação às escolhas mais gerais, raramente existe uma maneira "correta" de construir a arquitetura. Em vez disso, isso deve ser algo que você testa com meta-parâmetros diferentes (como tamanhos de camada, número de camadas, quantidade de abandono) e deve ser orientado a resultados (incluindo quaisquer limites que você possa ter no uso de recursos para tempo / memória de treinamento use etc).

Use um conjunto de validação cruzada para ajudar a escolher uma arquitetura adequada. Uma vez feito, para obter uma medida mais precisa do desempenho geral do seu modelo, você deve usar um conjunto de testes separado. Os dados contidos em seu conjunto de treinamento separado do conjunto de CV devem ser usados ​​para isso. Uma divisão razoável pode ser 60/20/20 train / cv / test, dependendo da quantidade de dados que você possui e da quantidade necessária para relatar um número final preciso.

Para a pergunta 2, você pode ter apenas duas saídas com um final softmax semelhante a agora ou uma camada final com uma saída activation='sigmoid'e loss='binary_crossentropy'.

Puramente pelo que parece funcionar com esses dados, sugiro tentar com 'tanh'ou 'sigmoid'ativações na camada oculta, em vez de 'relu', e também sugerir o aumento do número de neurônios ocultos (por exemplo, 100) e a redução da quantidade de abandono ( por exemplo, 0,2). Advertência: O pressentimento na arquitetura de rede neural não é científico. Experimente e teste.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.