Ich habe mir gerade einen Vortrag aus dem Kurs über maschinelles Lernen auf Coursera noch einmal angesehen. In dem Abschnitt, in dem der Professor PCA für die Vorverarbeitung von Daten in beaufsichtigten Lernanwendungen bespricht, sagt er, dass PCA nur für die Trainingsdaten durchgeführt werden sollte und dann das Mapping verwendet wird, um die Kreuzvalidierungs- und Test-Sets zu transformieren. Siehe auch PCA und die Zug- / Testaufteilung .
In der caret
R-Paket werden die Trainingsdaten, die Sie an die train()
Funktion übergeben, jedoch bereits von PCA verarbeitet. Wenn der Algorithmus eine k-fache Kreuzvalidierung durchführt, wurde der Kreuzvalidierungssatz bereits mit PCA über preProcess()
und verarbeitet predict()
und wird tatsächlich in der PCA- "Anpassung" verwendet.
Ist mein Verständnis der Situation korrekt? Das heißt, das Verfahren von Caret zur Kreuzvalidierung mit PCA (oder in der Tat mit einer Methode zum erneuten Skalieren / Zentrieren) ist "falsch", weil die Vorverarbeitung von Daten sowohl auf dem Kreuzvalidierungssatz als auch auf dem Trainingssatz durchgeführt wird. Und wenn ja, wie stark würde sich dies auf die Ergebnisse auswirken?
quelle
Antworten:
Ich habe die Vorlesung nicht gesehen, daher kann ich nicht kommentieren, was gesagt wurde.
My $ 0.02: Wenn Sie mit Resampling gute Schätzungen der Leistung erhalten möchten, sollten Sie wirklich alle Vorgänge während des Resamplings ausführen, anstatt zuvor. Dies gilt sowohl für die Funktionsauswahl [1] als auch für nicht triviale Operationen wie PCA. Wenn die Ergebnisse dadurch unsicherer werden, schließen Sie sie in die erneute Abtastung ein.
Denken Sie an die Hauptkomponentenregression: PCA gefolgt von linearer Regression für einige der Komponenten. PCA schätzt die Parameter (mit Rauschen) und die Anzahl der Komponenten muss ebenfalls ausgewählt werden (unterschiedliche Werte führen zu unterschiedlichen Ergebnissen => mehr Rauschen).
Angenommen, wir haben einen 10-fachen Lebenslauf mit Schema 1 verwendet:
oder Schema 2:
Es sollte klar sein, dass der zweite Ansatz zu Fehlerschätzungen führen sollte, die die durch PCA verursachte Unsicherheit, die Auswahl der Anzahl der Komponenten und die lineare Regression widerspiegeln. In der Tat hat der Lebenslauf im ersten Schema keine Ahnung, was davor war.
Ich bin schuld daran, nicht immer alle Operationen w / in Resampling zu tun, aber nur, wenn mir Leistungsschätzungen nicht wirklich wichtig sind (was ungewöhnlich ist).
Gibt es einen großen Unterschied zwischen den beiden Schemata? Es kommt auf die Daten und die Vorverarbeitung an. Wenn Sie nur zentrieren und skalieren, wahrscheinlich nicht. Wenn Sie eine Menge Daten haben, wahrscheinlich nicht. Wenn die Größe des Trainingssatzes abnimmt, steigt das Risiko, schlechte Schätzungen zu erhalten, insbesondere wenn n in der Nähe von p liegt.
Aus Erfahrung kann ich mit Sicherheit sagen, dass es eine wirklich schlechte Idee ist, die überwachte Merkmalsauswahl nicht in das Resampling einzubeziehen (ohne große Trainingssätze). Ich verstehe nicht, warum die Vorverarbeitung (bis zu einem gewissen Grad) dagegen immun ist.
@mchangun: Ich denke, dass die Anzahl der Komponenten ein Optimierungsparameter ist, und Sie möchten ihn wahrscheinlich anhand von verallgemeinerbaren Leistungsschätzungen auswählen. Sie können K automatisch so auswählen, dass mindestens X% der Varianz erklärt werden, und diesen Prozess in die Neuabtastung einbeziehen, damit wir das Rauschen in diesem Prozess berücksichtigen.
Max
[1] Ambroise, C. & McLachlan, G. (2002). Selektionsbias bei der Genextraktion auf Basis von Microarray-Genexpressionsdaten. Verfahren der National Academy of Sciences, 99 (10), 6562–6566.
quelle
Verarbeiten Sie die Daten nicht vor dem Ausführen der
train
Funktion! Verwenden Sie diepreProcess
Argument für die Zugfunktion, und die Vorverarbeitung wird auf jede Iteration der erneuten Abtastung angewendet.zB mach das nicht :
mach das!
quelle
pred <- predict(knnFit2, newdata)
Wonewdata
ist nicht skaliert. Ist Caret intelligent genug, um zu wissen, dass esnewdata
vor der Verwendung für Vorhersagen eine Vorverarbeitung durchführen muss ?