Description Usage Arguments Details Value Author(s) See Also Examples
The algorithm for searching atrribute subset space.
1 | hill.climbing.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 |
The algorithm starts with a random attribute set. Then it evaluates all its neighbours and chooses the best one. It might be susceptible to local maximum.
A character vector of selected attributes.
Piotr Romanski
forward.search
, backward.search
, best.first.search
, exhaustive.search
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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 <- hill.climbing.search(names(iris)[-5], evaluator)
f <- as.simple.formula(subset, "Species")
print(f)
|
OpenJDK 64-Bit Server VM warning: Can't detect initial thread stack location - find_vma failed
[1] "Sepal.Width" "Petal.Width"
[1] 0.9524679
[1] "Sepal.Length" "Sepal.Width" "Petal.Width"
[1] 0.9643386
[1] "Sepal.Width" "Petal.Length" "Petal.Width"
[1] 0.9477449
[1] "Petal.Width"
[1] 0.9474995
[1] "Sepal.Width"
[1] 0.5249047
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
[1] 0.9409755
[1] "Sepal.Length" "Petal.Width"
[1] 0.9530372
[1] "Sepal.Length" "Sepal.Width"
[1] 0.6985964
Species ~ Sepal.Length + Sepal.Width + Petal.Width
<environment: 0x2f42f38>
Warning message:
system call failed: Cannot allocate memory
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.