본문 바로가기

잡다

[weka] Data Set의 수를 제한하는 방법 : Resample

weka를 사용하는 과제를 수행하는 도중에 모델에 사용되는 data의 수를 제한해야 하는 일이 있었다.

따라서 인터넷에 'weka data set restrict' 등의 용어를 섞어 쓰면서 검색해 보았지만, 이거다 싶은 답은 없었다.

이런 이유로 계속 구글링을 하는 도중, weka의 filter에 Resample이라는 함수를 이용해야 한다는 결론으로 귀결되었다.

 

https://weka.sourceforge.io/doc.dev/weka/filters/supervised/instance/Resample.html

 

Resample (weka-dev 3.9.5 API)

Produces a random subsample of a dataset using either sampling with replacement or without replacement. The original dataset must fit entirely in memory. The number of instances in the generated dataset may be specified. The dataset must have a nominal cla

weka.sourceforge.io

 

Resample 필터는 학습에 적용될 sample의 수를 백분율 비율로 제한해주는 함수이다. 바로 사용해보자.

 

 

현재 화면은 Preprocess 창에서 Open file을 통해 기본 제공되는 데이터 셋 중 하나인 breast-cancer.arff 파일을 로지스틱 분류를 수행한 결과이다. 현재의 경우, 총 샘플의 개수는 286이다. 이때 사용되는 샘플의 비율을 변경해보자.

1. Filter을 누른다.

 

2. filters/supervised/instance 폴더의 Resample 파일을 클릭한다.

 

위 과정을 거치면 아래와 같은 화면을 볼 수 있다.

 

 

이 상태는 Resample 필터를 사용할 수 있는 상태이다. 이때 Z 뒤에 100.0으로 적힌 숫자가 보일 것이다.

해당 숫자는 Resample 과정에서 포함할 샘플의 비율로, 샘플 자체는 랜덤하게 선정된다.

위 설정은 Resample 과정에서 100%에 해당하는 data set의 샘플을 사용한다는 의미로 해석될 수 있다.

만약 이 값을 변경하고 싶다면, Resample이라고 적힌 하얀 칸을 클릭해보자.

 

 

해당 창을 클릭하면 위와 같은 창이 새로 뜬다. 해당 창에서 sampleSizePersent의 값을 변경하면 해당 비율의 Resample이 Apply 버튼을 누를 때 나의 data set에 적용된다. 필터의 설정과 필터의 "적용" 은 별개라는 것을 기억하자.

 

 

위에서 보인 로지스틱 분류에 대해 70% 로 Resample 하도록 필터를 Apply 한 후 테스트한 결과이다. 사용된 샘플의 수가 286 에서 199 로 줄어든 모습을 볼 수 있다.

 

좋다. 이제 다른 값에 대해 필터를 적용해보고 싶을 수 있다. 나의 경우, 60%로 Resample 필터를 다시 적용해봤다.

 

 

이상하게도, 숫자가 급격히 줄어들었다. 왜 60% 필터로 새로 적용했는데, 그 이상의 값이 줄어든 것일까?

weka에서 필터링은 다른 값으로 덮어쓴다는 개념이 아니라, 그냥 누적되는 방식이기 때문이다. 나는 원래 샘플 데이터에 70%, 60% Resample 필터를 연속해서 적용한 셈이므로, 원래 데이터 대비 42%의 데이터 수가 나오게 된다.

만약 내가 원하는 것이 기본 데이터의 60% Resample을 거친 결과라면, 기존 필터 적용을 되돌리고, 다시 필터를 적용해야 한다. 이것은 Undo를 통해 가능하다.

Undo 이전

 

Undo 이후

Undo 버튼을 클릭한 이후 오른쪽 그래프에 적힌 숫자들의 단위가 증가한 모습이 보인다. 정상적으로 적용되었던 필터가 제거된 모습을 볼 수 있다.

 

결론

Resample 함수는 현재 data set의 샘플을 다시 샘플링하는 함수이다.

% 단위로 샘플링 크기를 설정할 수 있으며, 샘플들은 랜덤하게 선택된다.

해당 함수는 filters/supervised/instance 폴더 내부에 있으며, 설정 후 Apply 버튼을 눌러야만 필터가 적용된다.

적용된 필터를 되돌리기 위해서는 Undo 버튼을 누르자.

 

Resample 자체는 크기 설정 이상의 기능이 가능하다. 자세한 내용은 레퍼런스 사이트를 참고하길 바란다.

'잡다' 카테고리의 다른 글

[오늘의 삽질] ec2 재시작 후 ssh 접근 안되는 문제  (0) 2022.05.19
[Colab] Colab과 구글 드라이브 연동  (0) 2021.12.01
MATLAB #3  (0) 2021.09.14
MATLAB #2  (0) 2021.09.09
MATLAB 정리  (0) 2021.09.07