cvloss or kfoldloss for regression tree?

3 views (last 30 days)
Salad Box
Salad Box on 16 Jan 2019
Answered: Jeremy Brecevic on 27 Nov 2020
Hi,
I'm a bit confused with 'cvloss' and 'kfoldLoss'.
  1. kfoldLoss
Syntax: L = kfoldLoss(cvmodel) returns the cross-validation loss of cvmodel.
load carsmall
>> XX = [Displacement Horsepower Weight];
>> YY = MPG;
>> cvmodel = fitrtree(XX,YY,'crossval','on');
>> L = kfoldLoss(cvmodel,'mode','average')
L =
30.3578
Default: 'mse', mean square root.
2. cvloss
Syntax: E = cvloss(tree) returns the cross-validated regression error (loss) for a regression tree.
>> load carsmall
>> X = [Displacement Horsepower Weight];
>> Mdl = fitrtree(X,MPG);
>> rng(1);
>> E = cvloss(Mdl)
E =
25.7383
First, both cases used same predictors and same response, why there is a difference between L and E outcomes?
Second, function 'fitrtree' by default 'crossval' is turned 'off'. In the 'cvloss' example, noticed that 'Mdl = fitrtree(X,MPG);' didn't turn 'crossval' on, how does it have anything to do with cross-validated regression? It is not even turned on.
Third, how are both kfoldLoss and cvloss calculated? looks that they both use MSE but giving completely different results.

Answers (1)

Jeremy Brecevic
Jeremy Brecevic on 27 Nov 2020
Unlike cvloss, kfoldLoss does not return SE,Nleaf, or BestLevel. kfoldLoss also does not allow you to examine any error other than the classification error.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!