Base/R

[R] R에서 교차검증을 위한 데이터 셋 분리방법 3가지

반응형

교차검증을 위한 데이터셋 분리에는 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 데이터를 통해 모델을 만들고 예측값을 구한다. 그다음 데이터를 가져와보면

 

위와 같이 나온다. 이것의 값을 구하면 

 

#분류 실습

 

반응형