# 오버피팅(과적합)정규화
seed <- 400820
predictors <- data.matrix(loan_data[,-which(names(loan_data) %in% 'outcome')])
label <- as.numeric(loan_data$outcome)-1
test_idx <- sample(nrow(loan_data), 10000)
xgb_default <- xgboost(data=predictors[-test_idx,], label=label[-test_idx],
objective='binary:logistic', nrounds=250, verbose=0,
eval_metric='error')
pred_default <- predict(xgb_default, predictors[test_idx,])
error_default <- abs(label[test_idx] - pred_default) > 0.5
xgb_default$evaluation_log[250,]
mean(error_default)
xgb_penalty <- xgboost(data=predictors[-test_idx,], label=label[-test_idx],
params=list(eta=.1, subsample=.63, lambda=1000),
objective='binary:logistic', nrounds=250, verbose=0,
eval_metric='error')
pred_penalty <- predict(xgb_penalty, predictors[test_idx,])
error_penalty <- abs(label[test_idx] - pred_penalty) > 0.5
xgb_penalty$evaluation_log[250,]
mean(error_penalty)
# R에서 제공하는 predict 함수를 통해 파라미터 설정
error_default <- rep(0, 250)
error_penalty <- rep(0, 250)
for(i in 1:250) {
pred_default <- predict(xgb_default, predictors[test_idx,], iterationrange=c(1, i))
error_default[i] <- mean(abs(label[test_idx] - pred_default) > 0.5)
pred_penalty <- predict(xgb_penalty, predictors[test_idx,], iterationrange=c(1, i))
error_penalty[i] <- mean(abs(label[test_idx] - pred_penalty) > 0.5)
}
# 오차율 시각화
errors <- rbind(xgb_default$evaluation_log,
xgb_penalty$evaluation_log,
data.frame(iter=1:250, train_error=error_default),
data.frame(iter=1:250, train_error=error_penalty))
errors$type <- rep(c('default train', 'penalty train',
'default test', 'penalty test'), rep(250, 4))
graph <- ggplot(errors, aes(x=iter, y=train_error, group=type)) +
geom_line(aes(linetype=type, color=type), size=1) +
scale_linetype_manual(values=c('solid', 'dashed', 'dotted', 'longdash')) +
theme_bw() +
theme(legend.key.width = unit(1.5,"cm")) +
labs(x="Iterations", y="Error") +
guides(color = guide_legend(override.aes = list(size=1)))
graph
부스팅 : 모델을 앙상블 형태로 만드는 기법이며 이전 모델의 오차를 줄여나가는 방식으로 진행
| 앙상블 | 부스팅 | 아다부스트 | 그레디언트 부스팅 | 확률적 그레디언트 부스팅 | 정규화 | 하이퍼파라미터 |
| 여러 모델의 집합을 이용해 예측한 결과를 생성하는 것 | 연속된 라운딩마다 잔차가 큰 쪽에 가중치를 두고 일련 모델을 생성하는 기법 | 변형된 부스팅 알고리즘이며 일반적으로 널리 사용 |
변형된 부스팅 알고리즘이며 일반적으로 널리 사용 | 변형된 부스팅 알고리즘이며 일반적으로 널리 사용 | 비용함수 모델의 파라미터 개수에 벌점항을 추가해 오버피팅 문제를 해결하는 것 | 알고리즘 피팅 전 사전 세팅해야하는 파라미터 * 부스팅 방법을 사용할 때 오버피팅 문제가 발생하므로 이를 방지하기 위해 설정하는 파라미터 * 여러 하이퍼파라미터 조합 가능. 이때 교차타당성 검사를 사용 |
아다부스트 알고리즘 진행과정
- 이전 단계의 결과를 활용해 다음 단계의 학습시 사용될 데이터에 가중치를 부여해 반복되는 학습에 변화 제공
- 이전 단계에서 분류된 데이터들 중 오분류가 가장 큰 데이터에 가중치를 부여 -> 적은 오분류율이 되도록 하여 이를 다음 판단에 중요한 역할을 하게 함 -> 학습 진행시 집중 극대화 -> 이는 오차가 적을수록 큰 가중치를 갖게 됨
| 아다부스트 | 그레디언트 부스팅 | 확률적 그레디언트 부스팅 |
| 이전 단계 결과에서 다음 단계에 사용될 데이터에 가중치 부여 | 가중치 부여 대신 유사잔차를 학습 | 데이터와 예측변수를 샘플링 * 이 방식을 재현한 것 중 가장 많이 사용되는 것은 XG 부스팅 방식이 있음 |
* 그레디언트 부스팅은 아다부스팅과 동일하지만 가중치를 조정하는 대신 모델이 유사잔차를 학습해(잔차가 더 클수록 집중 극대화) 시행.
* 확률적 그레디언트 부스팅은 랜덤 포레스트 방식과 비슷하며 매학습단계마다 데이터,예측변수를 *샘플링하는 방식으로 진행
'통계데이터과학과 및 컴퓨터과학 독서' 카테고리의 다른 글
| 7-1. 비지도 학습 (0) | 2025.06.23 |
|---|---|
| 6-5. 통계적 머신러닝 (0) | 2025.06.09 |
| 6-3. 통계적 머신러닝 (0) | 2025.05.26 |
| 6-2. 통계적 머신러닝 (0) | 2025.05.19 |
| 6-1. 통계적 머신러닝 (0) | 2025.05.12 |