Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 순위출력
- if문 작성법
- 빅데이터
- loop 문
- merge
- 빅데이터분석
- Sum
- 불순도제거
- 총과 카드만들기
- difftime
- sqld
- 단순회귀 분석
- Dense_Rank
- max
- sql
- 상관관계
- 회귀분석
- Intersect
- 그래프시각화
- 데이터분석가
- 그래프 생성 문법
- 데이터분석
- 여러 데이터 검색
- 팀스파르타
- 회귀분석 알고리즘
- 히스토그램 그리기
- %in%
- count
- 정보획득량
- 막대그래프
Archives
- Today
- Total
ch0nny_log
[빅데이터분석] R _ 72. 앙상블 본문
실습. 60% 정확도를 보이는 모델들을 모아서 90% 가 넘는 모델을 생성하는 팀을 만들고 싶은데 그러면 60% 정확도를 보이는 모델들이 몇 개 필요할까?
# 1. 정확도 계산: 앙상블 모델의 필요 개수 ret_err <- function(n, err) { sum <- 0 for(i in floor(n/2):n) { sum <- sum + choose(n,i) * err^i * (1-err)^(n-i) } sum } for(j in 1:60) { err <- ret_err(j, 0.4) cat(j, '--->', 1 - err, '\n') if(1 - err >= 0.9) break } # 2. 앙상블을 사용하지 않은 의사결정트리 모델 생성 # 데이터 로드 iris <- read.csv("c:\\data\\iris2.csv", stringsAsFactors = TRUE) # 훈련 데이터와 테스트 데이터 분리 library(caret) set.seed(1) in_train <- createDataPartition(iris$Species, p = 0.8, list = FALSE) iris_train <- iris[in_train, ] iris_test <- iris[-in_train, ] # 모델 생성 library(C50) set.seed(1) model <- C5.0(Species ~ ., data = iris_train) # 모델 예측 result <- predict(model, iris_test) # 모델 평가 accuracy <- sum(iris_test$Species == result) / length(iris_test$Species) cat("Accuracy without ensemble:", accuracy, "\n") # 3. 배경을 사용한 모델 생성 # 데이터 로드 iris <- read.csv("c:\\data\\iris2.csv", stringsAsFactors = TRUE) # 훈련 데이터와 테스트 데이터 분리 set.seed(1) in_train <- createDataPartition(iris$Species, p = 0.8, list = FALSE) iris_train <- iris[in_train, ] iris_test <- iris[-in_train, ] # 모델 생성 library(ipred) set.seed(1) my_bag <- bagging(Species ~ ., data = iris_train, nbagg = 25) # 모델 예측 p_bag <- predict(my_bag, iris_test[, -5]) # 모델 평가 bagging_accuracy <- sum(iris_test$Species == p_bag) / length(iris_test$Species) cat("Accuracy with bagging:", bagging_accuracy, "\n")
실습. 부스팅 모델 생성
# 데이터 로드 iris <- read.csv("c:\\data\\iris2.csv", stringsAsFactors = TRUE) # 훈련 데이터와 테스트 데이터 분리 set.seed(1) in_train <- createDataPartition(iris$Species, p = 0.8, list = FALSE) iris_train <- iris[in_train, ] iris_test <- iris[-in_train, ] # 모델 생성 #install.packages('adabag') library(adabag) set.seed(1) m_adaboost <- boosting(Species ~ ., data = iris_train, mfinal = 50) # 부스팅 단계수를 50으로 지정. # 모델 예측 p_adaboost <- predict(m_adaboost, iris_test[, -5]) # 모델 평가 boosting_accuracy <- sum(iris_test$Species == p_adaboost$class) / length(iris_test$Species) cat("Accuracy with boosting:", boosting_accuracy, "\n")
문제. 위의 부스팅 모델의 성능을 높이기 위해 하이퍼 파라미터를 지정하고 모델을 생성하시오.
# 데이터 로드 iris <- read.csv("c:\\data\\iris2.csv", stringsAsFactors = TRUE) # 훈련 데이터와 테스트 데이터 분리 set.seed(1) in_train <- createDataPartition(iris$Species, p = 0.8, list = FALSE) iris_train <- iris[in_train, ] iris_test <- iris[-in_train, ] # 모델 생성 #install.packages('adabag') library(adabag) set.seed(1) m_adaboost <- boosting(Species ~ ., data = iris_train) # 모델 예측 p_adaboost <- predict(m_adaboost, iris_test[, -5]) # 모델 평가 boosting_accuracy <- sum(iris_test$Species == p_adaboost$class) / length(iris_test$Species) cat("Accuracy with boosting:", boosting_accuracy, "\n")
💡 마지막 문제. wine2.csv 데이터를 분류하는 앙상블 모델을 생성하시오. 부스팅 선택하여 모델 생성함.
# 데이터 로드 wine <- read.csv("c:\\data\\wine2.csv", stringsAsFactors = TRUE) # 훈련 데이터와 테스트 데이터 분리 set.seed(1) in_train <- createDataPartition(wine$Type, p = 0.9, list = FALSE) wine_train <- wine[in_train, ] wine_test <- wine[-in_train, ] # 모델 생성 #install.packages('adabag') library(adabag) set.seed(1) m_adaboost <- boosting(Type ~ ., data = wine_train) # 모델 예측 p_adaboost <- predict(m_adaboost, wine_test[, -1]) # 모델 평가 boosting_accuracy <- sum(wine_test$Type == p_adaboost$class) / length(wine_test$Type) cat("Accuracy with boosting:", boosting_accuracy, "\n")
'빅데이터 분석(with 아이티윌) > R' 카테고리의 다른 글
[빅데이터분석] R _ 74. carot 튜닝 (0) | 2024.07.30 |
---|---|
[빅데이터분석] R _ 73. 랜덤 포레스트 (0) | 2024.07.30 |
[빅데이터분석] R _ 71. k-foldout (0) | 2024.07.30 |
[빅데이터분석] R _ 70. ROC 커브와 cut-off (0) | 2024.07.30 |
[빅데이터분석] R _ 69. 모델 평가 (1) | 2024.07.26 |