質問

私は研究に取り組んでいます。ここでは、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
  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')
役に立ちましたか?

解決

のあなたの選択 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)。警告:ニューラルネットワークアーキテクチャに対する腸の感覚は科学的ではありません。試して、テストしてください。

ライセンス: CC-BY-SA帰属
所属していません datascience.stackexchange
scroll top