Уменьшение входных размеров для модели глубокого обучения

Я прохожу курс по глубокому обучению, и у меня есть модель, построенная с использованием кераса. После предварительной обработки данных и кодирования категориальных данных я получаю массив формы (12500,) в качестве входных данных для модели. Этот ввод делает процесс обучения модели более медленным и запаздывающим. Есть ли способ минимизировать размерность входных данных?

Входные данные сгруппированы по географическим координатам, информации о погоде, времени, расстоянию, и я пытаюсь предсказать время в пути между двумя географическими координатами.

Исходный набор данных содержит 8 функций, 5 из которых являются категориальными. Я использовал кодировку onehot для кодирования вышеуказанных категориальных данных. Географические координаты имеют 6000 категорий, погода 15 категорий, время имеет 96 категорий. Точно так же все вместе после кодирования с кодированием onehot я получил массив формы (12500,) в качестве входных данных для модели.


person Klaus    schedule 15.04.2018    source источник
comment
Что представляет собой ввод? Вам нужно все на входе? Что вы пытаетесь вывести? Вам нужно предоставить больше информации, чтобы получить какой-либо содержательный ответ.   -  person Primusa    schedule 15.04.2018
comment
добавлена ​​дополнительная информация о входах   -  person Klaus    schedule 15.04.2018
comment
как для этого требуется массив из 12500? Я насчитываю пять черт!   -  person Primusa    schedule 15.04.2018
comment
Исходный набор данных содержит 8 функций, 5 из которых являются категориальными. Я использовал кодировку onehot для кодирования вышеуказанных категориальных данных. Географические координаты имеют 6000 категорий, погода 15 категорий, время имеет 96 категорий. Точно так же все вместе после кодирования с однократным кодированием я получил массив формы (12500,) в качестве входных данных для модели.   -  person Klaus    schedule 15.04.2018


Ответы (2)


Когда количество категорий велико, быстрое кодирование становится слишком неэффективным. Ярким примером этого является обработка предложений на естественном языке: в этой задаче словарный запас часто насчитывает 100 тысяч или даже больше слов. Очевидно, что перевод предложения из 10 слов в матрицу [10, 100000], почти все из которой равны нулю, был бы пустой тратой памяти.

Вместо этого исследователи используют слой внедрения, который изучает плотное представление категориального признака. В случае слов это называется встраиванием слов, например word2vec. Это представление намного меньше, чем-то вроде 100-мерного, и заставляет остальную часть сети эффективно работать с 100-мерными входными векторами, а не с 100000-мерными векторами.

В keras это реализовано с помощью слоя Embedding, который, я думаю, идеально подойдет для ваших geo и time функции, в то время как другие, вероятно, могут нормально работать с однократным кодированием. Это означает, что ваша модель больше не Sequential, а имеет несколько входных данных, некоторые из которых проходят через уровень внедрения. Основная модель возьмет объединение изученных представлений и сделает вывод регрессии.

person Maxim    schedule 15.04.2018

Вы можете использовать PCA для уменьшения размерности. Он удаляет связанные переменные и гарантирует, что в данных есть большие расхождения.

Wikipedia PCA

Аналитическая Vidya PCA

person Shashi Tunga    schedule 15.04.2018
comment
Можно ли применить PCA к набору данных после кодирования одним горячим кодировщиком ?. исходный набор данных без кодирования содержит 8 функций, и после кодирования ввод принимает форму (15000,) - person Klaus; 15.04.2018
comment
Я думаю, что применение PCA перед кодированием не будет иметь никакого значения, так как после кодирования он снова приведет к (15000,). Итак, делайте это только после кодирования. - person Shashi Tunga; 15.04.2018