Was genau ist Kreuzvalidierung?

Aug 30 2020

Basierend auf meinem Verständnis von Google und anderen Posts wie diesem. Wofür ist Kreuzvalidierung? und Was ist Kreuzvalidierung? . Ich verstehe, dass (k-fache) Kreuzvalidierung bedeutet, die Daten in ($k-1$) Training und 1 Testset. Mit anderen Worten wird es zum Ermitteln der Modellgenauigkeit verwendet.

Bedeutet das also, dass ich meine Daten nicht in Trainings- und Testdatensätze aufteilen muss, wenn ich eine Kreuzvalidierung durchführe? Sagen Sie auch, wenn ich es tue (in r):

model = train(target~., data = data, method = "glmnet",
  trControl = trainControl("cv", number = 10),
  tuneLength = 10
)

Mit diesem Code finde ich das beste Modell in diesen 10 Versuchen. Wenn ich dann die Vorhersage mache, verwende ich das beste Modell?

Antworten

3 Bernhard Aug 30 2020 at 15:06

Die Kreuzvalidierung ist eine spezielle Form der Aufteilung von Daten in Trainings- und Testdaten, bei der diese Aufteilung nicht nur einmal, sondern in mehreren Zahlen erfolgt $n$ von Zeiten.

Sagen Sie auch, wenn ich es tue (in r)

Es gibt ein sehr leistungsfähiges Paket, das in R geladen werden kann caret. caretliefert die sehr leistungsfähige Funktion train, die in Ihrem Beispielcode verwendet wird. caretnimmt in der Tat viel Zeit in Anspruch, um den besten Parametersatz (aus einem Raster möglicher Kombinationen) für maschinelles Lernen zu finden; auch über Kreuzvalidierung. Sie müssen die Daten nicht von Hand teilen, sondern es erfolgt eine Aufteilung.

Mit diesem Code finde ich das beste Modell

Durch Ausprobieren wird die beste Parameterkombination aus einem bestimmten Raster von Parameterkombinationen ermittelt. Bevor Sie ein leistungsstarkes Tool wie dieses verwenden train, sollten Sie seine Optionen gut verstehen und auch verstehen, wie Sie beeinflussen können, welches Parameterraster ausprobiert wird.

Zum Glück gibt es carettolle Erklärungen. Fang hier an:https://topepo.github.io/caret/model-training-and-tuning.html oder besser am Anfang dieses Buches beginnen.