Auswahl von Parametern für den genetischen Algorithmus

9

Wie kann man die richtige Anzahl von Parametern für einen genetischen Algorithmus auswählen, um ein bestimmtes System zu modellieren?

Angenommen, Sie möchten die Produktion von Autos optimieren und haben 1.000 Messungen der stündlichen Effizienz bei verschiedenen Aufgaben für jeweils 1.000 verschiedene Mitarbeiter. Sie haben also 1.000.000 Datenpunkte. Die meisten davon korrelieren wahrscheinlich schwach mit der Gesamteffizienz Ihrer Fabrik, aber nicht so schwach, dass Sie sagen können, dass sie mit statistischer Sicherheit irrelevant sind. Wie gehen Sie vor, um Eingaben für Ihre GA auszuwählen, damit Sie nicht über 1.000.000 Freiheitsgrade verfügen, was zu einer sehr langsamen oder gar keiner Konvergenz führt?

Welche Algorithmen könnten speziell verwendet werden, um Merkmale vorzuwählen oder selektiv zu eliminieren?

Ein Ansatz , den ich verwendet habe mich in diesem Szenario ist die Parameterauswahl selbst zu entwickeln, so dass ich vielleicht Eltern wie {a,b,c}, {b,d,e,q,x,y,z}und so weiter. Ich würde dann die Kinder mutieren, um Features hinzuzufügen oder zu löschen. Dies funktioniert gut für ein paar Dutzend Funktionen. Das Problem ist jedoch, dass es ineffizient ist, wenn es eine große Anzahl von Freiheitsgraden gibt. In diesem Fall handelt es sich um 10^nKombinationen (im obigen Beispiel 10^1,000,000), bei denen eine Vorfilterung von Funktionen wichtig ist, um eine nützliche Leistung zu erzielen.

Elixenid
quelle

Antworten:

11

Erstens - das Beispiel scheint nicht gut geeignet zu sein, da Sie wahrscheinlich einige Regressions- oder klassische ML-Methoden verwenden würden, um dies zu lösen. Zweitens beziehen Sie sich auf ein allgemeines Problem der Merkmalsauswahl (Kira, Rendell, 1992) oder der Attributauswahl (Hall, Holmes, 2003) oder der Variablenauswahl (Guyon, Elisseeff, 2003) oder der Variablenuntermengenauswahl (Stecking, Schebesch, 2005). oder Merkmalsextraktion (Hillion, Masson, Roux, 1988) oder Dimensionsreduktion (Roweis, Saul, 200) oder Zustandsabstraktion (Amarel, 1968). Dieses Problem ist nicht nur für genetische Algorithmen relevant, sondern für fast alle Techniken des maschinellen Lernens beim Umgang mit hochdimensionalen Daten.

Hier können drei Fälle unterschieden werden: Die letzte Instanz dieses Problems, die als Zustandsabstraktion bezeichnet wird, bezieht sich normalerweise auf die Prozessmodellierung (die zu Ihrem Beispiel passt, jedoch nicht zum GA-Kontext). Die ersten drei, dh Merkmalsauswahl , Attributauswahl oder Variablenauswahl, scheinen am relevantesten zu sein, wenn Sie Ihre Frage wörtlich nehmen. In diesem Zusammenhang ist der mRMR-Ansatz eine gängige Lösung (Peng, Long, Ding, 2005) . Nach meiner Erfahrung funktioniert es mit kontinuierlichen Daten nicht immer gut - gegenseitige Informationen können jedoch durch andere Koeffizienten ersetzt werden, beispielsweise durch Korrelation. Ein anderer möglicher Ansatz ist die Verwendung einer Kreuzvalidierung (Picard, Cook, 1984).dafür. Sie können mehrere Modelle mit jeweils unterschiedlichen Funktionen verwenden und mithilfe der Modellauswahl mit Kreuzvalidierungstechniken das beste Modell auswählen, um Informationen darüber zu erhalten, welche Funktionen für die jeweilige Aufgabe am besten geeignet sind.

Die Fälle der Merkmalsextraktion und Dimensionsreduzierung ermöglichen nicht nur die Auswahl von Anfangsmerkmalen, sondern auch deren Kombinationen. Eine bekannte beispielhafte Lösung für diesen Fall ist der PCA-Algorithmus (Pearson, 1901) , der hinsichtlich der erklärten Varianz den optimalen Satz von Merkmalen erzeugt, die lineare Kombinationen von Eingabemerkmalen sind.

Beachten Sie auch, dass es viele Modelle gibt, die die Aufgabe der Merkmalsextraktion selbst erledigen. Einige Beispiele sind: Wachsendes neuronales Gasnetz (Fritzke, 1995) , LASSO (Tibshirani, 2011) , RFE SVM (Zeng, Chen, Tao, 2009) , Entscheidungsbäume (Quinlan, 1986) .

Verweise:

BartoszKP
quelle
3

Ich habe dies noch nie zuvor getan und habe offensichtlich keinen Zugriff auf diese Daten, aber ein potenziell guter Weg, dies zu tun, wäre das Clustering . Für jeden Mitarbeiter haben wir einen n-dimensionalen Vektor, wobei jede Dimension einer anderen Aufgabe entspricht. Dann können wir Clustering verwenden, um "ähnliche" Mitarbeiter zu gruppieren. Dies hängt jedoch ausschließlich von Ihren Daten ab, dh es ist durchaus möglich, dass bei nur 1000 Mitarbeitern durch Clustering Gruppen von Mitarbeitern entstehen, die nicht wirklich miteinander verwandt sind kann auf Kosten des Informationsverlustes gehen.

Steve P.
quelle