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문 작성법
- 빅데이터
- sql
- 데이터분석가
- Sum
- max
- loop 문
- 총과 카드만들기
- Intersect
- 팀스파르타
- count
- %in%
- 막대그래프
- 그래프시각화
- Dense_Rank
- 상관관계
- sqld
- 회귀분석 알고리즘
- 그래프 생성 문법
- 빅데이터분석
- merge
- 단순회귀 분석
- 데이터분석
- difftime
- 순위출력
Archives
- Today
- Total
ch0nny_log
[빅데이터분석] R _ 74. carot 튜닝 본문
* caret 패키지의 주요 기능
1. 데이터 전처리를 쉽게 할 수 있음
2. 하이퍼 파라미터 튜닝을 자동화 할 수 있음
3. 이원 교차표를 제공하여 모델 평가를 할 수 있음
하이퍼 파라미터는 모델을 학습 시키는 사람이 직접 알아내야하는 파라미터입니다.
예: knn 의 k값, naivebayes의 laplace, 신경망의 학습률과 층수와 뉴런수, 서포트 백터 머신의 C 와 gamma
#install.packages("caret")
# install.packages("e1071")
library(caret)
library(e1071)
# 데이터 로드
data(iris)
# 훈련 데이터와 테스트 데이터 분할
set.seed(123)
trainIndex <- createDataPartition(iris$Species, p = .8, list = FALSE, times = 1)
# times=1 은 데이터 분할을 몇번 반복할지를 지정하는건데 1번만 분할하겠다.
# times 의 숫자를 크게 넣으면 분할을 여러번 하면서 훈련과 테스트 데이터를
# 더 잘 균등하게 분할해줍니다. 특히 정답이 골고루 섞이게 해줍니다.
# 모델의 안정성을 높이고 과적합을 예방할 수 있는 방법중 하나입니다.
irisTrain <- iris[ trainIndex,]
irisTest <- iris[-trainIndex,]
# 튜닝 그리드 설정 ( 서포트 백터 머신의 하이퍼 파라미터 )
tuneGrid <- expand.grid(C = 2^(-5:2), sigma = 2^(-15:2))
# 트레이닝 컨트롤 설정 ( k-foldout 의 k 개를 5개로 둬서 훈련 데이터를 5개로 등분함)
trainControl <- trainControl(method = "cv", number = 5)
# SVM 모델 훈련 및 튜닝 ( 5개의 훈련 데이터를 반복하면서 최적의 하이퍼 파라미터
# 알아냅니다.
svmModel <- train(Species ~ ., data = irisTrain,
method = "svmRadial",
tuneGrid = tuneGrid,
trControl = trainControl)
# 최적의 파라미터와 결과
print(svmModel)
# 테스트 데이터로 예측( 최적의 하이퍼 파라미터로 셋팅된 베스트 모델로 예측)
predictions <- predict(svmModel, newdata = irisTest)
# 모델 성능 평가
confusionMatrix(predictions, irisTest$Species)
■ R을 활용한 머신러닝 마지막 문제 (caret을 이용한 자동튜닝을 wine2.csv에 적용해서 서포트 벡터 머신 모델을 만드시오. 최적의 하이퍼 파라미터의 조합을 쉽게 알아낼 수 있도록 하시오.)
install.packages("caret") install.packages("e1071") library(caret) library(e1071) # 데이터 로드 wine <- read.csv("c:\\data\\wine2.csv") wine$Type <- as.factor(wine$Type) # 훈련 데이터와 테스트 데이터 분할 set.seed(123) trainIndex <- createDataPartition(wine$Type, p = .8, list = FALSE, times = 1) wineTrain <- wine[ trainIndex,] wineTest <- wine[-trainIndex,] # 튜닝 그리드 설정 tuneGrid <- expand.grid(C = 2^(-5:2), sigma = 2^(-15:2)) # 트레이닝 컨트롤 설정 trainControl <- trainControl(method = "cv", number = 5) # SVM 모델 훈련 및 튜닝 svmModel <- train(Type ~ ., data = wineTrain, method = "svmRadial", tuneGrid = tuneGrid, trControl = trainControl) # 최적의 파라미터와 결과 print(svmModel) # 테스트 데이터로 예측 predictions <- predict(svmModel, newdata = wineTest) # 모델 성능 평가 confusionMatrix(predictions, wineTest$Type)
'빅데이터 분석(with 아이티윌) > R' 카테고리의 다른 글
빅분기 R_CBT 예상 문제 (0) | 2024.07.31 |
---|---|
[빅데이터분석] R _ 73. 랜덤 포레스트 (0) | 2024.07.30 |
[빅데이터분석] R _ 72. 앙상블 (0) | 2024.07.30 |
[빅데이터분석] R _ 71. k-foldout (0) | 2024.07.30 |
[빅데이터분석] R _ 70. ROC 커브와 cut-off (0) | 2024.07.30 |