greedy.search {FSelector} | R Documentation |
The algorithms for searching atrribute subset space.
backward.search(attributes, eval.fun) forward.search(attributes, eval.fun)
attributes |
a character vector of all attributes to search in |
eval.fun |
a function taking as first parameter a character vector of all attributes and returning a numeric indicating how important a given subset is |
These algorithms implement greedy search. At first, the algorithms expand starting node, evaluate its children and choose the best one which becomes a new starting node. This process goes only in one direction. forward.search
starts from an empty and backward.search
from a full set of attributes.
A character vector of selected attributes.
Piotr Romanski
best.first.search
, hill.climbing.search
, exhaustive.search
library(rpart) data(iris) evaluator <- function(subset) { #k-fold cross validation k <- 5 splits <- runif(nrow(iris)) results = sapply(1:k, function(i) { test.idx <- (splits >= (i - 1) / k) & (splits < i / k) train.idx <- !test.idx test <- iris[test.idx, , drop=FALSE] train <- iris[train.idx, , drop=FALSE] tree <- rpart(as.simple.formula(subset, "Species"), train) error.rate = sum(test$Species != predict(tree, test, type="c")) / nrow(test) return(1 - error.rate) }) print(subset) print(mean(results)) return(mean(results)) } subset <- forward.search(names(iris)[-5], evaluator) f <- as.simple.formula(subset, "Species") print(f)