2016-07-26 39 views
2

Ich möchte eine Lernkurve in meiner Anwendung erstellen.Wie zeichne ich eine Lernkurve in R?

Eine Beispielkurve ist unten abgebildet.

enter image description here

Lernkurve ist eine Kurve zwischen den folgenden Variance,

  • X-Achse: Anzahl der Proben (Training Satzgröße).
  • Y-Achse: Fehler (RSS/J (theta)/Kostenfunktion)

Es hilft bei der Beobachtung, ob unser Modell die hohe Vorspannung oder hohe Varianz Problem hat.

Gibt es ein Paket in R, das dabei helfen kann, dieses Diagramm zu erhalten?

+0

Hallo, bitte zeigen Sie freundlich Anerkennung von upvoting und den grünen Pfeil klicken, um eine Antwort auszuwählen, die in irgendeiner Weise nützlich war. Vielen Dank. –

Antwort

1

Sie können eine solche Zeichnung mit dem ausgezeichneten Caret Paket machen. Der Abschnitt Customizing the tuning process wird sehr hilfreich sein.

Sie können auch die gut geschriebene Blog-Beiträge auf R-Bloggers von Joseph Rickert überprüfen. Sie tragen den Titel "Why Big Data? Learning Curves" und .

UPDATE
Ich habe gerade einen Beitrag zu dieser Frage Plot learning curves with caret package and R. Ich denke, meine Antwort wird dir nützlicher sein. Aus Gründen der Bequemlichkeit habe ich hier die gleiche Antwort reproduziert, um eine Lernkurve mit R zu zeichnen. Allerdings habe ich das beliebte caret-Paket verwendet, um mein Modell zu trainieren und den RMSE-Fehler für das Training und das Testset zu erhalten.

# set seed for reproducibility 
set.seed(7) 

# randomize mtcars 
mtcars <- mtcars[sample(nrow(mtcars)),] 

# split iris data into training and test sets 
mtcarsIndex <- createDataPartition(mtcars$mpg, p = .625, list = F) 
mtcarsTrain <- mtcars[mtcarsIndex,] 
mtcarsTest <- mtcars[-mtcarsIndex,] 

# create empty data frame 
learnCurve <- data.frame(m = integer(21), 
        trainRMSE = integer(21), 
        cvRMSE = integer(21)) 

# test data response feature 
testY <- mtcarsTest$mpg 

# Run algorithms using 10-fold cross validation with 3 repeats 
trainControl <- trainControl(method="repeatedcv", number=10, repeats=3) 
metric <- "RMSE" 

# loop over training examples 
for (i in 3:21) { 
    learnCurve$m[i] <- i 

    # train learning algorithm with size i 
    fit.lm <- train(mpg~., data=mtcarsTrain[1:i,], method="lm", metric=metric, 
      preProc=c("center", "scale"), trControl=trainControl)   
    learnCurve$trainRMSE[i] <- fit.lm$results$RMSE 

    # use trained parameters to predict on test data 
    prediction <- predict(fit.lm, newdata = mtcarsTest[,-1]) 
    rmse <- postResample(prediction, testY) 
    learnCurve$cvRMSE[i] <- rmse[1] 
} 

pdf("LinearRegressionLearningCurve.pdf", width = 7, height = 7, pointsize=12) 

# plot learning curves of training set size vs. error measure 
# for training set and test set 
plot(log(learnCurve$trainRMSE),type = "o",col = "red", xlab = "Training set size", 
      ylab = "Error (RMSE)", main = "Linear Model Learning Curve") 
lines(log(learnCurve$cvRMSE), type = "o", col = "blue") 
legend('topright', c("Train error", "Test error"), lty = c(1,1), lwd = c(2.5, 2.5), 
     col = c("red", "blue")) 

dev.off() 

Der Ausgang Grundstück ist wie folgt:
MtCarsLearningCurve.png