rename arguments to be dot-seperated
This commit is contained in:
parent
8d3a7e1688
commit
733d23aef8
@ -54,12 +54,11 @@
|
|||||||
#' @param folds \code{list} provides a possibility of using a list of pre-defined CV folds (each element must be a vector of fold's indices).
|
#' @param folds \code{list} provides a possibility of using a list of pre-defined CV folds (each element must be a vector of fold's indices).
|
||||||
#' If folds are supplied, the nfold and stratified parameters would be ignored.
|
#' If folds are supplied, the nfold and stratified parameters would be ignored.
|
||||||
#' @param verbose \code{boolean}, print the statistics during the process
|
#' @param verbose \code{boolean}, print the statistics during the process
|
||||||
#' @param printEveryN Print every N progress messages when \code{verbose>0}. Default is 1 which means all messages are printed.
|
#' @param print.every.n Print every N progress messages when \code{verbose>0}. Default is 1 which means all messages are printed.
|
||||||
#' @param early_stop_round If \code{NULL}, the early stopping function is not triggered.
|
#' @param early.stop.round If \code{NULL}, the early stopping function is not triggered.
|
||||||
#' If set to an integer \code{k}, training with a validation set will stop if the performance
|
#' If set to an integer \code{k}, training with a validation set will stop if the performance
|
||||||
#' keeps getting worse consecutively for \code{k} rounds.
|
#' keeps getting worse consecutively for \code{k} rounds.
|
||||||
#' @param early.stop.round An alternative of \code{early_stop_round}.
|
#' @param maximize If \code{feval} and \code{early.stop.round} are set, then \code{maximize} must be set as well.
|
||||||
#' @param maximize If \code{feval} and \code{early_stop_round} are set, then \code{maximize} must be set as well.
|
|
||||||
#' \code{maximize=TRUE} means the larger the evaluation score the better.
|
#' \code{maximize=TRUE} means the larger the evaluation score the better.
|
||||||
#'
|
#'
|
||||||
#' @param ... other parameters to pass to \code{params}.
|
#' @param ... other parameters to pass to \code{params}.
|
||||||
@ -94,8 +93,8 @@
|
|||||||
#'
|
#'
|
||||||
xgb.cv <- function(params=list(), data, nrounds, nfold, label = NULL, missing = NULL,
|
xgb.cv <- function(params=list(), data, nrounds, nfold, label = NULL, missing = NULL,
|
||||||
prediction = FALSE, showsd = TRUE, metrics=list(),
|
prediction = FALSE, showsd = TRUE, metrics=list(),
|
||||||
obj = NULL, feval = NULL, stratified = TRUE, folds = NULL, verbose = T, printEveryN=1L,
|
obj = NULL, feval = NULL, stratified = TRUE, folds = NULL, verbose = T, print.every.n=1L,
|
||||||
early_stop_round = NULL, early.stop.round = NULL, maximize = NULL, ...) {
|
early.stop.round = NULL, maximize = NULL, ...) {
|
||||||
if (typeof(params) != "list") {
|
if (typeof(params) != "list") {
|
||||||
stop("xgb.cv: first argument params must be list")
|
stop("xgb.cv: first argument params must be list")
|
||||||
}
|
}
|
||||||
@ -136,9 +135,7 @@ xgb.cv <- function(params=list(), data, nrounds, nfold, label = NULL, missing =
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Early Stopping
|
# Early Stopping
|
||||||
if (is.null(early_stop_round) && !is.null(early.stop.round))
|
if (!is.null(early.stop.round)){
|
||||||
early_stop_round = early.stop.round
|
|
||||||
if (!is.null(early_stop_round)){
|
|
||||||
if (!is.null(feval) && is.null(maximize))
|
if (!is.null(feval) && is.null(maximize))
|
||||||
stop('Please set maximize to note whether the model is maximizing the evaluation or not.')
|
stop('Please set maximize to note whether the model is maximizing the evaluation or not.')
|
||||||
if (is.null(maximize) && is.null(params$eval_metric))
|
if (is.null(maximize) && is.null(params$eval_metric))
|
||||||
@ -178,7 +175,7 @@ xgb.cv <- function(params=list(), data, nrounds, nfold, label = NULL, missing =
|
|||||||
else
|
else
|
||||||
predictValues <- rep(0,xgb.numrow(dtrain))
|
predictValues <- rep(0,xgb.numrow(dtrain))
|
||||||
history <- c()
|
history <- c()
|
||||||
printEveryN = max(as.integer(printEveryN), 1L)
|
print.every.n = max(as.integer(print.every.n), 1L)
|
||||||
for (i in 1:nrounds) {
|
for (i in 1:nrounds) {
|
||||||
msg <- list()
|
msg <- list()
|
||||||
for (k in 1:nfold) {
|
for (k in 1:nfold) {
|
||||||
@ -204,11 +201,11 @@ xgb.cv <- function(params=list(), data, nrounds, nfold, label = NULL, missing =
|
|||||||
ret <- xgb.cv.aggcv(msg, showsd)
|
ret <- xgb.cv.aggcv(msg, showsd)
|
||||||
history <- c(history, ret)
|
history <- c(history, ret)
|
||||||
if(verbose)
|
if(verbose)
|
||||||
if (0==(i-1L)%%printEveryN)
|
if (0==(i-1L)%%print.every.n)
|
||||||
cat(ret, "\n", sep="")
|
cat(ret, "\n", sep="")
|
||||||
|
|
||||||
# early_Stopping
|
# early_Stopping
|
||||||
if (!is.null(early_stop_round)){
|
if (!is.null(early.stop.round)){
|
||||||
score = strsplit(ret,'\\s+')[[1]][1+length(metrics)+1]
|
score = strsplit(ret,'\\s+')[[1]][1+length(metrics)+1]
|
||||||
score = strsplit(score,'\\+|:')[[1]][[2]]
|
score = strsplit(score,'\\+|:')[[1]][[2]]
|
||||||
score = as.numeric(score)
|
score = as.numeric(score)
|
||||||
@ -216,7 +213,7 @@ xgb.cv <- function(params=list(), data, nrounds, nfold, label = NULL, missing =
|
|||||||
bestScore = score
|
bestScore = score
|
||||||
bestInd = i
|
bestInd = i
|
||||||
} else {
|
} else {
|
||||||
if (i-bestInd>=early_stop_round) {
|
if (i-bestInd>=early.stop.round) {
|
||||||
earlyStopflag = TRUE
|
earlyStopflag = TRUE
|
||||||
cat('Stopping. Best iteration:',bestInd)
|
cat('Stopping. Best iteration:',bestInd)
|
||||||
break
|
break
|
||||||
|
|||||||
@ -66,12 +66,11 @@
|
|||||||
#' prediction and dtrain,
|
#' prediction and dtrain,
|
||||||
#' @param verbose If 0, xgboost will stay silent. If 1, xgboost will print
|
#' @param verbose If 0, xgboost will stay silent. If 1, xgboost will print
|
||||||
#' information of performance. If 2, xgboost will print information of both
|
#' information of performance. If 2, xgboost will print information of both
|
||||||
#' @param printEveryN Print every N progress messages when \code{verbose>0}. Default is 1 which means all messages are printed.
|
#' @param print.every.n Print every N progress messages when \code{verbose>0}. Default is 1 which means all messages are printed.
|
||||||
#' @param early_stop_round If \code{NULL}, the early stopping function is not triggered.
|
#' @param early.stop.round If \code{NULL}, the early stopping function is not triggered.
|
||||||
#' If set to an integer \code{k}, training with a validation set will stop if the performance
|
#' If set to an integer \code{k}, training with a validation set will stop if the performance
|
||||||
#' keeps getting worse consecutively for \code{k} rounds.
|
#' keeps getting worse consecutively for \code{k} rounds.
|
||||||
#' @param early.stop.round An alternative of \code{early_stop_round}.
|
#' @param maximize If \code{feval} and \code{early.stop.round} are set, then \code{maximize} must be set as well.
|
||||||
#' @param maximize If \code{feval} and \code{early_stop_round} are set, then \code{maximize} must be set as well.
|
|
||||||
#' \code{maximize=TRUE} means the larger the evaluation score the better.
|
#' \code{maximize=TRUE} means the larger the evaluation score the better.
|
||||||
#' @param ... other parameters to pass to \code{params}.
|
#' @param ... other parameters to pass to \code{params}.
|
||||||
#'
|
#'
|
||||||
@ -120,9 +119,8 @@
|
|||||||
#' @export
|
#' @export
|
||||||
#'
|
#'
|
||||||
xgb.train <- function(params=list(), data, nrounds, watchlist = list(),
|
xgb.train <- function(params=list(), data, nrounds, watchlist = list(),
|
||||||
obj = NULL, feval = NULL, verbose = 1, printEveryN=1L,
|
obj = NULL, feval = NULL, verbose = 1, print.every.n=1L,
|
||||||
early_stop_round = NULL, early.stop.round = NULL,
|
early.stop.round = NULL, maximize = NULL, ...) {
|
||||||
maximize = NULL, ...) {
|
|
||||||
dtrain <- data
|
dtrain <- data
|
||||||
if (typeof(params) != "list") {
|
if (typeof(params) != "list") {
|
||||||
stop("xgb.train: first argument params must be list")
|
stop("xgb.train: first argument params must be list")
|
||||||
@ -157,9 +155,7 @@ xgb.train <- function(params=list(), data, nrounds, watchlist = list(),
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Early stopping
|
# Early stopping
|
||||||
if (is.null(early_stop_round) && !is.null(early.stop.round))
|
if (!is.null(early.stop.round)){
|
||||||
early_stop_round = early.stop.round
|
|
||||||
if (!is.null(early_stop_round)){
|
|
||||||
if (!is.null(feval) && is.null(maximize))
|
if (!is.null(feval) && is.null(maximize))
|
||||||
stop('Please set maximize to note whether the model is maximizing the evaluation or not.')
|
stop('Please set maximize to note whether the model is maximizing the evaluation or not.')
|
||||||
if (length(watchlist) == 0)
|
if (length(watchlist) == 0)
|
||||||
@ -190,14 +186,14 @@ xgb.train <- function(params=list(), data, nrounds, watchlist = list(),
|
|||||||
|
|
||||||
handle <- xgb.Booster(params, append(watchlist, dtrain))
|
handle <- xgb.Booster(params, append(watchlist, dtrain))
|
||||||
bst <- xgb.handleToBooster(handle)
|
bst <- xgb.handleToBooster(handle)
|
||||||
printEveryN=max( as.integer(printEveryN), 1L)
|
print.every.n=max( as.integer(print.every.n), 1L)
|
||||||
for (i in 1:nrounds) {
|
for (i in 1:nrounds) {
|
||||||
succ <- xgb.iter.update(bst$handle, dtrain, i - 1, obj)
|
succ <- xgb.iter.update(bst$handle, dtrain, i - 1, obj)
|
||||||
if (length(watchlist) != 0) {
|
if (length(watchlist) != 0) {
|
||||||
msg <- xgb.iter.eval(bst$handle, watchlist, i - 1, feval)
|
msg <- xgb.iter.eval(bst$handle, watchlist, i - 1, feval)
|
||||||
if (0== ( (i-1) %% printEveryN))
|
if (0== ( (i-1) %% print.every.n))
|
||||||
cat(paste(msg, "\n", sep=""))
|
cat(paste(msg, "\n", sep=""))
|
||||||
if (!is.null(early_stop_round))
|
if (!is.null(early.stop.round))
|
||||||
{
|
{
|
||||||
score = strsplit(msg,':|\\s+')[[1]][3]
|
score = strsplit(msg,':|\\s+')[[1]][3]
|
||||||
score = as.numeric(score)
|
score = as.numeric(score)
|
||||||
@ -205,7 +201,7 @@ xgb.train <- function(params=list(), data, nrounds, watchlist = list(),
|
|||||||
bestScore = score
|
bestScore = score
|
||||||
bestInd = i
|
bestInd = i
|
||||||
} else {
|
} else {
|
||||||
if (i-bestInd>=early_stop_round) {
|
if (i-bestInd>=early.stop.round) {
|
||||||
earlyStopflag = TRUE
|
earlyStopflag = TRUE
|
||||||
cat('Stopping. Best iteration:',bestInd)
|
cat('Stopping. Best iteration:',bestInd)
|
||||||
break
|
break
|
||||||
@ -215,7 +211,7 @@ xgb.train <- function(params=list(), data, nrounds, watchlist = list(),
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
bst <- xgb.Booster.check(bst)
|
bst <- xgb.Booster.check(bst)
|
||||||
if (!is.null(early_stop_round)) {
|
if (!is.null(early.stop.round)) {
|
||||||
bst$bestScore = bestScore
|
bst$bestScore = bestScore
|
||||||
bst$bestInd = bestInd
|
bst$bestInd = bestInd
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,14 +28,13 @@
|
|||||||
#' @param verbose If 0, xgboost will stay silent. If 1, xgboost will print
|
#' @param verbose If 0, xgboost will stay silent. If 1, xgboost will print
|
||||||
#' information of performance. If 2, xgboost will print information of both
|
#' information of performance. If 2, xgboost will print information of both
|
||||||
#' performance and construction progress information
|
#' performance and construction progress information
|
||||||
#' @param printEveryN Print every N progress messages when \code{verbose>0}. Default is 1 which means all messages are printed.
|
#' @param print.every.n Print every N progress messages when \code{verbose>0}. Default is 1 which means all messages are printed.
|
||||||
#' @param missing Missing is only used when input is dense matrix, pick a float
|
#' @param missing Missing is only used when input is dense matrix, pick a float
|
||||||
#' value that represents missing value. Sometimes a data use 0 or other extreme value to represents missing values.
|
#' value that represents missing value. Sometimes a data use 0 or other extreme value to represents missing values.
|
||||||
#' @param early_stop_round If \code{NULL}, the early stopping function is not triggered.
|
#' @param early.stop.round If \code{NULL}, the early stopping function is not triggered.
|
||||||
#' If set to an integer \code{k}, training with a validation set will stop if the performance
|
#' If set to an integer \code{k}, training with a validation set will stop if the performance
|
||||||
#' keeps getting worse consecutively for \code{k} rounds.
|
#' keeps getting worse consecutively for \code{k} rounds.
|
||||||
#' @param early.stop.round An alternative of \code{early_stop_round}.
|
#' @param maximize If \code{feval} and \code{early.stop.round} are set, then \code{maximize} must be set as well.
|
||||||
#' @param maximize If \code{feval} and \code{early_stop_round} are set, then \code{maximize} must be set as well.
|
|
||||||
#' \code{maximize=TRUE} means the larger the evaluation score the better.
|
#' \code{maximize=TRUE} means the larger the evaluation score the better.
|
||||||
#' @param ... other parameters to pass to \code{params}.
|
#' @param ... other parameters to pass to \code{params}.
|
||||||
#'
|
#'
|
||||||
@ -58,7 +57,7 @@
|
|||||||
#' @export
|
#' @export
|
||||||
#'
|
#'
|
||||||
xgboost <- function(data = NULL, label = NULL, missing = NULL, params = list(), nrounds,
|
xgboost <- function(data = NULL, label = NULL, missing = NULL, params = list(), nrounds,
|
||||||
verbose = 1, printEveryN=1L, early_stop_round = NULL, early.stop.round = NULL,
|
verbose = 1, print.every.n = 1L, early.stop.round = NULL,
|
||||||
maximize = NULL, ...) {
|
maximize = NULL, ...) {
|
||||||
if (is.null(missing)) {
|
if (is.null(missing)) {
|
||||||
dtrain <- xgb.get.DMatrix(data, label)
|
dtrain <- xgb.get.DMatrix(data, label)
|
||||||
@ -74,8 +73,7 @@ xgboost <- function(data = NULL, label = NULL, missing = NULL, params = list(),
|
|||||||
watchlist <- list()
|
watchlist <- list()
|
||||||
}
|
}
|
||||||
|
|
||||||
bst <- xgb.train(params, dtrain, nrounds, watchlist, verbose = verbose, printEveryN=printEveryN,
|
bst <- xgb.train(params, dtrain, nrounds, watchlist, verbose = verbose, print.every.n=print.every.n,
|
||||||
early_stop_round = early_stop_round,
|
|
||||||
early.stop.round = early.stop.round)
|
early.stop.round = early.stop.round)
|
||||||
|
|
||||||
return(bst)
|
return(bst)
|
||||||
|
|||||||
@ -7,8 +7,8 @@
|
|||||||
xgb.cv(params = list(), data, nrounds, nfold, label = NULL,
|
xgb.cv(params = list(), data, nrounds, nfold, label = NULL,
|
||||||
missing = NULL, prediction = FALSE, showsd = TRUE, metrics = list(),
|
missing = NULL, prediction = FALSE, showsd = TRUE, metrics = list(),
|
||||||
obj = NULL, feval = NULL, stratified = TRUE, folds = NULL,
|
obj = NULL, feval = NULL, stratified = TRUE, folds = NULL,
|
||||||
verbose = T, printEveryN = 1L, early_stop_round = NULL,
|
verbose = T, print.every.n = 1L, early.stop.round = NULL,
|
||||||
early.stop.round = NULL, maximize = NULL, ...)
|
maximize = NULL, ...)
|
||||||
}
|
}
|
||||||
\arguments{
|
\arguments{
|
||||||
\item{params}{the list of parameters. Commonly used ones are:
|
\item{params}{the list of parameters. Commonly used ones are:
|
||||||
@ -66,15 +66,13 @@ If folds are supplied, the nfold and stratified parameters would be ignored.}
|
|||||||
|
|
||||||
\item{verbose}{\code{boolean}, print the statistics during the process}
|
\item{verbose}{\code{boolean}, print the statistics during the process}
|
||||||
|
|
||||||
\item{printEveryN}{Print every N progress messages when \code{verbose>0}. Default is 1 which means all messages are printed.}
|
\item{print.every.n}{Print every N progress messages when \code{verbose>0}. Default is 1 which means all messages are printed.}
|
||||||
|
|
||||||
\item{early_stop_round}{If \code{NULL}, the early stopping function is not triggered.
|
\item{early.stop.round}{If \code{NULL}, the early stopping function is not triggered.
|
||||||
If set to an integer \code{k}, training with a validation set will stop if the performance
|
If set to an integer \code{k}, training with a validation set will stop if the performance
|
||||||
keeps getting worse consecutively for \code{k} rounds.}
|
keeps getting worse consecutively for \code{k} rounds.}
|
||||||
|
|
||||||
\item{early.stop.round}{An alternative of \code{early_stop_round}.}
|
\item{maximize}{If \code{feval} and \code{early.stop.round} are set, then \code{maximize} must be set as well.
|
||||||
|
|
||||||
\item{maximize}{If \code{feval} and \code{early_stop_round} are set, then \code{maximize} must be set as well.
|
|
||||||
\code{maximize=TRUE} means the larger the evaluation score the better.}
|
\code{maximize=TRUE} means the larger the evaluation score the better.}
|
||||||
|
|
||||||
\item{...}{other parameters to pass to \code{params}.}
|
\item{...}{other parameters to pass to \code{params}.}
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\title{eXtreme Gradient Boosting Training}
|
\title{eXtreme Gradient Boosting Training}
|
||||||
\usage{
|
\usage{
|
||||||
xgb.train(params = list(), data, nrounds, watchlist = list(), obj = NULL,
|
xgb.train(params = list(), data, nrounds, watchlist = list(), obj = NULL,
|
||||||
feval = NULL, verbose = 1, printEveryN = 1L, early_stop_round = NULL,
|
feval = NULL, verbose = 1, print.every.n = 1L,
|
||||||
early.stop.round = NULL, maximize = NULL, ...)
|
early.stop.round = NULL, maximize = NULL, ...)
|
||||||
}
|
}
|
||||||
\arguments{
|
\arguments{
|
||||||
@ -78,15 +78,13 @@ prediction and dtrain,}
|
|||||||
\item{verbose}{If 0, xgboost will stay silent. If 1, xgboost will print
|
\item{verbose}{If 0, xgboost will stay silent. If 1, xgboost will print
|
||||||
information of performance. If 2, xgboost will print information of both}
|
information of performance. If 2, xgboost will print information of both}
|
||||||
|
|
||||||
\item{printEveryN}{Print every N progress messages when \code{verbose>0}. Default is 1 which means all messages are printed.}
|
\item{print.every.n}{Print every N progress messages when \code{verbose>0}. Default is 1 which means all messages are printed.}
|
||||||
|
|
||||||
\item{early_stop_round}{If \code{NULL}, the early stopping function is not triggered.
|
\item{early.stop.round}{If \code{NULL}, the early stopping function is not triggered.
|
||||||
If set to an integer \code{k}, training with a validation set will stop if the performance
|
If set to an integer \code{k}, training with a validation set will stop if the performance
|
||||||
keeps getting worse consecutively for \code{k} rounds.}
|
keeps getting worse consecutively for \code{k} rounds.}
|
||||||
|
|
||||||
\item{early.stop.round}{An alternative of \code{early_stop_round}.}
|
\item{maximize}{If \code{feval} and \code{early.stop.round} are set, then \code{maximize} must be set as well.
|
||||||
|
|
||||||
\item{maximize}{If \code{feval} and \code{early_stop_round} are set, then \code{maximize} must be set as well.
|
|
||||||
\code{maximize=TRUE} means the larger the evaluation score the better.}
|
\code{maximize=TRUE} means the larger the evaluation score the better.}
|
||||||
|
|
||||||
\item{...}{other parameters to pass to \code{params}.}
|
\item{...}{other parameters to pass to \code{params}.}
|
||||||
|
|||||||
@ -5,8 +5,8 @@
|
|||||||
\title{eXtreme Gradient Boosting (Tree) library}
|
\title{eXtreme Gradient Boosting (Tree) library}
|
||||||
\usage{
|
\usage{
|
||||||
xgboost(data = NULL, label = NULL, missing = NULL, params = list(),
|
xgboost(data = NULL, label = NULL, missing = NULL, params = list(),
|
||||||
nrounds, verbose = 1, printEveryN = 1L, early_stop_round = NULL,
|
nrounds, verbose = 1, print.every.n = 1L, early.stop.round = NULL,
|
||||||
early.stop.round = NULL, maximize = NULL, ...)
|
maximize = NULL, ...)
|
||||||
}
|
}
|
||||||
\arguments{
|
\arguments{
|
||||||
\item{data}{takes \code{matrix}, \code{dgCMatrix}, local data file or
|
\item{data}{takes \code{matrix}, \code{dgCMatrix}, local data file or
|
||||||
@ -42,15 +42,13 @@ Commonly used ones are:
|
|||||||
information of performance. If 2, xgboost will print information of both
|
information of performance. If 2, xgboost will print information of both
|
||||||
performance and construction progress information}
|
performance and construction progress information}
|
||||||
|
|
||||||
\item{printEveryN}{Print every N progress messages when \code{verbose>0}. Default is 1 which means all messages are printed.}
|
\item{print.every.n}{Print every N progress messages when \code{verbose>0}. Default is 1 which means all messages are printed.}
|
||||||
|
|
||||||
\item{early_stop_round}{If \code{NULL}, the early stopping function is not triggered.
|
\item{early.stop.round}{If \code{NULL}, the early stopping function is not triggered.
|
||||||
If set to an integer \code{k}, training with a validation set will stop if the performance
|
If set to an integer \code{k}, training with a validation set will stop if the performance
|
||||||
keeps getting worse consecutively for \code{k} rounds.}
|
keeps getting worse consecutively for \code{k} rounds.}
|
||||||
|
|
||||||
\item{early.stop.round}{An alternative of \code{early_stop_round}.}
|
\item{maximize}{If \code{feval} and \code{early.stop.round} are set, then \code{maximize} must be set as well.
|
||||||
|
|
||||||
\item{maximize}{If \code{feval} and \code{early_stop_round} are set, then \code{maximize} must be set as well.
|
|
||||||
\code{maximize=TRUE} means the larger the evaluation score the better.}
|
\code{maximize=TRUE} means the larger the evaluation score the better.}
|
||||||
|
|
||||||
\item{...}{other parameters to pass to \code{params}.}
|
\item{...}{other parameters to pass to \code{params}.}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user