Eu tenho um conjunto de dados contendo 34 colunas de entrada e 8 colunas de saída.
Uma maneira de resolver o problema é pegar as 34 entradas e criar um modelo de regressão individual para cada coluna de saída.
Gostaria de saber se esse problema pode ser resolvido usando apenas um modelo, particularmente usando a Rede Neural.
Eu usei o Multilayer Perceptron, mas isso precisa de vários modelos, como a regressão linear. Sequência para sequência pode ser uma opção viável?
Estou usando o TensorFlow. Eu tenho código, mas acho que é mais importante entender o que estou perdendo em termos da teoria do perceptron multicamada.
Entendo que no MLP, se você tiver um nó de saída, ele fornecerá uma saída. Se você possui 10 nós de saída, é um problema com várias classes. Você escolhe a classe com a maior probabilidade dentre as 10 saídas. Mas no meu caso, é certo que haverá 8 saídas para a mesma entrada.
Digamos que, para um conjunto de entradas, você obtenha a coordenada 3D de algo (X, Y, Z). Como, Entradas = {1,10,5,7} Saída = {1,2,1}. Portanto, para a mesma entrada {1,10,5,7}, preciso criar modelos para o valor X, valor Y e Z. Uma solução é ter 3 modelos diferentes usando MLP. Mas gostaria de ver se posso ter um modelo. Então, pensei em usar seq2seq. Como o codificador recebe uma série de entradas e o decodificador fornece séries de saída. Mas parece que seq2seq no tensorflow não pode lidar com valores flutuantes. No entanto, posso estar errado sobre isso.
fonte
Respostas:
O que você está descrevendo é uma regressão linear multidimensional normal. Normalmente, esse tipo de problema é tratado com uma rede de feed-forward, MLP ou qualquer outra arquitetura que se adapte à natureza do problema.
Qualquer estrutura de rede neural é capaz de fazer algo assim.
A chave para fazer isso é lembrar que a última camada deve ter ativações lineares (ou seja, nenhuma ativação).
Conforme seus requisitos, o formato da camada de entrada seria um vetor (34) e a saída (8).
Atualização : a função de perda usual usada para problemas de regressão é o erro médio quadrático (MSE). Aqui está um exemplo de regressão multidimensional usando Keras ; a rede não é um MLP, mas deve ser bom ilustrar a ideia.
fonte
Você pode implementar isso de maneira muito simples em Python.
Seu X será a coleção de treinamento das coordenadas x, y, z.
Seu Y será a coleção de testes das coordenadas x, y, z.
fonte
Isso é muito mais fácil do que você imagina - você pode simplesmente definir sua camada de saída como um vetor em vez de um único escalar. É claro que não há mágica por aqui e aconselho você a preparar seus dados (execute a normalização em lote para que todas as saídas tenham valores entre 0 e 1).
Se você estiver usando o Keras, o caminho para fazer isso é adicionar uma camada densa como a camada final de saída:
model.add(Dense(8, activation='linear'))
fonte