멀티 클래스 분류에 가장 적합한 Keras 모델은 무엇입니까?


30

내가 연구, 일하고 경우 세 가지 이벤트 우승자의 분류 하나 필요 = ( 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

내 현재 모델은 다음과 같습니다

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. 멀티 클래스 분류에 맞는 것인지 잘 모르겠습니다.
  2. 이진 분류에 가장 적합한 설정은 무엇입니까?

편집 : # 2-그런가요?

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
"모델"을 의미합니까, 아니면 마지막 레이어의 activation='softmax'선택을 선택하고 선택을 컴파일 loss='categorical_crossentropy'합니까? IMO, 귀하의 선택은 모델이 여러 개의 상호 배타적 인 클래스를 예측하는 데 적합합니다. 전체 모델에 대한 조언을 원한다면, 그것은 상당히 다르며, 당신의 관심사에 대해 더 설명해야합니다. 그렇지 않으면 단일 답변으로 설명하기에는 너무 많습니다.
Neil Slater

나는 architecture대부분 레이어를 의미 합니다. 내 질문 # 2에 대한 조언이 있습니까?
SpanishBoy

1
아키텍처를 구성하는 "올바른"방법은 거의 없습니다. 다른 메타 매개 변수로 테스트해야하며 결과 중심이어야합니다 (훈련 시간 / 메모리 사용 등의 리소스 사용에 대한 제한 포함). # 2의 경우, 당신도 지금에 softmax를 비슷한 두 개의 출력을 할 수 있습니다, 또는 당신은 하나 개의 출력으로 출력 층을 가질 수 있습니다, activation='sigmoid'그리고loss='binary_crossentropy'
닐 슬레이터

activation='sigmoid'에서 출력 층. 숨겨진 층은 'relu'마치 당신이 좋아하는 것처럼 유지할 수 있습니다 ( 'tanh'이 문제로 시작하더라도 이론에서 거의 지원하지 않는 개인적 선호)
Neil Slater

답변:


35

귀하의 선택에 activation='softmax'마지막 층의 컴파일 선택에는 loss='categorical_crossentropy'여러 개의 상호 배타적 클래스를 예측하는 모델에 좋다.

보다 일반적인 선택과 관련하여 아키텍처를 구성하는 "올바른"방법은 거의 없습니다. 대신 다른 메타 매개 변수 (예 : 레이어 크기, 레이어 수, 드롭 아웃 수)로 테스트해야하며 결과 중심이어야합니다 (훈련 시간 / 메모리에 리소스 사용에 대한 제한 포함). 사용 등).

교차 유효성 검사 세트를 사용하여 적합한 아키텍처를 선택하십시오. 완료되면 모델의 일반 성능을보다 정확하게 측정하려면 별도의 테스트 세트를 사용해야합니다. 훈련 세트에서 CV 세트와 별도로 보관 된 데이터를 사용해야합니다. 보유한 데이터의 양과 정확한 최종 수치를보고하는 데 필요한 양에 따라 60/20/20 train / cv / test가 합리적으로 분할 될 수 있습니다.

질문 # 2를 들어, 당신도 지금에 softmax를 최종 유사한 두 개의 출력을 할 수 있습니다, 또는 당신은 할 수있는 마지막 하나 개의 출력으로 레이어를, activation='sigmoid'하고 loss='binary_crossentropy'.

순전히이 데이터로 작동 할 수있는 것의 느낌에서 나는 대신 숨겨진 계층에서 시도 'tanh'하거나 'sigmoid'활성화하는 'relu'것이 좋습니다. 또한 숨겨진 뉴런의 수를 늘리고 (예 : 100) 드롭 아웃 양을 줄이는 것이 좋습니다 ( 예를 들어 0.2). 주의 사항 : 신경망 아키텍처에 대한 직감은 과학적이지 않습니다. 사용 해보고 테스트하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.