오버샘플링은 불균형한 분포를 가진 데이터셋에서 소수 클래스의 샘플의 수를 증가시켜 모델의 학습을 개선하고 선능을 향상시킵니다.
SAS 코드를 활용해 오버샘플링 예제는 아래와 같습니다.
위의 예제에서 사용된 IRIS 는 SAS에서 제공하는 내장 데이터셋 중 하나로 IRIS 에 대한 데이터입니다.
IRIS 데이터는 총 150개의 붓꽃 데이터로 3가지 종(species)_Setosa, Versicolor, Virginica로 SepalLength, SepalWidth, PetalLength, PetalWidth로 데이터가 이루어져 있습니다.
data iris;
set sashelp.iris;
if Species = 'Setosa' then output;
if Species = 'Setosa' then output;
run;
proc surveyselect data=iris method=urs out=oversampled_data
samprate=(1 1);
strata Species;
run;
proc print data=oversampled_data;
run;
------------------------------------------------------------------------------------------
if Species = 'Setosa' then output;
then output 구문은 특정 조건을 만족하는 경우에 데이터를 추출하는 구문입니다.
if 문을 통해서 특정 조건을 제한하고 조건이 true일 경우에만 데이터를 출력합니다.
iris 데이터 중 setosa 종에 해당하는 행을 두번씩 출력하였습니다.
setosa 클래스에 속하는 샘플을 복사하여 오버샘플링하여 iris 데이터를 생성하였습니다.
그 결과, IRIS 데이터는 Setosa 데이터로만 100개의 데이터가 생성되었습니다.
proc surveyselect data=iris method=urs out=oversampled_data
samprate=(1 1);
strata Species;
run;
PROC SURVEYSELECT 구문은 샘플링 기법을 사용하여 데이터를 샘플링할 때 사용합니다.
설문조사, 실험계획, 품질관리, 데이터 탐색 등 다양한 분야에서 PROC SURVEYSELECT 구문을 활용할 수 있습니다.
data = 샘플링 대상이 되는 데이터셋을 지정합니다. 위 코드에서 iris 데이터를 지정하는 것 입니다.
urs = Unrestricted Random Sampling으로 각 행이 동일한 확률로 무작위로 선택하는 샘플링 방법입니다.
모든 행이 같은 확률로 선택되며 복원 추출 방식으로 중복이 허용됩니다.
같은 행이 여러번 샘플에 포함될 수 있습니다.
samprate = 각 계층(stratum) 내에서의 샘플링 비율을 지정합니다.
samprate = (1 1)은 2개의 계층이 있을 경우에 각 계층에서 모든 행을 선택하는 것을 의미합니다.
모든 계층에서 모든 행을 포함하는 표본을 생성하는 것 입니다.
즉, 샘플링 비율을 의미하며 samprate = 0.5 는 전체 데이터 의 절반을 샘플로 선택하는 것을 의미합니다.
그 결과, 데이터는 총 100개로 위와 같이 Oversample 된 데이터가 결과값으로 출력됩니다.
오버샘플링을 통해 성능을 향상시킬 수 있지만, 모델이 훈련 데이터에 과적합될 수 있기 때문에 적절한 수준으로 사용하는 것이 중요합니다.
Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.