J'ai un ensemble de données contenant 34 colonnes d'entrée et 8 colonnes de sortie.
Une façon de résoudre le problème consiste à prendre les 34 entrées et à créer un modèle de régression individuel pour chaque colonne de sortie.
Je me demande si ce problème peut être résolu en utilisant un seul modèle, en particulier en utilisant Neural Network.
J'ai utilisé Perceptron multicouche, mais cela nécessite plusieurs modèles, tout comme la régression linéaire. La séquence à séquence peut-elle être une option viable?
J'utilise TensorFlow. J'ai du code mais je pense qu'il est plus important de comprendre ce que je manque en termes de théorie du perceptron multicouche.
Je comprends que dans MLP, si vous avez un nœud de sortie, il fournira une sortie. Si vous avez 10 nœuds de sortie, c'est un problème multi-classes. Vous choisissez la classe avec la probabilité la plus élevée parmi les 10 sorties. Mais dans mon cas, il est certain qu'il y aura 8 sorties pour la même entrée.
Disons que pour un ensemble d'entrées, vous obtiendrez les coordonnées 3D de quelque chose (X, Y, Z). Comme, Inputs = {1,10,5,7} Output = {1,2,1}. Donc, pour la même entrée {1,10,5,7}, je dois faire des modèles pour la valeur X, la valeur Y et Z. Une solution consiste à avoir 3 modèles différents en utilisant MLP. Mais je voudrais voir si je peux avoir un modèle. J'ai donc pensé à utiliser seq2seq. Parce que l'encodeur prend une série d'entrées et le décodeur fournit une série de sorties. Mais il semble que seq2seq dans tensorflow ne puisse pas gérer les valeurs flottantes. Je peux me tromper cependant.
la source
Réponses:
Ce que vous décrivez est une régression linéaire multidimensionnelle normale. Ce type de problème est normalement résolu avec un réseau à action directe, MLP ou toute autre architecture qui convient à la nature du problème.
N'importe quel cadre de réseau neuronal est capable de faire quelque chose comme ça.
La clé pour cela est de se rappeler que la dernière couche doit avoir des activations linéaires (c'est-à-dire aucune activation du tout).
Selon vos besoins, la forme de la couche d'entrée serait un vecteur (34,) et la sortie (8,).
Mise à jour : la fonction de perte habituelle utilisée pour les problèmes de régression est l'erreur quadratique moyenne (MSE). Voici un exemple de régression multidimensionnelle utilisant Keras ; le réseau n'est pas un MLP mais ça devrait être OK pour illustrer l'idée.
la source
Vous pouvez l'implémenter très simplement en Python.
Votre X sera la collection de coordonnées d'entraînement x, y, z.
Votre Y sera la collection de tests de coordonnées x, y, z.
la source
C'est beaucoup plus facile que vous ne le pensez - vous pouvez simplement définir votre couche de sortie pour être un vecteur au lieu d'un seul scalaire. Bien sûr, il n'y a pas de magie ici et je vous conseille de préparer vos données (effectuez la normalisation par lots pour que toutes les sorties soient des valeurs comprises entre 0 et 1).
Si vous utilisez Keras, la façon de procéder consiste à ajouter une couche dense comme couche de sortie finale:
model.add(Dense(8, activation='linear'))
la source