Multivariate extension of Friedman's gradient descent boosting method for modeling continuous or binary longitudinal response using multivariate tree base learners (Pande et al., 2017). Covariate-time interactions are modeled using penalized B-splines (P-splines) with estimated adaptive smoothing parameter.
Usage
boostmtree(
x,
tm,
id,
y,
family = c("Continuous", "Binary", "Nominal", "Ordinal"),
y_reference = NULL,
M = 200,
nu = 0.05,
na.action = c("na.omit", "na.impute")[2],
K = 5,
mtry = NULL,
nknots = 10,
d = 3,
pen.ord = 3,
lambda,
rho,
lambda.max = 1e+06,
lambda.iter = 2,
svd.tol = 1e-06,
forest.tol = 0.001,
verbose = TRUE,
cv.flag = FALSE,
eps = 1e-05,
mod.grad = TRUE,
NR.iter = 3,
...
)Arguments
- x
Data frame (or matrix) containing the x-values. Rows must be duplicated to match the number of time points for an individual. That is, if individual i has n[i] outcome y-values, then there must be n[i] duplicate rows of i's x-value.
- tm
Vector of time values, one entry for each row in
x.- id
Unique subject identifier, one entry for each row in
x.- y
Observed y-value, one entry for each row in
x.- family
Family of the response variable
y. Use any one from"Continuous","Binary","Nominal", or"Ordinal"based on the scale ofy.- y_reference
Set this value, among the unique
yvalues whenfamily== "Nominal". If NULL, lowest value, among uniqueyvalues, is used.- M
Number of boosting iterations. Must be a positive integer.
- nu
Boosting regularization (shrinkage) parameter. Must be positive; typical values are 0.01–0.1. Smaller values require larger
M.- na.action
Remove missing values (casewise) or impute them. Default is to impute the missing values.
- K
Number of terminal nodes used for the multivariate tree learner. Must be a positive integer; typical values are 3–10.
- mtry
Number of
xvariables selected randomly for tree fitting. Default is use allxvariables.- nknots
Number of knots used for the B-spline for modeling the time interaction effect.
- d
Degree of the piecewise B-spline polynomial (no time effect is fit when d < 1).
- pen.ord
Differencing order used to define the penalty with increasing values implying greater smoothness.
- lambda
Smoothing (penalty) parameter used for B-splines with increasing values associated with increasing smoothness/penalization. If missing, or non-positive, the value is estimated adaptively using a mixed models approach.
- rho
If missing, rho is estimated, else, use the
rhovalue specified in this argument.- lambda.max
Tolerance used for adaptively estimated lambda (caps it). For experts only.
- lambda.iter
Number of iterations used to estimate lambda (only applies when lambda is not supplied and adaptive smoothing is employed).
- svd.tol
Tolerance value used in the SVD calculation of the penalty matrix. For experts only.
- forest.tol
Tolerance used for forest weighted least squares solution. Experimental and for experts only.
- verbose
Should verbose output be printed?
- cv.flag
Should in-sample cross-validation (CV) be used to determine optimal stopping using out of bag data?
- eps
Tolerance value used for determining the optimal
M. Applies only ifcv.flag= TRUE. For experts only.- mod.grad
Use a modified gradient? See details below.
- NR.iter
Number of Newton-Raphson iteration. Applied for
family="Binary","Nominal", or"Ordinal".- ...
Further arguments passed to or from other methods.
Value
An object of class (boostmtree, grow) with the following
components:
- x
The x-values, but with only one row per individual (i.e. duplicated rows are removed). Values sorted on
id.- xvar.names
X-variable names.
- time
List with each component containing the time points for a given individual. Values sorted on
id.- id
Sorted subject identifier.
- y
List with each component containing the observed y-values for a given individual. Values sorted on
id.- Yorg
For family == "Nominal" or family == "Ordinal", this provides the response in list-format where each element coverted the response into the binary response.
- family
Family of
y.- ymean
Overall mean of y-values for all individuals. If
family= "Binary",ymean= 0.- ysd
Overall standard deviation of y-values for all individuals. If
family= "Binary",ysd= 1.- na.action
Remove missing values or impute?
- n
Total number of subjects.
- ni
Number of repeated measures for each subject.
- n.Q
Number of class labels for non-continuous response.
- Q_set
Class labels for the non-continuous response.
- y.unq
Unique y values for the non-continous response.
- y_reference
Reference value for family == "Nominal".
- tm.unq
Unique time points.
- gamma
List of length M, with each component containing the boosted tree fitted values.
- mu
List with each component containing the estimated mean values for an individual. That is, each component contains the estimated time-profile for an individual. When in-sample cross-validation is requested using
cv.flag=TRUE, the estimated mean is cross-validated and evaluated at the optimal number of iterationsMopt. If the family == "Nominal" or family == "Ordinal",muwill have a higher level of list to accommodate binary responses generated from nominal or ordinal response.- Prob_class
For family == "Ordinal", this provides individual probabilty rather than cumulative probabilty.
- lambda
Smoothing parameter. Results provided in vector or matrix form, depending on whether family == c("Continuous","Binary") or family == c("Nominal", "Ordinal").
- phi
Variance parameter.Results provided in vector or matrix form, depending on whether family == c("Continuous","Binary") or family == c("Nominal", "Ordinal").
- rho
Correlation parameter.Results provided in vector or matrix form, depending on whether family == c("Continuous","Binary") or family == c("Nominal", "Ordinal").
- baselearner
List of length M containing the base learners.
- membership
List of length M, with each component containing the terminal node membership for a given boosting iteration.
- X.tm
Design matrix for all the unique time points.
- D
Design matrix for each subject.
- d
Degree of the piecewise B-spline polynomial.
- pen.ord
Penalization difference order.
- K
Number of terminal nodes.
- M
Number of boosting iterations.
- nu
Boosting regularization parameter.
- ntree
Number of trees.
- cv.flag
Whether in-sample CV is used or not?
- err.rate
In-sample standardized estimate of l1-error and RMSE.
- rmse
In-sample standardized RMSE at optimized
M.- Mopt
The optimized
M.- gamma.i.list
Estimate of gamma obtained from in-sample CV if
cv.flag= TRUE, else NULL- forest.tol
Forest tolerance value (needed for prediction).
Details
Each individual has observed y-values, over possibly different time points, with possibly differing number of time points. Given y, the time points, and x, the conditional mean time profile of y is estimated using gradient boosting in which the gradient is derived from a criterion function involving a working variance matrix for y specified as an equicorrelation matrix with parameter rho multiplied by a variance parameter phi. Multivariate trees are used for base learners and weighted least squares is used for solving the terminal node optimization problem. This provides solutions to the core parameters of the algorithm. For ancillary parameters, a mixed-model formulation is used to estimate the smoothing parameter associated with the B-splines used for the time-interaction effect, although the user can manually set the smoothing parameter as well. Ancillary parameters rho and phi are estimated using GLS (generalized least squares).
In the original boostmtree algorithm (Pande et al., 2017), the
equicorrelation parameter rho is used in two places in the algorithm:
(1) for growing trees using the gradient, which depends upon rho; and
(2) for solving the terminal node optimization problem which also uses the
gradient. However, Pande (2017) observed that setting rho to zero in
the gradient used for growing trees improved performance of the algorithm,
especially in high dimensions. For this reason the default setting used in
this algorithm is to set rho to zero in the gradient for (1). The
rho in the gradient for (2) is not touched. The option
mod.grad specifies whether a modified gradient is used in the tree
growing process and is TRUE by default.
By default, trees are grown from a bootstrap sample of the data – thus the boosting method employed here is a modified example of stochastic gradient descent boosting (Friedman, 2002). Stochastic descent often improves performance and has the added advantage that out-of-sample data (out-of-bag, OOB) can be used to calculate variable importance (VIMP).
The package implements R-side parallel processing by replacing the R
function lapply with mclapply found in the
parallel package. You can set the number of cores accessed by
mclapply by issuing the command options(mc.cores = x),
where x is the number of cores. The options command can also be
placed in the users .Rprofile file for convenience. You can, alternatively,
initialize the environment variable MC_CORES in your shell
environment.
As an example, issuing the following options command uses all available cores for R-side parallel processing:
options(mc.cores=detectCores())
However, be cautious when setting mc.cores. This can create not
only high CPU usage but also high RAM usage, especially when using functions
partialPlot and predict.
The method can impute the missing observations in x (covariates) using on
the fly imputation. Details regarding can be found in the
randomForestSRC package. If missing values are present in the
tm, id or y, the user should either impute or delete
these values before executing the function.
Finally note cv.flag can be used for an in-sample cross-validated
estimate of prediction error. This is used to determine the optimized
number of boosting iterations Mopt. The final mu predictor is
evaluated at this value and is cross-validated. The prediction error
returned via err.rate is standardized by the overall standard
deviation of y.
References
Friedman J.H. (2001). Greedy function approximation: a gradient boosting machine, Ann. of Statist., 5:1189-1232.
Friedman J.H. (2002). Stochastic gradient boosting. Comp. Statist. Data Anal., 38(4):367–378.
Pande A., Li L., Rajeswaran J., Ehrlinger J., Kogalur U.B., Blackstone E.H., Ishwaran H. (2017). Boosted multivariate trees for longitudinal data, Machine Learning, 106(2): 277–305.
Pande A. (2017). Boosting for longitudinal data. Ph.D. Dissertation, Miller School of Medicine, University of Miami.
Examples
##------------------------------------------------------------
## synthetic example (Response y is continuous)
## 0.8 correlation, quadratic time with quadratic interaction
##-------------------------------------------------------------
#simulate the data (use a small sample size for illustration)
dta <- simLong(n = 50, N = 5, rho =.80, model = 2,family = "Continuous")$dtaL
#basic boosting call (M set to a small value for illustration)
boost.grow <- boostmtree(dta$features, dta$time, dta$id, dta$y,family = "Continuous",M = 20)
#>
|
| | 0%
|
|==== | 5%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|======= | 10%
|
|========== | 15%
|
|============== | 20%
|
|================== | 25%
|
|===================== | 30%
|
|======================== | 35%
|
|============================ | 40%
|
|================================ | 45%
|
|=================================== | 50%
|
|====================================== | 55%
|
|========================================== | 60%
|
|============================================== | 65%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|================================================= | 70%
|
|==================================================== | 75%
|
|======================================================== | 80%
|
|============================================================ | 85%
|
|=============================================================== | 90%
|
|================================================================== | 95%
|
|======================================================================| 100%
#print results
print(boost.grow)
#> boostmtree summary
#> model : mtree-Pspline learner
#> fitting mode : grow
#> Family : Continuous
#> number of K-terminal nodes : 5
#> regularization parameter : 0.05
#> sample size : 50
#> number of variables : 4
#> number of unique time points: 15
#> avg. number of time points : 7.96
#> B-spline dimension : 14
#> penalization order : 3
#> boosting iterations : 20
#plot.results
plot(boost.grow)
#> Plot saved to: /tmp/RtmpMZ9NLM/boostmtree_plot.pdf
##------------------------------------------------------------
## synthetic example (Response y is binary)
## 0.8 correlation, quadratic time with quadratic interaction
##-------------------------------------------------------------
#simulate the data (use a small sample size for illustration)
dta <- simLong(n = 50, N = 5, rho =.80, model = 2, family = "Binary")$dtaL
#basic boosting call (M set to a small value for illustration)
boost.grow <- boostmtree(dta$features, dta$time, dta$id, dta$y,family = "Binary", M = 20)
#>
|
| | 0%
|
|==== | 5%
|
|======= | 10%
|
|========== | 15%
|
|============== | 20%
|
|================== | 25%
|
|===================== | 30%
|
|======================== | 35%
|
|============================ | 40%
|
|================================ | 45%
|
|=================================== | 50%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|====================================== | 55%
|
|========================================== | 60%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|============================================== | 65%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|================================================= | 70%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|==================================================== | 75%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|======================================================== | 80%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|============================================================ | 85%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|=============================================================== | 90%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|================================================================== | 95%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|======================================================================| 100%
#print results
print(boost.grow)
#> boostmtree summary
#> model : mtree-Pspline learner
#> fitting mode : grow
#> Family : Binary
#> number of K-terminal nodes : 5
#> regularization parameter : 0.05
#> sample size : 50
#> number of variables : 4
#> number of unique time points: 15
#> avg. number of time points : 8.48
#> B-spline dimension : 14
#> penalization order : 3
#> boosting iterations : 20
#plot.results
plot(boost.grow)
#> Plot saved to: /tmp/RtmpMZ9NLM/boostmtree_plot.pdf
# \donttest{
##------------------------------------------------------------
## Same synthetic example as above with continuous response
## but with in-sample cross-validation estimate for RMSE
##-------------------------------------------------------------
dta <- simLong(n = 50, N = 5, rho =.80, model = 2,family = "Continuous")$dtaL
boost.cv.grow <- boostmtree(dta$features, dta$time, dta$id, dta$y,
family = "Continuous", M = 20, cv.flag = TRUE)
#>
|
| | 0%
|
|==== | 5%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|======= | 10%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|========== | 15%
|
|============== | 20%
|
|================== | 25%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|===================== | 30%
|
|======================== | 35%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|============================ | 40%
|
|================================ | 45%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|=================================== | 50%
|
|====================================== | 55%
|
|========================================== | 60%
|
|============================================== | 65%
|
|================================================= | 70%
|
|==================================================== | 75%
|
|======================================================== | 80%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|============================================================ | 85%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#>
|
|=============================================================== | 90%
|
|================================================================== | 95%
|
|======================================================================| 100%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
plot(boost.cv.grow)
#> Plot saved to: /tmp/RtmpMZ9NLM/boostmtree_plot.pdf
print(boost.cv.grow)
#> boostmtree summary
#> model : mtree-Pspline learner
#> fitting mode : grow
#> Family : Continuous
#> number of K-terminal nodes : 5
#> regularization parameter : 0.05
#> sample size : 50
#> number of variables : 4
#> number of unique time points: 15
#> avg. number of time points : 8.1
#> B-spline dimension : 14
#> penalization order : 3
#> boosting iterations : 20
#> optimized number iterations : 20
#> optimized rho : 0.2364
#> optimized phi : 4.0124
#> OOB cv RMSE : 0.7375
# }
# \donttest{
##----------------------------------------------------------------------------
## spirometry data (Response is continuous)
##----------------------------------------------------------------------------
data(spirometry, package = "hvtiBoostmtree")
#boosting call: cubic B-splines with 15 knots
spr.obj <- boostmtree(spirometry$features, spirometry$time, spirometry$id, spirometry$y,
family = "Continuous",M = 100, nu = .025, nknots = 15)
#>
|
| | 0%
|
|= | 1%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|= | 2%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|== | 3%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=== | 4%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|==== | 5%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|==== | 6%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|===== | 7%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|====== | 8%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|====== | 9%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|======= | 10%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|======== | 11%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|======== | 12%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|========= | 13%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|========== | 14%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|========== | 15%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=========== | 16%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============ | 17%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============= | 18%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============= | 19%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============== | 20%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=============== | 21%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=============== | 22%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================ | 23%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================= | 24%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================== | 25%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================== | 26%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=================== | 27%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|==================== | 28%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|==================== | 29%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|===================== | 30%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|====================== | 31%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|====================== | 32%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|======================= | 33%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|======================== | 34%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|======================== | 35%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|========================= | 36%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|========================== | 37%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=========================== | 38%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=========================== | 39%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============================ | 40%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============================= | 41%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============================= | 42%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============================== | 43%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=============================== | 44%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================ | 45%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================ | 46%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================= | 47%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================== | 48%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================== | 49%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=================================== | 50%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|==================================== | 51%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|==================================== | 52%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|===================================== | 53%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|====================================== | 54%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|====================================== | 55%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|======================================= | 56%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|======================================== | 57%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|========================================= | 58%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|========================================= | 59%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|========================================== | 60%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=========================================== | 61%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=========================================== | 62%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============================================ | 63%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============================================= | 64%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============================================== | 65%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============================================== | 66%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=============================================== | 67%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================================ | 68%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================================ | 69%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================================= | 70%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================================== | 71%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================================== | 72%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=================================================== | 73%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|==================================================== | 74%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|==================================================== | 75%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|===================================================== | 76%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|====================================================== | 77%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|======================================================= | 78%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|======================================================= | 79%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|======================================================== | 80%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|========================================================= | 81%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|========================================================= | 82%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|========================================================== | 83%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=========================================================== | 84%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============================================================ | 85%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============================================================ | 86%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============================================================= | 87%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============================================================== | 88%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|============================================================== | 89%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=============================================================== | 90%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================================================ | 91%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================================================ | 92%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================================================= | 93%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================================================== | 94%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|================================================================== | 95%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|=================================================================== | 96%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|==================================================================== | 97%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|===================================================================== | 98%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|===================================================================== | 99%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
#>
|
|======================================================================| 100%
#> gls (full model) failed: computed "gls" fit is singular, rank 25
plot(spr.obj)
#> Plot saved to: /tmp/RtmpMZ9NLM/boostmtree_plot.pdf
##----------------------------------------------------------------------------
## Atrial Fibrillation data (Response is binary)
##----------------------------------------------------------------------------
data(AF, package = "hvtiBoostmtree")
#boosting call: cubic B-splines with 15 knots
AF.obj <- boostmtree(AF$feature, AF$time, AF$id, AF$y,
family = "Binary",M = 100, nu = .025, nknots = 15)
#>
|
| | 0%
|
|= | 1%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|= | 2%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|== | 3%
#> gls (full model) failed: missing values in object
#>
|
|=== | 4%
#> gls (full model) failed: missing values in object
#>
|
|==== | 5%
#> gls (full model) failed: missing values in object
#>
|
|==== | 6%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|===== | 7%
#> gls (full model) failed: missing values in object
#>
|
|====== | 8%
#> gls (full model) failed: missing values in object
#>
|
|====== | 9%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|======= | 10%
#> gls (full model) failed: missing values in object
#>
|
|======== | 11%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|======== | 12%
#> gls (full model) failed: missing values in object
#>
|
|========= | 13%
#> gls (full model) failed: missing values in object
#>
|
|========== | 14%
#> gls (full model) failed: missing values in object
#>
|
|========== | 15%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|=========== | 16%
#> gls (full model) failed: missing values in object
#>
|
|============ | 17%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|============= | 18%
#> gls (full model) failed: missing values in object
#>
|
|============= | 19%
#> gls (full model) failed: missing values in object
#>
|
|============== | 20%
#> gls (full model) failed: missing values in object
#>
|
|=============== | 21%
#> gls (full model) failed: missing values in object
#>
|
|=============== | 22%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|================ | 23%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|================= | 24%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|================== | 25%
#> gls (full model) failed: missing values in object
#>
|
|================== | 26%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|=================== | 27%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|==================== | 28%
#> gls (full model) failed: missing values in object
#>
|
|==================== | 29%
#> gls (full model) failed: missing values in object
#>
|
|===================== | 30%
#> gls (full model) failed: missing values in object
#>
|
|====================== | 31%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|====================== | 32%
#> gls (full model) failed: missing values in object
#>
|
|======================= | 33%
#> gls (full model) failed: missing values in object
#>
|
|======================== | 34%
#> gls (full model) failed: missing values in object
#>
|
|======================== | 35%
#> gls (full model) failed: missing values in object
#>
|
|========================= | 36%
#> gls (full model) failed: missing values in object
#>
|
|========================== | 37%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|=========================== | 38%
#> gls (full model) failed: missing values in object
#>
|
|=========================== | 39%
#> gls (full model) failed: missing values in object
#>
|
|============================ | 40%
#> gls (full model) failed: missing values in object
#>
|
|============================= | 41%
#> gls (full model) failed: missing values in object
#>
|
|============================= | 42%
#> gls (full model) failed: missing values in object
#>
|
|============================== | 43%
#> gls (full model) failed: missing values in object
#>
|
|=============================== | 44%
#> gls (full model) failed: missing values in object
#>
|
|================================ | 45%
#> gls (full model) failed: missing values in object
#>
|
|================================ | 46%
#> gls (full model) failed: missing values in object
#>
|
|================================= | 47%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|================================== | 48%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|================================== | 49%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|=================================== | 50%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|==================================== | 51%
#> gls (full model) failed: missing values in object
#>
|
|==================================== | 52%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|===================================== | 53%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|====================================== | 54%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|====================================== | 55%
#> gls (full model) failed: missing values in object
#>
|
|======================================= | 56%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|======================================== | 57%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|========================================= | 58%
#> gls (full model) failed: missing values in object
#>
|
|========================================= | 59%
#> gls (full model) failed: missing values in object
#>
|
|========================================== | 60%
#> gls (full model) failed: missing values in object
#>
|
|=========================================== | 61%
#> gls (full model) failed: missing values in object
#>
|
|=========================================== | 62%
#> gls (full model) failed: missing values in object
#>
|
|============================================ | 63%
#> gls (full model) failed: missing values in object
#>
|
|============================================= | 64%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|============================================== | 65%
#> gls (full model) failed: missing values in object
#>
|
|============================================== | 66%
#> gls (full model) failed: missing values in object
#>
|
|=============================================== | 67%
#> gls (full model) failed: missing values in object
#>
|
|================================================ | 68%
#> gls (full model) failed: missing values in object
#>
|
|================================================ | 69%
#> gls (full model) failed: missing values in object
#>
|
|================================================= | 70%
#> gls (full model) failed: missing values in object
#>
|
|================================================== | 71%
#> gls (full model) failed: missing values in object
#>
|
|================================================== | 72%
#> gls (full model) failed: missing values in object
#>
|
|=================================================== | 73%
#> gls (full model) failed: missing values in object
#>
|
|==================================================== | 74%
#> gls (full model) failed: missing values in object
#>
|
|==================================================== | 75%
#> gls (full model) failed: missing values in object
#>
|
|===================================================== | 76%
#> gls (full model) failed: missing values in object
#>
|
|====================================================== | 77%
#> gls (full model) failed: missing values in object
#>
|
|======================================================= | 78%
#> gls (full model) failed: missing values in object
#>
|
|======================================================= | 79%
#> gls (full model) failed: missing values in object
#>
|
|======================================================== | 80%
#> gls (full model) failed: missing values in object
#>
|
|========================================================= | 81%
#> gls (full model) failed: missing values in object
#>
|
|========================================================= | 82%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|========================================================== | 83%
#> gls (full model) failed: missing values in object
#>
|
|=========================================================== | 84%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|============================================================ | 85%
#> gls (full model) failed: missing values in object
#>
|
|============================================================ | 86%
#> gls (full model) failed: missing values in object
#>
|
|============================================================= | 87%
#> gls (full model) failed: missing values in object
#>
|
|============================================================== | 88%
#> gls (full model) failed: missing values in object
#>
|
|============================================================== | 89%
#> gls (full model) failed: missing values in object
#>
|
|=============================================================== | 90%
#> gls (full model) failed: missing values in object
#>
|
|================================================================ | 91%
#> gls (full model) failed: missing values in object
#>
|
|================================================================ | 92%
#> gls (full model) failed: missing values in object
#>
|
|================================================================= | 93%
#> gls (full model) failed: missing values in object
#>
|
|================================================================== | 94%
#> gls (full model) failed: missing values in object
#>
|
|================================================================== | 95%
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> qr.solve failed (Hessian NR): singular matrix 'a' in solve
#> gls (full model) failed: missing values in object
#>
|
|=================================================================== | 96%
#> gls (full model) failed: missing values in object
#>
|
|==================================================================== | 97%
#> gls (full model) failed: missing values in object
#>
|
|===================================================================== | 98%
#> gls (full model) failed: missing values in object
#>
|
|===================================================================== | 99%
#> gls (full model) failed: missing values in object
#>
|
|======================================================================| 100%
#> gls (full model) failed: missing values in object
plot(AF.obj)
#> Plot saved to: /tmp/RtmpMZ9NLM/boostmtree_plot.pdf
##----------------------------------------------------------------------------
## sneaky way to use boostmtree for (univariate) regression: boston housing
##----------------------------------------------------------------------------
if (library("mlbench", logical.return = TRUE)) {
## assemble the data
data(BostonHousing)
x <- BostonHousing; x$medv <- NULL
y <- BostonHousing$medv
trn <- sample(1:nrow(x), size = nrow(x) * (2 / 3), replace = FALSE)
## run boosting in univariate mode
o <- boostmtree(x = x[trn,], y = y[trn], M = 20, family = "Continuous")
o.p <- predict(o, x = x[-trn, ], y = y[-trn])
print(o)
plot(o.p)
## run boosting in univariate mode to obtain RMSE and vimp
o.cv <- boostmtree(x = x, y = y, M = 20, family = "Continuous", cv.flag = TRUE)
print(o.cv)
plot(o.cv)
}
#>
|
| | 0%
|
|==== | 5%
|
|======= | 10%
|
|========== | 15%
|
|============== | 20%
|
|================== | 25%
|
|===================== | 30%
|
|======================== | 35%
|
|============================ | 40%
|
|================================ | 45%
|
|=================================== | 50%
|
|====================================== | 55%
|
|========================================== | 60%
|
|============================================== | 65%
|
|================================================= | 70%
|
|==================================================== | 75%
|
|======================================================== | 80%
|
|============================================================ | 85%
|
|=============================================================== | 90%
|
|================================================================== | 95%
|
|======================================================================| 100%
#> boostmtree summary
#> model : tree learner
#> fitting mode : grow
#> Family : Continuous
#> number of K-terminal nodes : 5
#> regularization parameter : 0.05
#> sample size : 337
#> number of variables : 13
#> univariate family : TRUE
#> boosting iterations : 20
#> Plot saved to: /tmp/RtmpMZ9NLM/boostmtree_plot.pdf
#>
|
| | 0%
|
|==== | 5%
|
|======= | 10%
|
|========== | 15%
|
|============== | 20%
|
|================== | 25%
|
|===================== | 30%
|
|======================== | 35%
|
|============================ | 40%
|
|================================ | 45%
|
|=================================== | 50%
|
|====================================== | 55%
|
|========================================== | 60%
|
|============================================== | 65%
|
|================================================= | 70%
|
|==================================================== | 75%
|
|======================================================== | 80%
|
|============================================================ | 85%
|
|=============================================================== | 90%
|
|================================================================== | 95%
|
|======================================================================| 100%
#> boostmtree summary
#> model : tree learner
#> fitting mode : grow
#> Family : Continuous
#> number of K-terminal nodes : 5
#> regularization parameter : 0.05
#> sample size : 506
#> number of variables : 13
#> univariate family : TRUE
#> boosting iterations : 20
#> optimized number iterations : 20
#> OOB cv RMSE : 0.8209
#> Plot saved to: /tmp/RtmpMZ9NLM/boostmtree_plot.pdf
# }