Яка найкраща модель Кераса для багатокласової класифікації?


30

Я працюю на дослідження, де необхідно класифікувати один з WINNER три події = ( 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. Яка найкраща установка для двійкової класифікації?

EDIT: # 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, ваш вибір для них хороший для моделі передбачення декількох взаємовиключних класів. Якщо ви хочете отримати поради щодо всієї моделі, це зовсім інше, і ви повинні пояснити більше, що викликає занепокоєння, інакше є занадто багато, щоб пояснити в одній відповіді.
Ніл Слейтер

Я маю на увазі architectureпереважно шари. Будь-яка порада щодо мого питання №2?
SpanishBoy

1
Рідко існує "правильний" спосіб побудови архітектури, який має бути тестом, який ви перевіряєте з різними метапарамами, і має бути орієнтований на результати (включаючи будь-які обмеження щодо використання ресурсів для навчання часу / використання пам'яті тощо). Для №2 ви можете або просто мати два виходи з softmax, подібними до теперішніх, або ви можете мати вихідний шар з одним виходом, activation='sigmoid'іloss='binary_crossentropy'
Neil Slater

activation='sigmoid'у вихідному шарі. Прихований шар може залишатися так, як 'relu'вам подобається (хоча, мабуть, я б почав із 'tanh'цієї проблеми, тобто особистих уподобань з дуже малою підтримкою від теорії)
Neil Slater

Відповіді:


35

Ваш вибір activation='softmax'на останньому шарі та вибір компіляції loss='categorical_crossentropy'добре підходить для моделі передбачення декількох взаємовиключних класів.

Що стосується більш загального вибору, то рідко існує "правильний" спосіб побудови архітектури. Натомість це має бути тест, який ви перевіряєте з різними метапарамами (такими як розміри шарів, кількість шарів, кількість випадаючих), і має залежати від результатів (включаючи будь-які обмеження щодо використання ресурсів для тренування часу / пам'яті використання тощо).

Використовуйте набір перехресної перевірки, щоб допомогти вибрати відповідну архітектуру. Після закінчення, щоб отримати більш точний показник загальної продуктивності вашої моделі, слід використовувати окремий тестовий набір. Для цього слід використовувати дані, що виходять з вашого навчального набору, окремо від набору резюме. Розумний розкол може становити 60/20/20 поїзд / рейтинг / тест, залежно від того, скільки у вас є даних і скільки потрібно повідомити точну кінцеву цифру.

Для питання №2 ви можете або просто мати два виходи з фіналом softmax, подібним до теперішнього, або ви можете мати завершальний шар з одним виходом, activation='sigmoid'і loss='binary_crossentropy'.

Чисто з кишечника відчуття від того, що могло б працювати з цими даними, я б запропонував спробувати з 'tanh'або 'sigmoid'активацій в прихованому шарі, а НЕ 'relu', і я хотів би також запропонувати збільшення числа прихованих нейронів (наприклад , 100) , а також зменшення кількості відсіву ( наприклад 0,2). Застереження: відчуття кишок у архітектурі нейронної мережі не є науковим. Спробуйте і протестуйте.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.