* sample( ) 함수:
벡터(vector) 혹은 데이터 프레임(data frame)에서 지정된 크기만큼 데이터를 무작위로 추출할 때 사용하는 함수이다. 이 함수는 트레이닝 데이터 및 테스트 데이터 분할 등 다양한 분야에서 유용하게 사용할 수 있다. 구체적은 사용 방법은 다음과 같다.
*기본 사용법(replace = FALSE)
우선 R 공식 사이트에서 제공하는 기본 사용법은 다음과 같다.
sample(x, size, replace = FALSE, prob = NULL)
기본 사용법에서 알 수 있듯이 sample( ) 함수의 기본 설정은 한번 추출한 값은 제외하는 비복원 추출(replace = FALSE) 방법을 사용하고 있다. 아래 예제를 통해 기본 사용 방법을 알아보도록 하자.
예제1: 벡터(vector)에서 무작위로 데이터를 추출할 때
> sample(1:10, 3) #1부터 10사이 값에서 무작위로 3개 추출
[1] 1 5 3
> sample(1:50, 4) #1부터 50사이 값에서 무작위로 4개 추출
[1] 41 6 31 50
> sample(1:50, 5) #1부터 100사이 값에서 무작위로 5개 추출
[1] 28 6 35 8 19
예제2: 데이터 프레임(data frame)에서 무작위로 데이터를 추출할 때
> temp <- data.frame(x1 = c(1, 3, 4, 5, 6),
+ x2 = c(2, 4, 6, 7, 8),
+ x3 = c(4, 7, 8, 9, 3))
> temp
x1 x2 x3
1 1 2 4
2 3 4 7
3 4 6 8
4 5 7 9
5 6 8 3
> sample(temp$x1, 3)
[1] 1 5 3
*replace = TRUE일 때 사용법
이 경우는 한번 추출한 값을 기존 데이터 다시 넣고 추출에 사용한다. 즉, 복원 추출 방법을 사용하기 때문에 출력되는 값이 중복될 수 있다. 구체적인 사용 방법은 다음과 같다.
> sample(1:10, 5, replace = TRUE) #1부터 10사이 값에서 무작위로 5개를 복원 추출
[1] 10 1 5 5 2
> sample(1:50, 5, replace = TRUE) #1부터 50사이 값에서 무작위로 5개를 복원 추출
[1] 49 17 19 33 27
> sample(1:99, 5, replace = TRUE) #1부터 99사이 값에서 무작위로 5개를 복원 추출
[1] 2 59 76 43 42
*prob 파마미터 사용법
이 경우는 입력 벡터 값이 추출될 수 있는 확률을 사전에 설정할 때 사용된다. 구체적으로 다음과 같이 사용된다. 예를 들어 TRUE, FALE 데이터가 있을 때 TRUE가 선택될 수 있는 확률를 0.7. FALSE가 선택될 수 있는 확률을 0.3으로 설정할 수 있다.
sample(c(TRUE, FALSE), 5, replace = TRUE, prob = c(0.7, 0.3))
[1] TRUE FALSE FALSE TRUE TRUE
** 데이터셋을 분리할 때 아래와 같이 sample( ) 함수를 적용하면 유용하게 사용할 수 있다.
> dataset <- datasets::iris ## 데이터 저장
> nrow(dataset) ## 행 개수 확인
[1] 150
> which <- sample(c(TRUE, FALSE), nrow(dataset), replace = TRUE, prob = c(0.8, 0.2)) ##TRUE 80%, FALSE 20% 분할
> train <- dataset[which,] ## TRUE 값 추출
> test <- dataset[!which,] ## FALSE 값 추출
> nrow(train) ## 트레이닝 데이터 행 개수 확인
[1] 124
> nrow(test) ## 테스트 데이터 행 개수 확인
[1] 26
댓글