Автоэнкодер для табличных данных с дискретными значениями - PullRequest
0 голосов
/ 15 февраля 2020

Я хочу использовать автоэнкодер для уменьшения размеров в Керасе. Входные данные представляют собой таблицу с дискретными значениями 0,1,2,3,4 (каждое из этих чисел показывает категорию) в столбцах. Каждый субъект имеет ярлык 0/1, чтобы показать, что он болен / здоров. Теперь у меня есть два вопроса:

  1. Какую функцию активации я должен использовать на последнем слое? Должен ли я использовать комбинацию сигмоида и ReLU?

  2. Я не знаю, нужна ли для этого типа входных переменных нормализация (и если ответ - да, то как ?)

1 Ответ

0 голосов
/ 15 февраля 2020

Какую функцию активации я должен использовать на последнем слое? Должен ли я использовать комбинацию сигмоида и ReLU?

Активация на последнем слое должна быть сигмоидальной и использовать binary_crossentropy функцию потери для обучения.

Я не знаю Не знаю, нужно ли нормализовать этот тип входных переменных (и если да, то как?)

Это зависит от природы упомянутых вами дискретных значений. Как вы знаете, входы в нейронную сеть представляют «интенсивность» каждого нейрона; более высокие значения означают, что нейрон более интенсивен / активен. Таким образом, категориальные значения в качестве входных данных для NN имеют смысл, только если они отображаются в непрерывном диапазоне. Например, если отлично = 3, хорошо = 2, плохо = 1, ужасно = 0, можно передать эти значения в NN, потому что имеет смысл вычислять f(wx+b) (интенсивность нейрона) как значение 1.5 означает где-то между плохим и хорошим.

Однако, если категориальные значения являются чисто номинальными значениями без какой-либо связи между ними (например: яблоко = 1, оранжевый = 2, банан = 3), это действительно не делает смысл вычислять f(wx+b). Что в этом случае означает значение 1.5? Для этого типа данных в качестве ввода в NN вы должны преобразовать их в двоичную кодировку. Например, если у вас есть только 3 плода, вы можете закодировать это следующим образом:

apple  = [1, 0, 0]
orange = [0, 1, 0]
banana = [0, 0, 1]

Для этого двоичного преобразования Keras имеет функцию полезности: to_categorical.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...