Ich habe einen riesigen Datensatz, und ich bin ziemlich neu in R, so ist die einzige Art und Weise, wie ich 100-fach-CV durch mich implementieren kann durch viele für und If's macht es extrem ineffizient für meine riesige Datenmenge und könnte sogar mehrere Stunden dauern, um zu kompilieren. Ich begann nach Paketen zu suchen, die das tun und fand ziemlich viele Themen im Zusammenhang mit CV auf Stackoverflow, und ich habe versucht, diejenigen zu verwenden, die ich gefunden habe, aber keiner von ihnen funktioniert für mich, ich würde gerne wissen, was ich falsch mache Hier.100-fach-Kreuzvalidierung für Ridge-Regression in R
Zum Beispiel dieser Code aus DAAG
Paket:
cv.lm(data=Training_Points, form.lm=formula(t(alpha_cofficient_values)
%*% Training_Points), m=100, plotit=TRUE)
..gives mir folgende Fehlermeldung:
Error in formula.default(t(alpha_cofficient_values)
%*% Training_Points) : invalid formula
Ich versuche Kernel Ridge Regression zu tun, deshalb habe ich alpha Koeffizient Werte bereits berechnet. Um Vorhersagen zu erhalten, muss ich entweder nur t(alpha_cofficient_values)%*% Test_Points
oder einfach crossprod(alpha_cofficient_values,Test_Points)
eingeben und dies gibt mir alle Vorhersagen für unbekannte Werte. Ich gehe also davon aus, dass ich, um mein Modell zu testen, dasselbe tun sollte, außer für BEKANNTE Werte, daher muss ich meinen Training_Points-Datensatz verwenden.
Mein Training_Points-Datensatz hat 9000 Spalten und 9000 Zeilen. Ich kann für's schreiben und wenn und 100-fache-CV jedes Mal 100 Zeilen als test_data machen und 8900 Zeilen für das Training lassen und dies tun, bis der ganze Datensatz fertig ist, dann Durchschnittswerte nehmen und dann mit meinen bekannten Werten vergleichen. Aber gibt es kein Paket, um das Gleiche zu tun? (und im Idealfall auch die vorhergesagten Werte mit bekannten Werten vergleichen und sie wenn möglich grafisch darstellen)
Entschuldigen Sie bitte meine elementare Frage, ich bin sehr neu in der R- und Kreuzvalidierung, also könnte mir etwas Grundlegendes fehlen Punkte.
Ich verstehe nicht ganz, wie Sie bereits die Koeffizienten haben, da diese für die 100 verschiedenen Modelle unterschiedlich sein werden? Also haben Sie eine 9000 x 100 Matrix von Koeffizienten? – timcdlucas
Sie könnten das Caret-Paket verwenden (ich werde eine Antwort hinzufügen, sobald ich überprüft habe, wie lange es dauert, um zu laufen). 9k Prädiktorvariablen machen es unweigerlich ziemlich langsam. Müssen Sie eine 100-fache Kreuzvalidierung durchführen? Wäre 10 fach vernünftig? – timcdlucas
Ach, Caret hat keine Kernel-Ridge-Regression eingebaut. Sie müssten es hinzufügen. – timcdlucas