マルチクラス分類に最適なケラスモデルは何ですか?
-
16-10-2019 - |
質問
私は研究に取り組んでいます。ここでは、3つのイベント勝者のいずれかを分類する必要があります=(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
- マルチクラス分類の正しいものかどうかはわかりません
- バイナリ分類に最適なセットアップは何ですか?
編集:#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')
解決
のあなたの選択 activation='softmax'
最後のレイヤーで選択します loss='categorical_crossentropy'
モデルが複数の相互に極限のクラスを予測するのに適しています。
より一般的な選択に関して、アーキテクチャを構築する「正しい」方法はめったにありません。代わりに、それはさまざまなメタパラム(レイヤーサイズ、レイヤー数、ドロップアウト量など)でテストするものであり、結果駆動型(トレーニング時間/メモリにリソースの使用にある制限を含むものである必要があります使用など)。
相互検証セットを使用して、適切なアーキテクチャを選択するのに役立ちます。完了したら、モデルの一般的なパフォーマンスのより正確な測定値を取得するには、個別のテストセットを使用する必要があります。これには、CVセットとは別にトレーニングセットから保持されているデータを使用する必要があります。合理的な分割は、あなたが持っているデータの量と、正確な最終図を報告するために必要な量に応じて、60/20/20トレイン/CV/テストである可能性があります。
質問#2については、今と同様のSoftMaxファイナルを備えた2つの出力を持つことができます。 最後の 1つの出力でレイヤー、 activation='sigmoid'
と loss='binary_crossentropy'
.
純粋にこのデータで機能する可能性のある腸の感触から、私は一緒に試すことをお勧めします 'tanh'
また 'sigmoid'
ではなく、隠された層のアクティブ化 'relu'
, 、また、隠されたニューロンの数を増やし(例えば100)、ドロップアウトの量を減らすことをお勧めします(例えば0.2)。警告:ニューラルネットワークアーキテクチャに対する腸の感覚は科学的ではありません。試して、テストしてください。