Selezione di parametri per algoritmo genetico


9

Come si può selezionare il numero corretto di parametri per un algoritmo genetico per modellare un determinato sistema?

Ad esempio, supponiamo che tu voglia ottimizzare la produzione di automobili e che tu abbia 1.000 misurazioni di efficienza oraria in varie attività per ciascuno di 1.000 impiegati diversi. Quindi, hai 1.000.000 di punti dati. È probabile che la maggior parte di questi siano debolmente correlati all'efficienza complessiva della vostra fabbrica, ma non così debolmente da poter affermare che sono irrilevanti con la fiducia statistica. Come si fa a scegliere gli input per il proprio GA in modo da non avere più di 1.000.000 di gradi di libertà, con conseguente convergenza molto lenta o nessuna convergenza?

In particolare, quali sono gli algoritmi che si potrebbero usare per preselezionare o eliminare selettivamente le funzionalità?

Un approccio Io stesso ho utilizzato in questo scenario è quello di evolvere la selezione parametro stesso, quindi potrei avere genitori come {a,b,c}, {b,d,e,q,x,y,z}e così via. Vorrei quindi mutare i bambini per aggiungere o eliminare funzionalità. Funziona bene per alcune dozzine di funzionalità. Ma il problema è che è inefficiente se esiste un gran numero di gradi di libertà. In tal caso, stai esaminando le 10^ncombinazioni (nell'esempio sopra, 10^1,000,000), il che rende fondamentale un pre-filtro delle funzionalità per ottenere qualsiasi tipo di prestazione utile.

Risposte:


11

Prima di tutto, l'esempio non sembra adatto perché probabilmente per risolvere questo problema useresti probabilmente una regressione o metodi ML classici. In secondo luogo, ti riferisci a un problema generale di selezione delle caratteristiche (Kira, Rendell, 1992) o selezione degli attributi (Hall, Holmes, 2003) o selezione delle variabili (Guyon, Elisseeff, 2003) o selezione dei sottoinsiemi variabili (Stecking, Schebesch, 2005) o estrazione di feature (Hillion, Masson, Roux, 1988) o riduzione della dimensionalità (Roweis, Saul, 200) o astrazione dello stato (Amarel, 1968). Questo problema è rilevante non solo per gli algoritmi genetici ma per quasi tutte le tecniche di apprendimento automatico quando si tratta di dati ad alta dimensione.

Qui si possono distinguere tre casi: l'ultima istanza di questo problema noto come astrazione dello stato è generalmente correlata alla modellizzazione del processo (che si adatta al tuo esempio, ma non al contesto GA). I primi tre, ovvero la selezione delle caratteristiche , la selezione degli attributi o la selezione delle variabili sembrano essere più rilevanti quando si prende letteralmente la domanda. In questo contesto una soluzione comune è l'approccio mRMR (Peng, Long, Ding, 2005) . Dalla mia esperienza non sempre funziona bene con dati continui, tuttavia le informazioni reciproche possono essere sostituite con altri coefficienti, come ad esempio la correlazione. Un altro possibile approccio consiste nell'utilizzare la convalida incrociata (Picard, Cook, 1984)per questo. È possibile avere più modelli ciascuno utilizzando funzionalità diverse e, mediante la selezione del modello con tecniche di convalida incrociata, si sceglie il modello migliore, che fornisce le informazioni su quali funzioni funzionano meglio per l'attività specificata.

I casi di estrazione delle caratteristiche e riduzione della dimensionalità consentono non solo di selezionare le caratteristiche iniziali, ma anche le loro combinazioni. Una soluzione di esempio ben nota per questo caso è l'algoritmo PCA (Pearson, 1901) , che produce l'insieme ottimale, in termini di varianza spiegata, set di funzioni che sono combinazioni lineari di funzioni di input.

Si noti inoltre che esistono molti modelli che gestiscono autonomamente l'attività di estrazione delle caratteristiche. Alcuni esempi sono: Growing Neural Gas Network (Fritzke, 1995) , LASSO (Tibshirani, 2011) , RFE SVM (Zeng, Chen, Tao, 2009) , Decision Trees (Quinlan, 1986) .

Riferimenti:


3

Non l'ho mai fatto prima, e ovviamente non ho accesso a tali dati, ma un modo potenzialmente buono per farlo sarebbe attraverso il clustering . Per ogni dipendente, abbiamo un vettore n-dimensionale, in cui ogni dimensione risponde a un compito diverso. Quindi, possiamo usare il clustering per raggruppare impiegati "simili"; tuttavia, questo dipenderà esclusivamente dai tuoi dati, vale a dire è del tutto possibile che, dato solo 1000 dipendenti, il clustering produrrà gruppi di dipendenti che non sono poi così correlati, e quindi mentre possiamo ottenere una riduzione della popolazione, può essere a scapito della perdita di informazioni.

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.