входные значения номинальной стоимости для нейронной сети - PullRequest
2 голосов
/ 25 января 2012

У меня есть набор обучающих данных, каждый элемент этого набора состоит из 4 числовых значений и 1 номинального значения, которое является названием метода, с помощью которого эти значения были рассчитаны.(Есть 8 методов)

Я обучаю нейронную сеть этим.Чтобы избавиться от номинального значения, я просто присвоил значение от 1 до 8 каждому методу и использовал один вход для передачи его в нейронную сеть и 4 других входа для числовых значений.Это своего рода работа, но результат не так удивителен, как я хочу.

Итак, мой вопрос, может ли это быть из-за этого простого присвоения чисел номинальным значениям?или, может быть, это из-за смешивания двух разных категорий входов, которые на самом деле не находятся на одном уровне (числа и типы методов)

Ответы [ 3 ]

7 голосов
/ 20 июля 2012

Как общее примечание, лучшим способом кодирования номинальных значений будет двоичный вектор. В вашем случае, в дополнение к 4 непрерывным входам, у вас будет 8 бинарных входных нейронов, где активирован только один (1), а остальные 7 не активны.

То, как вы это сделали, подразумевает искусственную связь между методами вычислений, которая почти наверняка является артефактом. Например, 1 и 2 численно (и с точки зрения вашей сети!) Ближе, чем 1 и 8. Но методы nr. 1 и 2 действительно больше похожи или связаны, чем методы 1 и 8?

6 голосов
/ 26 января 2012

Поскольку вы не предоставляете много подробностей, мой ответ не может быть очень конкретным.

Вообще говоря, нейронные сети имеют тенденцию работать хуже при кодировании номинальных значений в виде числовых значений, поскольку преобразование наложит (вероятно) ложное упорядочение переменных.Смешивание входов с очень разными уровнями также может ухудшить производительность.

Однако, учитывая небольшую информацию, представленную здесь, невозможно сказать, является ли это причиной того, что производительность сети "не так удивительна", как вы хотите.С тем же успехом может случиться, что у вас недостаточно тренировочных данных или что ваши тренировочные данные содержат много шума.Возможно, вам нужно предварительно масштабировать ваши данные, возможно, в вашем сетевом коде есть ошибка, возможно, вы выбрали неподходящие значения констант для вашего алгоритма обучения ...

Причины, по которым нейронная сеть не 'Выполнение, как и ожидалось, много и разнообразно (от них ожидают необоснованно больших ожиданий).Без гораздо большей информации невозможно узнать, в чем проблема в вашем случае.

4 голосов
/ 16 июля 2015

Отображение категорий в числовые значения не является хорошей практикой в ​​статистике.Особенно в случае нейронных сетей.Имейте в виду, что нейронные сети имеют тенденцию отображать аналогичные входы в аналогичные выходы.Если вы сопоставите категорию A с 1 и категорию B с 2 (оба в качестве входных данных), NN попытается вывести одинаковые значения для обеих категорий, даже если они не имеют никакого отношения друг к другу.

Более разреженное представлениеявляется предпочтительным.Если у вас есть 4 категории, сопоставьте их следующим образом:

A -> 0001

B -> 0010

и т. Д.

Посмотрите на "Тема: Как должны кодироваться категории? "по этой ссылке: ftp: //ftp.sas.com/pub/neural/FAQ2.html#A_cat

...