Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ Suggests:
Cubist,
curl,
dbarts,
deepnet,
deepnet (>= 0.2.1),
earth,
evtree,
ExhaustiveSearch,
Expand Down
1 change: 1 addition & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export(LearnerClassifC50)
export(LearnerClassifCForest)
export(LearnerClassifCTree)
export(LearnerClassifCatboost)
export(LearnerClassifDbnDNN)
export(LearnerClassifDecisionStump)
export(LearnerClassifDecisionTable)
export(LearnerClassifDiagLda)
Expand Down
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
- `LearnerRegrPlsr`
- `LearnerRegrLaGP`
- `LearnerClassifNNTrain`
- `LearnerClassifDbnDNN`

## Breaking Changes

Expand Down
7 changes: 7 additions & 0 deletions R/bibentries.R
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,13 @@ bibentries = c( # nolint start
year = "2018",
publisher = "BioMed Central"
),
rong2014deepnet = bibentry("manual",
title = "{deepnet}: Deep Learning Toolkit in R",
author = "Xiao Rong",
year = "2014",
note = "R package version 0.2.1",
url = "https://CRAN.R-project.org/package=deepnet"
),
zhao2019dnnsurv = bibentry("article",
title = "Dnnsurv: Deep neural networks for survival analysis using pseudo values",
author = "Zhao, Lili and Feng, Dai",
Expand Down
105 changes: 105 additions & 0 deletions R/learner_deepnet_classif_dbnDNN.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
#' @title Deep Neural Network with DBN Pretraining Learner
#' @author awinterstetter
#' @name mlr_learners_classif.dbnDNN
#'
#' @description
#' Deep neural network with weights initialized by a deep belief network.
#' Calls [deepnet::dbn.dnn.train()] from \CRANpkg{deepnet}.
#'
#' This learner works with tasks that have at least two features.
#'
#' @section Initial parameter values:
#' - `output` is set to `"softmax"` to enable class probabilities.
#'
#' @templateVar id classif.dbnDNN
#' @template learner
#'
#' @references
#' `r format_bib("rong2014deepnet")`
#'
#' @template seealso_learner
#' @template example
#' @export
LearnerClassifDbnDNN = R6Class("LearnerClassifDbnDNN",
inherit = LearnerClassif,
public = list(
#' @description
#' Creates a new instance of this [R6][R6::R6Class] class.
initialize = function() {
param_set = ps(
hidden = p_uty(init = 10L, tags = "train", custom_check = function(x) {
check_integerish(x, lower = 1, any.missing = FALSE, min.len = 1)
}),
activationfun = p_fct(levels = c("sigm", "linear", "tanh"), init = "sigm", tags = "train"),
learningrate = p_dbl(init = 0.8, lower = 0, tags = "train"),
momentum = p_dbl(init = 0.5, lower = 0, tags = "train"),
learningrate_scale = p_dbl(init = 1, lower = 0, tags = "train"),
numepochs = p_int(init = 3L, lower = 1L, tags = "train"),
batchsize = p_int(init = 100L, lower = 1L, tags = "train"),
output = p_fct(levels = c("sigm", "linear", "softmax"), init = "softmax", tags = "train"),
hidden_dropout = p_dbl(init = 0, lower = 0, upper = 1, tags = "train"),
visible_dropout = p_dbl(init = 0, lower = 0, upper = 1, tags = "train"),
cd = p_int(init = 1L, lower = 1L, tags = "train")
)

super$initialize(
id = "classif.dbnDNN",
packages = "deepnet",
feature_types = c("integer", "numeric"),
predict_types = c("response", "prob"),
param_set = param_set,
properties = c("twoclass", "multiclass"),
man = "mlr3extralearners::mlr_learners_classif.dbnDNN",
label = "Deep Belief Network DNN"
)
}
),

private = list(
.train = function(task) {
pars = self$param_set$get_values(tags = "train")

x = data.matrix(task$data(cols = task$feature_names))
y = as.numeric(task$truth())
dict = sort(unique(y))
onehot = matrix(0, length(y), length(dict))

for (i in seq_along(dict)) {
ind = which(y == dict[i])
onehot[ind, i] = 1
}

invoke(
deepnet::dbn.dnn.train,
x = x,
y = onehot,
.args = pars
)
},

.predict = function(task) {
newdata = data.matrix(ordered_features(task, self))

pred = invoke(
deepnet::nn.predict,
self$model,
newdata
)

pred = as.matrix(pred)
colnames(pred) = task$class_names

if (self$predict_type == "response") {
response = factor(
task$class_names[max.col(pred, ties.method = "first")],
levels = task$class_names
)
return(list(response = response))
}

list(prob = pred)
}
)
)

.extralrns_dict$add("classif.dbnDNN", LearnerClassifDbnDNN)
1 change: 0 additions & 1 deletion R/learner_deepnet_classif_nnTrain.R
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
#' Calls [deepnet::nn.train()] from \CRANpkg{deepnet}.
#'
#' @section Initial parameter values:
#' - `hidden` defaults to `10`.
#' - `output` is set to `"softmax"` for probabilistic classification.
#'
#' @templateVar id classif.nnTrain
Expand Down
2 changes: 1 addition & 1 deletion man/mlr_learners_classif.AdaBoostM1.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/mlr_learners_classif.C50.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/mlr_learners_classif.IBk.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/mlr_learners_classif.J48.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/mlr_learners_classif.JRip.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/mlr_learners_classif.LMT.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/mlr_learners_classif.OneR.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/mlr_learners_classif.PART.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/mlr_learners_classif.abess.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 3 additions & 15 deletions man/mlr_learners_classif.bayes_net.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading