Berechnen Sie die cross-Validierung für das Verallgemeinerte Lineare Modell in Matlab
Mache ich eine regression mit Verallgemeinerten Linearen Modell.Ich bin gefangen offguard mit der crossVal
Funktion. Meine Implementierung so weit;
x = 'Some dataset, containing the input and the output'
X = x(:,1:7);
Y = x(:,8);
cvpart = cvpartition(Y,'holdout',0.3);
Xtrain = X(training(cvpart),:);
Ytrain = Y(training(cvpart),:);
Xtest = X(test(cvpart),:);
Ytest = Y(test(cvpart),:);
mdl = GeneralizedLinearModel.fit(Xtrain,Ytrain,'linear','distr','poisson');
Ypred = predict(mdl,Xtest);
res = (Ypred - Ytest);
RMSE_test = sqrt(mean(res.^2));
Den code unten ist für die Berechnung der Kreuz-Validierung für mulitple regression als erhalten link. Ich möchte etwas ähnliches für die Verallgemeinerten Linearen Modells.
c = cvpartition(Y,'k',10);
regf=@(Xtrain,Ytrain,Xtest)(Xtest*regress(Ytrain,Xtrain));
cvMse = crossval('mse',X,Y,'predfun',regf)
- Was ist die Frage?
- Ich möchte berechnen, cross-validation-Fehler für die GLM mit den Funktionen statistische toolbox von Matlab. Nun, gibt es etwas, dass ich vermisst werde, oder dass Matlab einfach doesnot haben eine solche Funktion eingebaut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie entweder führen Sie die cross-Validierung manuell (training-ein Modell für jede Falte, vorherzusagen, Ergebnis, compute error, dann melden Sie den Durchschnitt über alle Falten), oder verwenden Sie die CROSSVAL Funktion, die wickelt das gesamte Verfahren in einem einzigen Aufruf.
Um ein Beispiel zu geben, werde ich erst laden und vorbereiten eines Datensatz (eine Teilmenge der Autos dataset die Schiffe mit der Statistik-Toolbox):
Option 1
Hier werden wir manuell partitionieren Sie die Daten mit k-fold cross-validation mit cvpartition (nicht stratifiziert). Für jede Falte, wir trainieren GLM Modells unter Verwendung der Trainingsdaten, dann das Modell verwenden, um vorherzusagen, Ausgabe von Test Daten. Als Nächstes müssen wir berechnen und speichern der regression der mittlere quadratische Fehler für dieses Fach. Am Ende, wir berichten die durchschnittlichen RMSE über alle Partitionen.
Option 2
Hier können wir einfach anrufen CROSSVAL mit einer entsprechenden Funktion Griff, mit dem die Berechnung der regression output gegeben eine Reihe von Zug/test-Instanzen. Sehen Sie die doc-Seite, um die Parameter zu verstehen.
Sollten Sie ein ähnliches Ergebnis im Vergleich zu vorher (etwas anderes natürlich, aufgrund der Zufälligkeit an der cross-Validierung).
crossval
Ihre eigenencvpartition
- Objekt, wenn Sie wollen..