Я пишу CART в R с нуля, и я почти закончил. Тем не менее у меня есть проблема с эффективностью: узким местом моего кода является процедура ниже.
best_split2 <- function(dataset){
sse2 <- matrix(nrow=dim(dataset)[1], ncol=length((dataset))-1)
for(i in 1:(length(dataset)-1)){
for(l in 1:dim(dataset)[[1]]){
splits <- split_test3(dataset[[i]][l], i, dataset)
sse2[l,][i] <- cost_func3(splits)
}
}
sse_min2 <- min(sse2)
mins <- which(sse2 == sse_min2, arr.ind = TRUE)[1,]
index1 <- unname(mins[2])
index2 <- unname(mins[1])
split_val2 <- dataset[[index1]][index2]
splits2 <- split_test3(split_val2, index1, dataset)
return(list(sse = sse_min2, index = index2, split_val = split_val2, splits = splits2, left = NULL, right = NULL))
}
В best_split2 я ищу лучшую переменную разбиения в наборе данных. Учтите, что функции split_test3 и cost_func3 написаны оптимально, и они чрезвычайно быстры.
Есть ли у вас какие-либо советы, как оптимизировать эту функцию?
Спасибо!