Ich habe einige Beiträge zur Funktionsauswahl und Kreuzvalidierung gelesen, habe aber noch Fragen zum richtigen Verfahren.
Angenommen, ich habe einen Datensatz mit 10 Funktionen und möchte die besten Funktionen auswählen. Angenommen, ich verwende einen Klassifikator für den nächsten Nachbarn. Kann ich mithilfe der Kreuzvalidierung eine umfassende Suche durchführen, um die Fehlerrate als Leitfaden für die Auswahl der besten Funktionen zu schätzen? So etwas wie der folgende Pseudocode
for i=1:( 2^10 -1)
error(i)= crossval(1-nn, selected_fetures(i))
end
i=find(erro(i)==min(error(i));
selected_fetures= selected_features(i);
Ich versuche in diesem Pseudocode zu erklären, dass ich die Kreuzvalidierung für alle möglichen Merkmalskombinationen durchführe und die Kombination auswähle, die den minimalen Fehler ergibt.
Ich denke, dass dieses Verfahren korrekt ist, da ich eine umfassende Suche durchführe. Die Auswahl der Funktionen basierte nicht auf dem gesamten Datensatz, sondern auf dem durchschnittlichen Fehler auf jeder Partition. Überpasse ich das Modell mit einer solchen Funktionsauswahl?
quelle
Ich denke, dies ist ein gültiges Verfahren für die Merkmalsauswahl, das nicht anfälliger für Überanpassungen ist als andere Merkmalsauswahlverfahren. Das Problem bei diesem Verfahren besteht darin, dass es einen großen Rechenaufwand aufweist und kaum für reale Datensätze verwendet werden kann.
quelle
Ich denke, wenn Sie in jeder Falte der Kreuzvalidierung eine Funktionsauswahl treffen, ist das in Ordnung. Wie oben in den Postern angegeben, passen Sie jedes Modell mit den ausgewählten Funktionen an, die Sie aus dem oben beschriebenen Verfahren erhalten haben. Dies liegt daran, dass alle Daten einen gewissen Einfluss auf die Merkmalsauswahlroutine hatten.
quelle