Rete neurale per regressione multipla


12

Ho un set di dati contenente 34 colonne di input e 8 colonne di output. Un modo per risolvere il problema è prendere i 34 input e creare un modello di regressione individuale per ogni colonna di output. Mi chiedo se questo problema possa essere risolto utilizzando un solo modello, in particolare utilizzando Neural Network.

Ho usato un percettrone multistrato, ma questo ha bisogno di più modelli proprio come la regressione lineare. L' apprendimento da sequenza a sequenza 1 può essere un'opzione praticabile? Ho provato a usare TensorFlow non sembra essere in grado di gestire valori float.

Sarà apprezzato qualsiasi suggerimento per affrontare questo problema utilizzando solo un modello unificato, specialmente utilizzando la rete neurale.

  1. Ilya Sutskever, Oriol Vinyals e Quoc V. Le (2014). Apprendimento da sequenza a sequenza con reti neurali. Advances in Neural Information Processing Systems , 27. ( pdf )

Qual è il problema?
TEG - Ripristina Monica l'

1
(Per tutti i potenziali elettori vicini: questa non è una domanda di programmazione. Sarebbe fuori tema su Stack Overflow .)
gung - Ripristina Monica

Puoi chiarire qui l'opzione "sequenza per sequenza"? Non so se sarà familiare alle persone che lavorano con NN, ma non lo è per me.
gung - Ripristina Monica

Modellazione da sequenza a sequenza mediante RNN. papers.nips.cc/paper/…
sjishan,

Puoi provare MultiOutputRegressor (). Questo funziona per questo tipo di problemi
Subham Sarkar,

Risposte:


7

Y=γ+V1Γ1+εV1=un'(γ2+V2Γ2)V2=un'(γ3+V3Γ3)VL-1=un'(γL+XΓL)
N×8[γ1,Γ1](pV1+1)×8

Vale a dire che dovresti supporre che ogni risultato condivida TUTTI i parametri nei livelli nascosti e abbia solo parametri diversi per prendere la variabile derivata più in alto e metterla in relazione con il risultato.

È un presupposto realistico per il tuo contesto?


5

All'inizio ho pensato che il commento di generic_user fosse uno spettacolo, ma ho appena capito che non lo è:

Se alleno d reti diverse su d uscite diverse, ognuna sarà adatta a quella dimensione senza riguardo per le altre.

Ma se alleno una rete con uscite d e uso tutte le uscite per la backpropagation, ogni peso in ogni strato della rete sarà regolato in modo che tutte le uscite d siano più accurate.

Vale a dire: ogni parametro di rete sarà regolato da una somma di gradienti (come ogni uscita varia con un " wiggle " in questo parametro) in modo tale che regolandolo nella direzione su o giù prescelta si ottenga un output più accurato complessivo, anche se si regola il peso in questo modo fa sì che alcune dimensioni dell'output siano meno precise.

Quindi, sì, la cosa che alla fine distingue ogni output è solo un'equazione lineare codificata nell'ultimo layer, ma nella formazione di una rete multi-output ogni layer migliorerà nel presentare a quell'ultimo layer qualcosa che gli consente di fare meglio il suo lavoro . E quindi ne consegue che le relazioni tra gli output saranno spiegate da questa architettura.

Potresti essere in grado di fare meglio di una rete completamente connessa facendo in modo che la tua architettura rifletta qualsiasi relazione nota nell'output, proprio come le reti profonde fanno meglio di quelle superficiali sfruttando le relazioni "compositive" tra gli input .


Una regressione multivariata presuppone l'esistenza di una matrice di covarianza (sconosciuta) che mette in relazione le variabili target tra loro. Stai suggerendo che avere un solo strato denso è sufficiente per catturare questa covarianza senza la necessità di includere esplicitamente gli strati nascosti?
thecity2

Sto suggerendo che i livelli nascosti devono catturare parte di quella covarianza. Un solo strato di output denso è solo un gruppo di funzioni parallele di regressori lineari attraverso l'attivazione. Non è possibile stabilire alcuna relazione tra output quando non è presente un layer nascosto per la messa a punto reciproca e per l'input / passaggio come input per altri nodi di output.
Pavel Komarov il

0

Puoi farlo con una sola rete neurale. Ma la tua rete neurale dovrebbe apparire così:
Livello di input: 34 nodi (uno per colonna di input)
Livello di output: 8 nodi (uno per colonna di output)

Puoi aggiungere tutti i livelli nascosti e grandi che desideri nella rete neurale. Quindi la rete neurale genera 8 valori previsti e ciascun valore sarà una regressione diversa degli input.


quale pacchetto di quale lingua supporta così ??
Arpit Sisodia,

0

Mi chiedevo lo stesso; ecco le mie idee:

Suppongo che se gli output condividono alcuni schemi nascosti, l'allenamento può trarre vantaggio dall'apprendimento simultaneo della regressione per tutti gli output.

Sarebbe interessante provare un'architettura in cui si costruisce una rete neurale per ogni uscita, ma tutte le reti neurali condividono alcuni livelli (ad esempio i primi metà strati). Quindi potresti allenare ogni rete neurale allo stesso tempo: all'interno del ciclo di apprendimento, ogni rete neurale viene addestrata un passo (con un batch) in sequenza.

Questo sarebbe simile al trasferimento delle conoscenze, ma con la differenza che nel trasferimento delle conoscenze ogni rete neurale è completamente addestrata prima di riutilizzare una parte di essa per formare un'altra rete neurale.

Scommetto che qualcuno ci ha pensato prima, ma non ho riferimenti ad esso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.