나는 회귀 분석을위한 간단한 그래디언트 부스트 알고리즘을 구현하려고합니다. 이것은 지금까지 생각해 낸 것입니다 만, 예상했던 것처럼 오류가 정체되지 않습니다. 어떤 제안?간단한 그래디언트 부스팅 알고리즘
data("OrchardSprays")
niter <- 10
learn <- 0.05
y <- OrchardSprays$decrease
yhat <- rep(0,nrow(OrchardSprays))
weight <- rep(1,nrow(OrchardSprays))
loss <- function(y,yhat) (y - yhat)^2
for (i in seq(niter))
{
model <- lm(decrease~.,weights=weight,data=OrchardSprays)
yhat <- yhat + weight * (predict(model) - yhat)/i
error <- mean(loss(y,yhat))
weight <- weight + learn * (loss(y,yhat) - error)/error
cat(i,"error:",error,"\n")
}
출력 :
1 error: 319.5881
2 error: 318.6175
3 error: 317.9368
4 error: 317.6112
5 error: 317.6369
6 error: 317.9772
7 error: 318.5833
8 error: 319.4047
9 error: 320.3939
10 error: 321.5086
알고리즘은 회귀 분석을위한 알고리즘을 강화 friedmans 그라데이션, 그 공식적 재귀 피팅 잔류으로 정의하지만 난 경우 가중치를 조정하여 구현해야한다. 나는 내가 무엇을 가지고 있는지에 대해 부스트 된 나무에 사용되는 적응과 가깝다는 것을 확신한다. – darckeen
@ darckeen, 그냥 nitpick되고있다. 그라디언트 증폭 알고리즘이 될 수 없습니다. 다시 가중치를 적용한 선형 함수는 여전히 선형이기 때문에. 귀하의 치료는 훨씬 더 부스트처럼됩니다. –