교차검증을 위한 데이터셋 분리에는 3가지 방법이 있습니다.
1. 단순 임의 추출
2.K-Fold 방식
3.Hold - Out방식
이 세 가지를 R을 통해 예제를 보며 진행하겠습니다.
1. 단순 임의 추출
sample을 사용해서 복원/비 복원 추출을 한다. 이 작업을 통해 데이터셋을 만든다. 별로 추천하지 않는 형태이다. 말 그대로 임의 추출이기 때문에 데이터가 한쪽으로 몰릴 수도 있다.
2.k-Fold 교차방식
k개의 fold를 만들어서 진행하는 교차검증이다.
이런 방식으로 모든 데이터를 한 번씩 테스트 셋으로 사용되게 하는 기법이다.
가장 추천하는 방법이다.
이 방법을 통해 여러가지 정확도를 얻게 되고 그걸 평균으로 값을 내거나 또는 각각의 케이스에 따른 경우를 가져갈 때도 있다.
패키지를 설치한다.
#cvFolds(n , k , r)
-n개의 관찰을 K겹 교차 검증의 R회 반복으로 분할한다.
아래에서는 수치는 6까지고 k-fold는 3까지이다. 그리고 반복은 1이다
fold에서 subsets는 데이터 값 / which는 fold의 인덱스 값을 나타낸다.
예제
이런것들 하나하나가 데이터 셋이다. 여기서는 k가 3이면 3가지의 데이터 셋이 있다.
이렇게 데이터셋을 분리할 수 있다.
이 3가지 데이터셋을 통해 naiveBayes 알고리즘을 사용해 분류를 해보자.
간단하게 설명하면 첫 번째 for문은 iris의 i번째 데이터 셋을 돌리고 두 번째 for문은 i가 아닌 나머지 데이터셋을 넣고 돌린다.
그렇게 i 번째 데이터 셋을 test 데이터 셋으로 i가 아닌 나머지 데이터 셋을 train 데이터셋으로 만들고
train 데이터셋을 통해 모델을 만들고 그 모델과 test 데이터셋으로 예측값 pred를 만든다.
그리고 나온 값들로 이 모델의 정확성을 파악한다.
이런 식으로 하면 총 6개의 값이 나온다.
#Hold - Out(교차검증)
데이터셋을 훈련 셋과 테스트 셋으로 분리한다.
createDataPartition(데이터, p=?) p는 퍼센트를 나타낸다. 여기서는 80프로로 데이터셋을 만든다.
이런 식으로 train data와 test data를 분류할 수 있다.
이 train 데이터를 통해 모델을 만들고 예측값을 구한다. 그다음 데이터를 가져와보면
위와 같이 나온다. 이것의 값을 구하면
#분류 실습
'Base > R' 카테고리의 다른 글
[R]R을 활용한 상관분석과 회귀분석 - 2 (0) | 2020.08.10 |
---|---|
[R] R을 활용한 크롤링 - 로또 1등 당첨 배출점 크롤링 하기 (0) | 2020.08.07 |
[R] R을 활용한 상관분석과 회귀분석 - 1 (0) | 2020.08.06 |
[R] R을 통한 텍스트마이닝에서 워드클라우드 까지 (1) | 2020.08.05 |
[R] R로 하는 비정형 데이터 처리 (facebook 데이터를 통한 긍정/부정 나누기) (0) | 2020.08.03 |