Я новичок в уходе Выбор функций генетического алгоритма и начал с простого запуска набора данных радужной оболочки. Я хочу извлечь лучшие характеристики, их точность, а также общее количество модельных тренировок (оценка подмножества функций). Кроме того, я не понимаю, как строится окончательная модель.
Карет дает описание метода: https://topepo.github.io/caret/feature-selection-using-genetic-algorithms.html
Тем не менее, я не совсем понял, сколько модельных тренингов им понадобится в конце и как будет построена финальная модель.
library(caret)
dataset <- iris
levels(dataset$Species) <- c(0, 0, 1)
ga_ctrl <- gafsControl(functions = caretGA, method = "cv", number = 3, verbose = TRUE)
res <- caret::gafs(x = dataset[, 1:(length(dataset)-1)],
y = dataset[, length(dataset)],
iters = 5,
popSize = 6,
pcrossover = 0.8,
pmutation = 0.1,
gafsControl = ga_ctrl,
method = "glm", family = binomial(link = 'logit'),
trControl = trainControl(method = "cv"))
Я получил этот вывод (без установки конкретного семени сейчас):
Fold1 1 0.96 (2)
Fold1 2 0.96->0.97 (2->4, 50.0%) *
Fold1 3 0.97->0.9788889 (4->2, 50.0%) *
Fold1 4 0.9788889->0.9809091 (2->2, 100.0%) *
Fold1 5 0.9809091->0.98 (2->2, 100.0%)
Fold2 1 0.9718182 (3)
Fold2 2 0.9718182->0.9709091 (3->4, 75.0%)
Fold2 3 0.9718182->0.9718182 (3->4, 75.0%)
Fold2 4 0.9718182->0.9709091 (3->1, 33.3%)
Fold2 5 0.9718182->0.9688889 (3->3, 50.0%)
Fold3 1 0.97 (3)
Fold3 2 0.97->0.9688889 (3->3, 100.0%)
Fold3 3 0.97->0.97 (3->3, 100.0%)
Fold3 4 0.97->0.969798 (3->2, 66.7%)
Fold3 5 0.97->0.9709091 (3->3, 100.0%) *
+ final GA
1 0.9533333 (1)
2 0.9533333->0.96 (1->2, 50.0%) *
3 0.96->0.9533333 (2->2, 100.0%)
4 0.96->0.98 (2->3, 66.7%) *
5 0.98->0.9733333 (3->3, 100.0%)
+ final model
res$ga$fit
дает Точность 0,96, тогда как res$fit
дает Точность 0,9533333, но 0,98 должно быть правильным значением, не так ли?
Для общего количества тренировок, я полагаю, это что-то вроде
popSize * iters * folds
с номерами из числа ga_ctrl, но я не уверен в этом.
Для лучших функций, res$optVariables
правильно?