가중치가 고르지 않은 경우 minsplit
기준에 rpart
의 가중치를 통합하는 방법은 무엇입니까? 임계 값을 고려한 minsplit
임계 값을 찾을 수 없으며, 가중치가 고르지 않으면 다음 예제와 같이 문제가됩니다. 현재의 해결 방법은 각 행이 관측치 인 데이터로 데이터를 확장하는 것입니다. 그러나 시간과 메모리 모두 낭비입니다. (어쨌든 확장 된 형식으로 메모리에서 작업해야하는 실제 데이터 세트를 유지할 수 있을지는 의문입니다.), 도움을 청한다. 도움을 주셔서 감사합니다. -Saar분수 및 불평등 분동 사용하기
다음 코드는 문제가 무엇인지 보여줍니다. 첫 번째 3 개의 나무는 동일하지만 다음 두 개 (고르지 않은 무게 포함)가 다르게 나타납니다.
## playing with rpart weights
require(rpart)
dev.new()
par(mfrow=c(2,3), xpd=NA)
data(kyphosis)
fitOriginal <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis, control=rpart.control(minsplit=15))
plot(fitOriginal)
text(fitOriginal, use.n=TRUE)
# this dataset is the original data repeated 3 times
kyphosisRepeated <- rbind(kyphosis, kyphosis, kyphosis)
fitRepeated <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosisRepeated, control=rpart.control(minsplit=45))
plot(fitRepeated)
text(fitRepeated, use.n=TRUE)
# instead of repeating, use weights
kyphosisWeighted <- kyphosis
kyphosisWeighted$myWeights <- 3
fitWeighted <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosisWeighted, weights=myWeights,
control=rpart.control(minsplit=15)) ## minsplit has to be adjusted for weights...
plot(fitWeighted)
text(fitWeighted, use.n=TRUE)
# uneven weights don't works the same way
kyphosisUnevenWeights <- rbind(kyphosis, kyphosis)
kyphosisUnevenWeights$myWeights <- c(rep(1,length.out=nrow(kyphosis)), rep(2,length.out=nrow(kyphosis)))
fitUneven15 <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosisUnevenWeights, weights=myWeights,
control=rpart.control(minsplit=15))
plot(fitUneven15)
text(fitUneven15, use.n=TRUE)
fitUneven45 <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosisUnevenWeights, weights=myWeights,
control=rpart.control(minsplit=45))
plot(fitUneven45)
text(fitUneven45, use.n=TRUE)
## 30 works, but seems like a special case
fitUneven30 <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosisUnevenWeights, weights=myWeights,
control=rpart.control(minsplit=30))
plot(fitUneven30)
text(fitUneven30, use.n=TRUE)
일반 데이터 세트에서 불균형 가중치 및 최소값을 사용하려고합니다. 예를 들어 작동하지 않는 것으로 나타났습니다. 가중치의 균형 조정은 일반적인 해결책이 아니므로 데이터 세트가 너무 커질 수 있습니다. – Saar
@ Saar, 사과드립니다. 예제에서 "작동하지 않는다"는 것을 보여줍니다. 어떤 방법으로 작동하지 않습니까? 예제를 테스트했을 때, 아무런 오류없이 각각의 트리가 성장했습니다. 당신이 예상하지 못한 방식으로 나무 중 하나가 자랐습니까? – Ben
모든 6 개의 예에서 데이터는 동일한 데이터입니다 (첫 번째 예제 제외). 각 관찰은 세 번 반복되거나, 한 번 표시되지만 3의 가중치 또는 3 번을 가중치로 두 번 표시됩니다 나는 그것으로부터 지어지는 나무가 같은 나무 (같은 자료, 같은 알고리즘, 같은 조건이 같은 결과물을 가져와야 함)가 될 것으로 기대한다. 특히, 다섯 번째 예제는 두 번째 및 세 번째 예제와 동일한 트리를 제공해야합니다. 그렇지 않습니다. 이것은 런타임 오류가 아니라 잘못된 대답을 되 찾는 것입니다 ... – Saar