diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json
index c2e6fbfe..e4892deb 100644
--- a/dev/.documenter-siteinfo.json
+++ b/dev/.documenter-siteinfo.json
@@ -1 +1 @@
-{"documenter":{"julia_version":"1.6.7","generation_timestamp":"2023-10-05T04:10:29","documenter_version":"1.1.0"}}
\ No newline at end of file
+{"documenter":{"julia_version":"1.6.7","generation_timestamp":"2023-10-05T05:01:06","documenter_version":"1.1.0"}}
\ No newline at end of file
diff --git a/dev/api/index.html b/dev/api/index.html
index d83166fd..c0bce03c 100644
--- a/dev/api/index.html
+++ b/dev/api/index.html
@@ -1,5 +1,5 @@
-
dtrain: A Tables compatible training data (named tuples, DataFrame...) containing features and target variables.
Keyword arguments
target_name: name of target variable.
fnames = nothing: the names of the x_train features. If provided, should be a vector of string with length(fnames) = size(x_train, 2).
w_name = nothing: name of the variable containing weights. If nothing, common weights on one will be used.
offset_name = nothing: name of the offset variable.
deval: A Tables compatible evaluation data containing features and target variables.
metric: The evaluation metric that wil be tracked on deval. Supported metrics are:
:mse: mean-squared error. Adapted for general regression models.
:rmse: root-mean-squared error (CPU only). Adapted for general regression models.
:mae: mean absolute error. Adapted for general regression models.
:logloss: Adapted for :logistic regression models.
:mlogloss: Multi-class cross entropy. Adapted to EvoTreeClassifier classification models.
:poisson: Poisson deviance. Adapted to EvoTreeCount count models.
:gamma: Gamma deviance. Adapted to regression problem on Gamma like, positively distributed targets.
:tweedie: Tweedie deviance. Adapted to regression problem on Tweedie like, positively distributed targets with probability mass at y == 0.
:gaussian_mle: Gaussian maximum log-likelihood. Adapted to EvoTreeMLE models with loss = :gaussian_mle.
:logistic_mle: Logistic maximum log-likelihood. Adapted to EvoTreeMLE models with loss = :logistic_mle.
early_stopping_rounds::Integer: number of consecutive rounds without metric improvement after which fitting in stopped.
print_every_n: sets at which frequency logging info should be printed.
verbosity: set to 1 to print logging info during training.
return_logger::Bool = false: if set to true (default), fit_evotree return a tuple (m, logger) where logger is a dict containing various tracking information.
device="cpu": Hardware device to use for computations. Can be either "cpu" or "gpu". Following losses are not GPU supported at the moment:l1, :quantile, :logistic_mle.
dtrain: A Tables compatible training data (named tuples, DataFrame...) containing features and target variables.
Keyword arguments
target_name: name of target variable.
fnames = nothing: the names of the x_train features. If provided, should be a vector of string with length(fnames) = size(x_train, 2).
w_name = nothing: name of the variable containing weights. If nothing, common weights on one will be used.
offset_name = nothing: name of the offset variable.
deval: A Tables compatible evaluation data containing features and target variables.
metric: The evaluation metric that wil be tracked on deval. Supported metrics are:
:mse: mean-squared error. Adapted for general regression models.
:rmse: root-mean-squared error (CPU only). Adapted for general regression models.
:mae: mean absolute error. Adapted for general regression models.
:logloss: Adapted for :logistic regression models.
:mlogloss: Multi-class cross entropy. Adapted to EvoTreeClassifier classification models.
:poisson: Poisson deviance. Adapted to EvoTreeCount count models.
:gamma: Gamma deviance. Adapted to regression problem on Gamma like, positively distributed targets.
:tweedie: Tweedie deviance. Adapted to regression problem on Tweedie like, positively distributed targets with probability mass at y == 0.
:gaussian_mle: Gaussian maximum log-likelihood. Adapted to EvoTreeMLE models with loss = :gaussian_mle.
:logistic_mle: Logistic maximum log-likelihood. Adapted to EvoTreeMLE models with loss = :logistic_mle.
early_stopping_rounds::Integer: number of consecutive rounds without metric improvement after which fitting in stopped.
print_every_n: sets at which frequency logging info should be printed.
verbosity: set to 1 to print logging info during training.
return_logger::Bool = false: if set to true (default), fit_evotree return a tuple (m, logger) where logger is a dict containing various tracking information.
device="cpu": Hardware device to use for computations. Can be either "cpu" or "gpu". Following losses are not GPU supported at the moment:l1, :quantile, :logistic_mle.
x_train::Matrix: training data of size [#observations, #features].
y_train::Vector: vector of train targets of length #observations.
w_train::Vector: vector of train weights of length #observations. If nothing, a vector of ones is assumed.
offset_train::VecOrMat: offset for the training data. Should match the size of the predictions.
x_eval::Matrix: evaluation data of size [#observations, #features].
y_eval::Vector: vector of evaluation targets of length #observations.
w_eval::Vector: vector of evaluation weights of length #observations. Defaults to nothing (assumes a vector of 1s).
offset_eval::VecOrMat: evaluation data offset. Should match the size of the predictions.
metric: The evaluation metric that wil be tracked on x_eval, y_eval and optionally w_eval / offset_eval data. Supported metrics are:
:mse: mean-squared error. Adapted for general regression models.
:rmse: root-mean-squared error (CPU only). Adapted for general regression models.
:mae: mean absolute error. Adapted for general regression models.
:logloss: Adapted for :logistic regression models.
:mlogloss: Multi-class cross entropy. Adapted to EvoTreeClassifier classification models.
:poisson: Poisson deviance. Adapted to EvoTreeCount count models.
:gamma: Gamma deviance. Adapted to regression problem on Gamma like, positively distributed targets.
:tweedie: Tweedie deviance. Adapted to regression problem on Tweedie like, positively distributed targets with probability mass at y == 0.
:gaussian_mle: Gaussian maximum log-likelihood. Adapted to EvoTreeMLE models with loss = :gaussian_mle.
:logistic_mle: Logistic maximum log-likelihood. Adapted to EvoTreeMLE models with loss = :logistic_mle.
early_stopping_rounds::Integer: number of consecutive rounds without metric improvement after which fitting in stopped.
print_every_n: sets at which frequency logging info should be printed.
verbosity: set to 1 to print logging info during training.
fnames: the names of the x_train features. If provided, should be a vector of string with length(fnames) = size(x_train, 2).
return_logger::Bool = false: if set to true (default), fit_evotree return a tuple (m, logger) where logger is a dict containing various tracking information.
device="cpu": Hardware device to use for computations. Can be either "cpu" or "gpu". Following losses are not GPU supported at the moment:l1, :quantile, :logistic_mle.
Sorted normalized feature importance based on loss function gain. Feature names associated to the model are stored in model.info[:fnames] as a string Vector and can be updated at any time. Eg: model.info[:fnames] = new_fnames_vec.
x_train::Matrix: training data of size [#observations, #features].
y_train::Vector: vector of train targets of length #observations.
w_train::Vector: vector of train weights of length #observations. If nothing, a vector of ones is assumed.
offset_train::VecOrMat: offset for the training data. Should match the size of the predictions.
x_eval::Matrix: evaluation data of size [#observations, #features].
y_eval::Vector: vector of evaluation targets of length #observations.
w_eval::Vector: vector of evaluation weights of length #observations. Defaults to nothing (assumes a vector of 1s).
offset_eval::VecOrMat: evaluation data offset. Should match the size of the predictions.
metric: The evaluation metric that wil be tracked on x_eval, y_eval and optionally w_eval / offset_eval data. Supported metrics are:
:mse: mean-squared error. Adapted for general regression models.
:rmse: root-mean-squared error (CPU only). Adapted for general regression models.
:mae: mean absolute error. Adapted for general regression models.
:logloss: Adapted for :logistic regression models.
:mlogloss: Multi-class cross entropy. Adapted to EvoTreeClassifier classification models.
:poisson: Poisson deviance. Adapted to EvoTreeCount count models.
:gamma: Gamma deviance. Adapted to regression problem on Gamma like, positively distributed targets.
:tweedie: Tweedie deviance. Adapted to regression problem on Tweedie like, positively distributed targets with probability mass at y == 0.
:gaussian_mle: Gaussian maximum log-likelihood. Adapted to EvoTreeMLE models with loss = :gaussian_mle.
:logistic_mle: Logistic maximum log-likelihood. Adapted to EvoTreeMLE models with loss = :logistic_mle.
early_stopping_rounds::Integer: number of consecutive rounds without metric improvement after which fitting in stopped.
print_every_n: sets at which frequency logging info should be printed.
verbosity: set to 1 to print logging info during training.
fnames: the names of the x_train features. If provided, should be a vector of string with length(fnames) = size(x_train, 2).
return_logger::Bool = false: if set to true (default), fit_evotree return a tuple (m, logger) where logger is a dict containing various tracking information.
device="cpu": Hardware device to use for computations. Can be either "cpu" or "gpu". Following losses are not GPU supported at the moment:l1, :quantile, :logistic_mle.
Sorted normalized feature importance based on loss function gain. Feature names associated to the model are stored in model.info[:fnames] as a string Vector and can be updated at any time. Eg: model.info[:fnames] = new_fnames_vec.
A Julia implementation of boosted trees with CPU and GPU support. Efficient histogram based algorithms with support for multiple loss functions, including various regressions, multi-classification and Gaussian max likelihood.
See the examples-API section to get started using the internal API, or examples-MLJ to use within the MLJ framework.
Complete details about hyper-parameters are found in the Models section.
Then fitting can be performed using fit_evotree. 2 broad methods are supported: Matrix and Tables based inputs. Optional kwargs can be used to specify eval data on which to track eval metric and perform early stopping. Look at the docs for more details on available hyper-parameters for each of the above constructors and other options for training.
Predictions are obtained by passing features data to the model. Model acts as a functor, ie. it's a struct containing the fitted model as well as a function generating the prediction of that model for the features argument.
A Julia implementation of boosted trees with CPU and GPU support. Efficient histogram based algorithms with support for multiple loss functions, including various regressions, multi-classification and Gaussian max likelihood.
See the examples-API section to get started using the internal API, or examples-MLJ to use within the MLJ framework.
Complete details about hyper-parameters are found in the Models section.
Then fitting can be performed using fit_evotree. 2 broad methods are supported: Matrix and Tables based inputs. Optional kwargs can be used to specify eval data on which to track eval metric and perform early stopping. Look at the docs for more details on available hyper-parameters for each of the above constructors and other options for training.
Predictions are obtained by passing features data to the model. Model acts as a functor, ie. it's a struct containing the fitted model as well as a function generating the prediction of that model for the features argument.
Target variable must have its element type <:Real. Only exception is for EvoTreeClassifier for which CategoricalValue, Integer, String and Char are supported.
A model type for constructing a EvoTreeRegressor, based on EvoTrees.jl, and implementing both an internal API and the MLJ model interface.
Hyper-parameters
loss=:mse: Loss to be be minimized during training. One of:
:mse
:logloss
:gamma
:tweedie
:quantile
:l1
nrounds=10: Number of rounds. It corresponds to the number of trees that will be sequentially stacked. Must be >= 1.
eta=0.1: Learning rate. Each tree raw predictions are scaled by eta prior to be added to the stack of predictions. Must be > 0. A lower eta results in slower learning, requiring a higher nrounds but typically improves model performance.
lambda::T=0.0: L2 regularization term on weights. Must be >= 0. Higher lambda can result in a more robust model.
gamma::T=0.0: Minimum gain improvement needed to perform a node split. Higher gamma can result in a more robust model. Must be >= 0.
alpha::T=0.5: Loss specific parameter in the [0, 1] range: - :quantile: target quantile for the regression. - :l1: weighting parameters to positive vs negative residuals. - Positive residual weights = alpha - Negative residual weights = (1 - alpha)
max_depth=5: Maximum depth of a tree. Must be >= 1. A tree of depth 1 is made of a single prediction leaf. A complete tree of depth N contains 2^(N - 1) terminal leaves and 2^(N - 1) - 1 split nodes. Compute cost is proportional to 2^max_depth. Typical optimal values are in the 3 to 9 range.
min_weight=1.0: Minimum weight needed in a node to perform a split. Matches the number of observations by default or the sum of weights as provided by the weights vector. Must be > 0.
rowsample=1.0: Proportion of rows that are sampled at each iteration to build the tree. Should be in ]0, 1].
colsample=1.0: Proportion of columns / features that are sampled at each iteration to build the tree. Should be in ]0, 1].
nbins=32: Number of bins into which each feature is quantized. Buckets are defined based on quantiles, hence resulting in equal weight bins. Should be between 2 and 255.
monotone_constraints=Dict{Int, Int}(): Specify monotonic constraints using a dict where the key is the feature index and the value the applicable constraint (-1=decreasing, 0=none, 1=increasing). Only :linear, :logistic, :gamma and tweedie losses are supported at the moment.
tree_type="binary" Tree structure to be used. One of:
binary: Each node of a tree is grown independently. Tree are built depthwise until max depth is reach or if min weight or gain (see gamma) stops further node splits.
oblivious: A common splitting condition is imposed to all nodes of a given depth.
rng=123: Either an integer used as a seed to the random number generator or an actual random number generator (::Random.AbstractRNG).
Internal API
Do config = EvoTreeRegressor() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeRegressor(loss=...).
Do model = EvoTreeRegressor() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeRegressor(loss=...).
Training model
In MLJ or MLJBase, bind an instance model to data with mach = machine(model, X, y) where
X: any table of input features (eg, a DataFrame) whose columns each have one of the following element scitypes: Continuous, Count, or <:OrderedFactor; check column scitypes with schema(X)
y: is the target, which can be any AbstractVector whose element scitype is <:Continuous; check the scitype with scitype(y)
Train the machine using fit!(mach, rows=...).
Operations
predict(mach, Xnew): return predictions of the target given features Xnew having the same scitype as X above. Predictions are deterministic.
Fitted parameters
The fields of fitted_params(mach) are:
:fitresult: The GBTree object returned by EvoTrees.jl fitting algorithm.
Report
The fields of report(mach) are:
:features: The names of the features encountered in training.
A model type for constructing a EvoTreeRegressor, based on EvoTrees.jl, and implementing both an internal API and the MLJ model interface.
Hyper-parameters
loss=:mse: Loss to be be minimized during training. One of:
:mse
:logloss
:gamma
:tweedie
:quantile
:l1
nrounds=10: Number of rounds. It corresponds to the number of trees that will be sequentially stacked. Must be >= 1.
eta=0.1: Learning rate. Each tree raw predictions are scaled by eta prior to be added to the stack of predictions. Must be > 0. A lower eta results in slower learning, requiring a higher nrounds but typically improves model performance.
lambda::T=0.0: L2 regularization term on weights. Must be >= 0. Higher lambda can result in a more robust model.
gamma::T=0.0: Minimum gain improvement needed to perform a node split. Higher gamma can result in a more robust model. Must be >= 0.
alpha::T=0.5: Loss specific parameter in the [0, 1] range: - :quantile: target quantile for the regression. - :l1: weighting parameters to positive vs negative residuals. - Positive residual weights = alpha - Negative residual weights = (1 - alpha)
max_depth=5: Maximum depth of a tree. Must be >= 1. A tree of depth 1 is made of a single prediction leaf. A complete tree of depth N contains 2^(N - 1) terminal leaves and 2^(N - 1) - 1 split nodes. Compute cost is proportional to 2^max_depth. Typical optimal values are in the 3 to 9 range.
min_weight=1.0: Minimum weight needed in a node to perform a split. Matches the number of observations by default or the sum of weights as provided by the weights vector. Must be > 0.
rowsample=1.0: Proportion of rows that are sampled at each iteration to build the tree. Should be in ]0, 1].
colsample=1.0: Proportion of columns / features that are sampled at each iteration to build the tree. Should be in ]0, 1].
nbins=32: Number of bins into which each feature is quantized. Buckets are defined based on quantiles, hence resulting in equal weight bins. Should be between 2 and 255.
monotone_constraints=Dict{Int, Int}(): Specify monotonic constraints using a dict where the key is the feature index and the value the applicable constraint (-1=decreasing, 0=none, 1=increasing). Only :linear, :logistic, :gamma and tweedie losses are supported at the moment.
tree_type="binary" Tree structure to be used. One of:
binary: Each node of a tree is grown independently. Tree are built depthwise until max depth is reach or if min weight or gain (see gamma) stops further node splits.
oblivious: A common splitting condition is imposed to all nodes of a given depth.
rng=123: Either an integer used as a seed to the random number generator or an actual random number generator (::Random.AbstractRNG).
Internal API
Do config = EvoTreeRegressor() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeRegressor(loss=...).
Do model = EvoTreeRegressor() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeRegressor(loss=...).
Training model
In MLJ or MLJBase, bind an instance model to data with mach = machine(model, X, y) where
X: any table of input features (eg, a DataFrame) whose columns each have one of the following element scitypes: Continuous, Count, or <:OrderedFactor; check column scitypes with schema(X)
y: is the target, which can be any AbstractVector whose element scitype is <:Continuous; check the scitype with scitype(y)
Train the machine using fit!(mach, rows=...).
Operations
predict(mach, Xnew): return predictions of the target given features Xnew having the same scitype as X above. Predictions are deterministic.
Fitted parameters
The fields of fitted_params(mach) are:
:fitresult: The GBTree object returned by EvoTrees.jl fitting algorithm.
Report
The fields of report(mach) are:
:features: The names of the features encountered in training.
Examples
# Internal API
using EvoTrees
config = EvoTreeRegressor(max_depth=5, nbins=32, nrounds=100)
nobs, nfeats = 1_000, 5
@@ -11,7 +11,7 @@
model = EvoTreeRegressor(max_depth=5, nbins=32, nrounds=100)
X, y = @load_boston
mach = machine(model, X, y) |> fit!
-preds = predict(mach, X)
A model type for constructing a EvoTreeClassifier, based on EvoTrees.jl, and implementing both an internal API and the MLJ model interface. EvoTreeClassifier is used to perform multi-class classification, using cross-entropy loss.
Hyper-parameters
nrounds=10: Number of rounds. It corresponds to the number of trees that will be sequentially stacked. Must be >= 1.
eta=0.1: Learning rate. Each tree raw predictions are scaled by eta prior to be added to the stack of predictions. Must be > 0. A lower eta results in slower learning, requiring a higher nrounds but typically improves model performance.
lambda::T=0.0: L2 regularization term on weights. Must be >= 0. Higher lambda can result in a more robust model.
gamma::T=0.0: Minimum gain improvement needed to perform a node split. Higher gamma can result in a more robust model. Must be >= 0.
max_depth=5: Maximum depth of a tree. Must be >= 1. A tree of depth 1 is made of a single prediction leaf. A complete tree of depth N contains 2^(N - 1) terminal leaves and 2^(N - 1) - 1 split nodes. Compute cost is proportional to 2^max_depth. Typical optimal values are in the 3 to 9 range.
min_weight=1.0: Minimum weight needed in a node to perform a split. Matches the number of observations by default or the sum of weights as provided by the weights vector. Must be > 0.
rowsample=1.0: Proportion of rows that are sampled at each iteration to build the tree. Should be in ]0, 1].
colsample=1.0: Proportion of columns / features that are sampled at each iteration to build the tree. Should be in ]0, 1].
nbins=32: Number of bins into which each feature is quantized. Buckets are defined based on quantiles, hence resulting in equal weight bins. Should be between 2 and 255.
tree_type="binary" Tree structure to be used. One of:
binary: Each node of a tree is grown independently. Tree are built depthwise until max depth is reach or if min weight or gain (see gamma) stops further node splits.
oblivious: A common splitting condition is imposed to all nodes of a given depth.
rng=123: Either an integer used as a seed to the random number generator or an actual random number generator (::Random.AbstractRNG).
Internal API
Do config = EvoTreeClassifier() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeClassifier(max_depth=...).
Do model = EvoTreeClassifier() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeClassifier(loss=...).
Training data
In MLJ or MLJBase, bind an instance model to data with
mach = machine(model, X, y)
where
X: any table of input features (eg, a DataFrame) whose columns each have one of the following element scitypes: Continuous, Count, or <:OrderedFactor; check column scitypes with schema(X)
y: is the target, which can be any AbstractVector whose element scitype is <:Multiclas or <:OrderedFactor; check the scitype with scitype(y)
Train the machine using fit!(mach, rows=...).
Operations
predict(mach, Xnew): return predictions of the target given features Xnew having the same scitype as X above. Predictions are probabilistic.
predict_mode(mach, Xnew): returns the mode of each of the prediction above.
Fitted parameters
The fields of fitted_params(mach) are:
:fitresult: The GBTree object returned by EvoTrees.jl fitting algorithm.
Report
The fields of report(mach) are:
:features: The names of the features encountered in training.
A model type for constructing a EvoTreeClassifier, based on EvoTrees.jl, and implementing both an internal API and the MLJ model interface. EvoTreeClassifier is used to perform multi-class classification, using cross-entropy loss.
Hyper-parameters
nrounds=10: Number of rounds. It corresponds to the number of trees that will be sequentially stacked. Must be >= 1.
eta=0.1: Learning rate. Each tree raw predictions are scaled by eta prior to be added to the stack of predictions. Must be > 0. A lower eta results in slower learning, requiring a higher nrounds but typically improves model performance.
lambda::T=0.0: L2 regularization term on weights. Must be >= 0. Higher lambda can result in a more robust model.
gamma::T=0.0: Minimum gain improvement needed to perform a node split. Higher gamma can result in a more robust model. Must be >= 0.
max_depth=5: Maximum depth of a tree. Must be >= 1. A tree of depth 1 is made of a single prediction leaf. A complete tree of depth N contains 2^(N - 1) terminal leaves and 2^(N - 1) - 1 split nodes. Compute cost is proportional to 2^max_depth. Typical optimal values are in the 3 to 9 range.
min_weight=1.0: Minimum weight needed in a node to perform a split. Matches the number of observations by default or the sum of weights as provided by the weights vector. Must be > 0.
rowsample=1.0: Proportion of rows that are sampled at each iteration to build the tree. Should be in ]0, 1].
colsample=1.0: Proportion of columns / features that are sampled at each iteration to build the tree. Should be in ]0, 1].
nbins=32: Number of bins into which each feature is quantized. Buckets are defined based on quantiles, hence resulting in equal weight bins. Should be between 2 and 255.
tree_type="binary" Tree structure to be used. One of:
binary: Each node of a tree is grown independently. Tree are built depthwise until max depth is reach or if min weight or gain (see gamma) stops further node splits.
oblivious: A common splitting condition is imposed to all nodes of a given depth.
rng=123: Either an integer used as a seed to the random number generator or an actual random number generator (::Random.AbstractRNG).
Internal API
Do config = EvoTreeClassifier() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeClassifier(max_depth=...).
Do model = EvoTreeClassifier() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeClassifier(loss=...).
Training data
In MLJ or MLJBase, bind an instance model to data with
mach = machine(model, X, y)
where
X: any table of input features (eg, a DataFrame) whose columns each have one of the following element scitypes: Continuous, Count, or <:OrderedFactor; check column scitypes with schema(X)
y: is the target, which can be any AbstractVector whose element scitype is <:Multiclas or <:OrderedFactor; check the scitype with scitype(y)
Train the machine using fit!(mach, rows=...).
Operations
predict(mach, Xnew): return predictions of the target given features Xnew having the same scitype as X above. Predictions are probabilistic.
predict_mode(mach, Xnew): returns the mode of each of the prediction above.
Fitted parameters
The fields of fitted_params(mach) are:
:fitresult: The GBTree object returned by EvoTrees.jl fitting algorithm.
Report
The fields of report(mach) are:
:features: The names of the features encountered in training.
A model type for constructing a EvoTreeCount, based on EvoTrees.jl, and implementing both an internal API the MLJ model interface. EvoTreeCount is used to perform Poisson probabilistic regression on count target.
Hyper-parameters
nrounds=10: Number of rounds. It corresponds to the number of trees that will be sequentially stacked. Must be >= 1.
eta=0.1: Learning rate. Each tree raw predictions are scaled by eta prior to be added to the stack of predictions. Must be > 0. A lower eta results in slower learning, requiring a higher nrounds but typically improves model performance.
lambda::T=0.0: L2 regularization term on weights. Must be >= 0. Higher lambda can result in a more robust model. Must be >= 0.
gamma::T=0.0: Minimum gain imprvement needed to perform a node split. Higher gamma can result in a more robust model.
max_depth=5: Maximum depth of a tree. Must be >= 1. A tree of depth 1 is made of a single prediction leaf. A complete tree of depth N contains 2^(N - 1) terminal leaves and 2^(N - 1) - 1 split nodes. Compute cost is proportional to 2^max_depth. Typical optimal values are in the 3 to 9 range.
min_weight=1.0: Minimum weight needed in a node to perform a split. Matches the number of observations by default or the sum of weights as provided by the weights vector. Must be > 0.
rowsample=1.0: Proportion of rows that are sampled at each iteration to build the tree. Should be ]0, 1].
colsample=1.0: Proportion of columns / features that are sampled at each iteration to build the tree. Should be ]0, 1].
nbins=32: Number of bins into which each feature is quantized. Buckets are defined based on quantiles, hence resulting in equal weight bins. Should be between 2 and 255.
monotone_constraints=Dict{Int, Int}(): Specify monotonic constraints using a dict where the key is the feature index and the value the applicable constraint (-1=decreasing, 0=none, 1=increasing).
tree_type="binary" Tree structure to be used. One of:
binary: Each node of a tree is grown independently. Tree are built depthwise until max depth is reach or if min weight or gain (see gamma) stops further node splits.
oblivious: A common splitting condition is imposed to all nodes of a given depth.
rng=123: Either an integer used as a seed to the random number generator or an actual random number generator (::Random.AbstractRNG).
Internal API
Do config = EvoTreeCount() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeCount(max_depth=...).
model = fit_evotree(config; x_train, y_train, kwargs...)
Inference
Predictions are obtained using predict which returns a Matrix of size [nobs, 1]:
EvoTrees.predict(model, X)
Alternatively, models act as a functor, returning predictions when called as a function with features as argument:
model(X)
MLJ
From MLJ, the type can be imported using:
EvoTreeCount = @load EvoTreeCount pkg=EvoTrees
Do model = EvoTreeCount() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeCount(loss=...).
Training data
In MLJ or MLJBase, bind an instance model to data with mach = machine(model, X, y) where
X: any table of input features (eg, a DataFrame) whose columns each have one of the following element scitypes: Continuous, Count, or <:OrderedFactor; check column scitypes with schema(X)
y: is the target, which can be any AbstractVector whose element scitype is <:Count; check the scitype with scitype(y)
Train the machine using fit!(mach, rows=...).
Operations
predict(mach, Xnew): returns a vector of Poisson distributions given features Xnew having the same scitype as X above. Predictions are probabilistic.
Specific metrics can also be predicted using:
predict_mean(mach, Xnew)
predict_mode(mach, Xnew)
predict_median(mach, Xnew)
Fitted parameters
The fields of fitted_params(mach) are:
:fitresult: The GBTree object returned by EvoTrees.jl fitting algorithm.
Report
The fields of report(mach) are:
:features: The names of the features encountered in training.
A model type for constructing a EvoTreeCount, based on EvoTrees.jl, and implementing both an internal API the MLJ model interface. EvoTreeCount is used to perform Poisson probabilistic regression on count target.
Hyper-parameters
nrounds=10: Number of rounds. It corresponds to the number of trees that will be sequentially stacked. Must be >= 1.
eta=0.1: Learning rate. Each tree raw predictions are scaled by eta prior to be added to the stack of predictions. Must be > 0. A lower eta results in slower learning, requiring a higher nrounds but typically improves model performance.
lambda::T=0.0: L2 regularization term on weights. Must be >= 0. Higher lambda can result in a more robust model. Must be >= 0.
gamma::T=0.0: Minimum gain imprvement needed to perform a node split. Higher gamma can result in a more robust model.
max_depth=5: Maximum depth of a tree. Must be >= 1. A tree of depth 1 is made of a single prediction leaf. A complete tree of depth N contains 2^(N - 1) terminal leaves and 2^(N - 1) - 1 split nodes. Compute cost is proportional to 2^max_depth. Typical optimal values are in the 3 to 9 range.
min_weight=1.0: Minimum weight needed in a node to perform a split. Matches the number of observations by default or the sum of weights as provided by the weights vector. Must be > 0.
rowsample=1.0: Proportion of rows that are sampled at each iteration to build the tree. Should be ]0, 1].
colsample=1.0: Proportion of columns / features that are sampled at each iteration to build the tree. Should be ]0, 1].
nbins=32: Number of bins into which each feature is quantized. Buckets are defined based on quantiles, hence resulting in equal weight bins. Should be between 2 and 255.
monotone_constraints=Dict{Int, Int}(): Specify monotonic constraints using a dict where the key is the feature index and the value the applicable constraint (-1=decreasing, 0=none, 1=increasing).
tree_type="binary" Tree structure to be used. One of:
binary: Each node of a tree is grown independently. Tree are built depthwise until max depth is reach or if min weight or gain (see gamma) stops further node splits.
oblivious: A common splitting condition is imposed to all nodes of a given depth.
rng=123: Either an integer used as a seed to the random number generator or an actual random number generator (::Random.AbstractRNG).
Internal API
Do config = EvoTreeCount() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeCount(max_depth=...).
model = fit_evotree(config; x_train, y_train, kwargs...)
Inference
Predictions are obtained using predict which returns a Matrix of size [nobs, 1]:
EvoTrees.predict(model, X)
Alternatively, models act as a functor, returning predictions when called as a function with features as argument:
model(X)
MLJ
From MLJ, the type can be imported using:
EvoTreeCount = @load EvoTreeCount pkg=EvoTrees
Do model = EvoTreeCount() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeCount(loss=...).
Training data
In MLJ or MLJBase, bind an instance model to data with mach = machine(model, X, y) where
X: any table of input features (eg, a DataFrame) whose columns each have one of the following element scitypes: Continuous, Count, or <:OrderedFactor; check column scitypes with schema(X)
y: is the target, which can be any AbstractVector whose element scitype is <:Count; check the scitype with scitype(y)
Train the machine using fit!(mach, rows=...).
Operations
predict(mach, Xnew): returns a vector of Poisson distributions given features Xnew having the same scitype as X above. Predictions are probabilistic.
Specific metrics can also be predicted using:
predict_mean(mach, Xnew)
predict_mode(mach, Xnew)
predict_median(mach, Xnew)
Fitted parameters
The fields of fitted_params(mach) are:
:fitresult: The GBTree object returned by EvoTrees.jl fitting algorithm.
Report
The fields of report(mach) are:
:features: The names of the features encountered in training.
A model type for constructing a EvoTreeMLE, based on EvoTrees.jl, and implementing both an internal API the MLJ model interface. EvoTreeMLE performs maximum likelihood estimation. Assumed distribution is specified through loss kwargs. Both Gaussian and Logistic distributions are supported.
Hyper-parameters
loss=:gaussian: Loss to be be minimized during training. One of:
:gaussian / :gaussian_mle
:logistic / :logistic_mle
nrounds=10: Number of rounds. It corresponds to the number of trees that will be sequentially stacked. Must be >= 1.
eta=0.1: Learning rate. Each tree raw predictions are scaled by eta prior to be added to the stack of predictions. Must be > 0.
A lower eta results in slower learning, requiring a higher nrounds but typically improves model performance.
lambda::T=0.0: L2 regularization term on weights. Must be >= 0. Higher lambda can result in a more robust model.
gamma::T=0.0: Minimum gain imprvement needed to perform a node split. Higher gamma can result in a more robust model. Must be >= 0.
max_depth=5: Maximum depth of a tree. Must be >= 1. A tree of depth 1 is made of a single prediction leaf. A complete tree of depth N contains 2^(N - 1) terminal leaves and 2^(N - 1) - 1 split nodes. Compute cost is proportional to 2^max_depth. Typical optimal values are in the 3 to 9 range.
min_weight=8.0: Minimum weight needed in a node to perform a split. Matches the number of observations by default or the sum of weights as provided by the weights vector. Must be > 0.
rowsample=1.0: Proportion of rows that are sampled at each iteration to build the tree. Should be in ]0, 1].
colsample=1.0: Proportion of columns / features that are sampled at each iteration to build the tree. Should be in ]0, 1].
nbins=32: Number of bins into which each feature is quantized. Buckets are defined based on quantiles, hence resulting in equal weight bins. Should be between 2 and 255.
monotone_constraints=Dict{Int, Int}(): Specify monotonic constraints using a dict where the key is the feature index and the value the applicable constraint (-1=decreasing, 0=none, 1=increasing). !Experimental feature: note that for MLE regression, constraints may not be enforced systematically.
tree_type="binary" Tree structure to be used. One of:
binary: Each node of a tree is grown independently. Tree are built depthwise until max depth is reach or if min weight or gain (see gamma) stops further node splits.
oblivious: A common splitting condition is imposed to all nodes of a given depth.
rng=123: Either an integer used as a seed to the random number generator or an actual random number generator (::Random.AbstractRNG).
Internal API
Do config = EvoTreeMLE() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeMLE(max_depth=...).
model = fit_evotree(config; x_train, y_train, kwargs...)
Inference
Predictions are obtained using predict which returns a Matrix of size [nobs, nparams] where the second dimensions refer to μ & σ for Normal/Gaussian and μ & s for Logistic.
EvoTrees.predict(model, X)
Alternatively, models act as a functor, returning predictions when called as a function with features as argument:
model(X)
MLJ
From MLJ, the type can be imported using:
EvoTreeMLE = @load EvoTreeMLE pkg=EvoTrees
Do model = EvoTreeMLE() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeMLE(loss=...).
Training data
In MLJ or MLJBase, bind an instance model to data with
mach = machine(model, X, y)
where
X: any table of input features (eg, a DataFrame) whose columns each have one of the following element scitypes: Continuous, Count, or <:OrderedFactor; check column scitypes with schema(X)
y: is the target, which can be any AbstractVector whose element scitype is <:Continuous; check the scitype with scitype(y)
Train the machine using fit!(mach, rows=...).
Operations
predict(mach, Xnew): returns a vector of Gaussian or Logistic distributions (according to provided loss) given features Xnew having the same scitype as X above.
Predictions are probabilistic.
Specific metrics can also be predicted using:
predict_mean(mach, Xnew)
predict_mode(mach, Xnew)
predict_median(mach, Xnew)
Fitted parameters
The fields of fitted_params(mach) are:
:fitresult: The GBTree object returned by EvoTrees.jl fitting algorithm.
Report
The fields of report(mach) are:
:features: The names of the features encountered in training.
A model type for constructing a EvoTreeMLE, based on EvoTrees.jl, and implementing both an internal API the MLJ model interface. EvoTreeMLE performs maximum likelihood estimation. Assumed distribution is specified through loss kwargs. Both Gaussian and Logistic distributions are supported.
Hyper-parameters
loss=:gaussian: Loss to be be minimized during training. One of:
:gaussian / :gaussian_mle
:logistic / :logistic_mle
nrounds=10: Number of rounds. It corresponds to the number of trees that will be sequentially stacked. Must be >= 1.
eta=0.1: Learning rate. Each tree raw predictions are scaled by eta prior to be added to the stack of predictions. Must be > 0.
A lower eta results in slower learning, requiring a higher nrounds but typically improves model performance.
lambda::T=0.0: L2 regularization term on weights. Must be >= 0. Higher lambda can result in a more robust model.
gamma::T=0.0: Minimum gain imprvement needed to perform a node split. Higher gamma can result in a more robust model. Must be >= 0.
max_depth=5: Maximum depth of a tree. Must be >= 1. A tree of depth 1 is made of a single prediction leaf. A complete tree of depth N contains 2^(N - 1) terminal leaves and 2^(N - 1) - 1 split nodes. Compute cost is proportional to 2^max_depth. Typical optimal values are in the 3 to 9 range.
min_weight=8.0: Minimum weight needed in a node to perform a split. Matches the number of observations by default or the sum of weights as provided by the weights vector. Must be > 0.
rowsample=1.0: Proportion of rows that are sampled at each iteration to build the tree. Should be in ]0, 1].
colsample=1.0: Proportion of columns / features that are sampled at each iteration to build the tree. Should be in ]0, 1].
nbins=32: Number of bins into which each feature is quantized. Buckets are defined based on quantiles, hence resulting in equal weight bins. Should be between 2 and 255.
monotone_constraints=Dict{Int, Int}(): Specify monotonic constraints using a dict where the key is the feature index and the value the applicable constraint (-1=decreasing, 0=none, 1=increasing). !Experimental feature: note that for MLE regression, constraints may not be enforced systematically.
tree_type="binary" Tree structure to be used. One of:
binary: Each node of a tree is grown independently. Tree are built depthwise until max depth is reach or if min weight or gain (see gamma) stops further node splits.
oblivious: A common splitting condition is imposed to all nodes of a given depth.
rng=123: Either an integer used as a seed to the random number generator or an actual random number generator (::Random.AbstractRNG).
Internal API
Do config = EvoTreeMLE() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeMLE(max_depth=...).
model = fit_evotree(config; x_train, y_train, kwargs...)
Inference
Predictions are obtained using predict which returns a Matrix of size [nobs, nparams] where the second dimensions refer to μ & σ for Normal/Gaussian and μ & s for Logistic.
EvoTrees.predict(model, X)
Alternatively, models act as a functor, returning predictions when called as a function with features as argument:
model(X)
MLJ
From MLJ, the type can be imported using:
EvoTreeMLE = @load EvoTreeMLE pkg=EvoTrees
Do model = EvoTreeMLE() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeMLE(loss=...).
Training data
In MLJ or MLJBase, bind an instance model to data with
mach = machine(model, X, y)
where
X: any table of input features (eg, a DataFrame) whose columns each have one of the following element scitypes: Continuous, Count, or <:OrderedFactor; check column scitypes with schema(X)
y: is the target, which can be any AbstractVector whose element scitype is <:Continuous; check the scitype with scitype(y)
Train the machine using fit!(mach, rows=...).
Operations
predict(mach, Xnew): returns a vector of Gaussian or Logistic distributions (according to provided loss) given features Xnew having the same scitype as X above.
Predictions are probabilistic.
Specific metrics can also be predicted using:
predict_mean(mach, Xnew)
predict_mode(mach, Xnew)
predict_median(mach, Xnew)
Fitted parameters
The fields of fitted_params(mach) are:
:fitresult: The GBTree object returned by EvoTrees.jl fitting algorithm.
Report
The fields of report(mach) are:
:features: The names of the features encountered in training.
A model type for constructing a EvoTreeGaussian, based on EvoTrees.jl, and implementing both an internal API the MLJ model interface. EvoTreeGaussian is used to perform Gaussian probabilistic regression, fitting μ and σ parameters to maximize likelihood.
Hyper-parameters
nrounds=10: Number of rounds. It corresponds to the number of trees that will be sequentially stacked. Must be >= 1.
eta=0.1: Learning rate. Each tree raw predictions are scaled by eta prior to be added to the stack of predictions. Must be > 0. A lower eta results in slower learning, requiring a higher nrounds but typically improves model performance.
lambda::T=0.0: L2 regularization term on weights. Must be >= 0. Higher lambda can result in a more robust model.
gamma::T=0.0: Minimum gain imprvement needed to perform a node split. Higher gamma can result in a more robust model. Must be >= 0.
max_depth=5: Maximum depth of a tree. Must be >= 1. A tree of depth 1 is made of a single prediction leaf. A complete tree of depth N contains 2^(N - 1) terminal leaves and 2^(N - 1) - 1 split nodes. Compute cost is proportional to 2^max_depth. Typical optimal values are in the 3 to 9 range.
min_weight=8.0: Minimum weight needed in a node to perform a split. Matches the number of observations by default or the sum of weights as provided by the weights vector. Must be > 0.
rowsample=1.0: Proportion of rows that are sampled at each iteration to build the tree. Should be in ]0, 1].
colsample=1.0: Proportion of columns / features that are sampled at each iteration to build the tree. Should be in ]0, 1].
nbins=32: Number of bins into which each feature is quantized. Buckets are defined based on quantiles, hence resulting in equal weight bins. Should be between 2 and 255.
monotone_constraints=Dict{Int, Int}(): Specify monotonic constraints using a dict where the key is the feature index and the value the applicable constraint (-1=decreasing, 0=none, 1=increasing). !Experimental feature: note that for Gaussian regression, constraints may not be enforce systematically.
tree_type="binary" Tree structure to be used. One of:
binary: Each node of a tree is grown independently. Tree are built depthwise until max depth is reach or if min weight or gain (see gamma) stops further node splits.
oblivious: A common splitting condition is imposed to all nodes of a given depth.
rng=123: Either an integer used as a seed to the random number generator or an actual random number generator (::Random.AbstractRNG).
Internal API
Do config = EvoTreeGaussian() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeGaussian(max_depth=...).
Do model = EvoTreeGaussian() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeGaussian(loss=...).
Training data
In MLJ or MLJBase, bind an instance model to data with
mach = machine(model, X, y)
where
X: any table of input features (eg, a DataFrame) whose columns each have one of the following element scitypes: Continuous, Count, or <:OrderedFactor; check column scitypes with schema(X)
y: is the target, which can be any AbstractVector whose element scitype is <:Continuous; check the scitype with scitype(y)
Train the machine using fit!(mach, rows=...).
Operations
predict(mach, Xnew): returns a vector of Gaussian distributions given features Xnew having the same scitype as X above.
Predictions are probabilistic.
Specific metrics can also be predicted using:
predict_mean(mach, Xnew)
predict_mode(mach, Xnew)
predict_median(mach, Xnew)
Fitted parameters
The fields of fitted_params(mach) are:
:fitresult: The GBTree object returned by EvoTrees.jl fitting algorithm.
Report
The fields of report(mach) are:
:features: The names of the features encountered in training.
A model type for constructing a EvoTreeGaussian, based on EvoTrees.jl, and implementing both an internal API the MLJ model interface. EvoTreeGaussian is used to perform Gaussian probabilistic regression, fitting μ and σ parameters to maximize likelihood.
Hyper-parameters
nrounds=10: Number of rounds. It corresponds to the number of trees that will be sequentially stacked. Must be >= 1.
eta=0.1: Learning rate. Each tree raw predictions are scaled by eta prior to be added to the stack of predictions. Must be > 0. A lower eta results in slower learning, requiring a higher nrounds but typically improves model performance.
lambda::T=0.0: L2 regularization term on weights. Must be >= 0. Higher lambda can result in a more robust model.
gamma::T=0.0: Minimum gain imprvement needed to perform a node split. Higher gamma can result in a more robust model. Must be >= 0.
max_depth=5: Maximum depth of a tree. Must be >= 1. A tree of depth 1 is made of a single prediction leaf. A complete tree of depth N contains 2^(N - 1) terminal leaves and 2^(N - 1) - 1 split nodes. Compute cost is proportional to 2^max_depth. Typical optimal values are in the 3 to 9 range.
min_weight=8.0: Minimum weight needed in a node to perform a split. Matches the number of observations by default or the sum of weights as provided by the weights vector. Must be > 0.
rowsample=1.0: Proportion of rows that are sampled at each iteration to build the tree. Should be in ]0, 1].
colsample=1.0: Proportion of columns / features that are sampled at each iteration to build the tree. Should be in ]0, 1].
nbins=32: Number of bins into which each feature is quantized. Buckets are defined based on quantiles, hence resulting in equal weight bins. Should be between 2 and 255.
monotone_constraints=Dict{Int, Int}(): Specify monotonic constraints using a dict where the key is the feature index and the value the applicable constraint (-1=decreasing, 0=none, 1=increasing). !Experimental feature: note that for Gaussian regression, constraints may not be enforce systematically.
tree_type="binary" Tree structure to be used. One of:
binary: Each node of a tree is grown independently. Tree are built depthwise until max depth is reach or if min weight or gain (see gamma) stops further node splits.
oblivious: A common splitting condition is imposed to all nodes of a given depth.
rng=123: Either an integer used as a seed to the random number generator or an actual random number generator (::Random.AbstractRNG).
Internal API
Do config = EvoTreeGaussian() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeGaussian(max_depth=...).
Do model = EvoTreeGaussian() to construct an instance with default hyper-parameters. Provide keyword arguments to override hyper-parameter defaults, as in EvoTreeGaussian(loss=...).
Training data
In MLJ or MLJBase, bind an instance model to data with
mach = machine(model, X, y)
where
X: any table of input features (eg, a DataFrame) whose columns each have one of the following element scitypes: Continuous, Count, or <:OrderedFactor; check column scitypes with schema(X)
y: is the target, which can be any AbstractVector whose element scitype is <:Continuous; check the scitype with scitype(y)
Train the machine using fit!(mach, rows=...).
Operations
predict(mach, Xnew): returns a vector of Gaussian distributions given features Xnew having the same scitype as X above.
Predictions are probabilistic.
Specific metrics can also be predicted using:
predict_mean(mach, Xnew)
predict_mode(mach, Xnew)
predict_median(mach, Xnew)
Fitted parameters
The fields of fitted_params(mach) are:
:fitresult: The GBTree object returned by EvoTrees.jl fitting algorithm.
Report
The fields of report(mach) are:
:features: The names of the features encountered in training.
This document was generated with Documenter.jl version 1.1.0 on Thursday 5 October 2023. Using Julia version 1.6.7.
diff --git a/dev/search_index.js b/dev/search_index.js
index 7fdb47ac..04af1d9f 100644
--- a/dev/search_index.js
+++ b/dev/search_index.js
@@ -1,3 +1,3 @@
var documenterSearchIndex = {"docs":
-[{"location":"tutorials/ranking-LTRC/#Ranking-with-Yahoo!-Learning-to-Rank-Challenge.","page":"Ranking - Yahoo! LTRC","title":"Ranking with Yahoo! Learning to Rank Challenge.","text":"","category":"section"},{"location":"tutorials/ranking-LTRC/","page":"Ranking - Yahoo! LTRC","title":"Ranking - Yahoo! LTRC","text":"In this tutorial, we present how a ranking task can be tackled using regular regression techniques without compromising performance compared to specialized ranking learners. The data used is from the C14 - Yahoo! Learning to Rank Challenge, which can be obtained following a request to https://webscope.sandbox.yahoo.com.","category":"page"},{"location":"tutorials/ranking-LTRC/#Getting-started","page":"Ranking - Yahoo! LTRC","title":"Getting started","text":"","category":"section"},{"location":"tutorials/ranking-LTRC/","page":"Ranking - Yahoo! LTRC","title":"Ranking - Yahoo! LTRC","text":"To begin, we load the required packages:","category":"page"},{"location":"tutorials/ranking-LTRC/","page":"Ranking - Yahoo! LTRC","title":"Ranking - Yahoo! LTRC","text":"using EvoTrees\nusing DataFrames\nusing Statistics: mean\nusing CategoricalArrays\nusing Random","category":"page"},{"location":"tutorials/ranking-LTRC/#Load-LIBSVM-format-data","page":"Ranking - Yahoo! LTRC","title":"Load LIBSVM format data","text":"","category":"section"},{"location":"tutorials/ranking-LTRC/","page":"Ranking - Yahoo! LTRC","title":"Ranking - Yahoo! LTRC","text":"Some datasets come in the so called LIBSVM format, which stores data using a sparse representation: ","category":"page"},{"location":"tutorials/ranking-LTRC/","page":"Ranking - Yahoo! LTRC","title":"Ranking - Yahoo! LTRC","text":"