웹사이트 검색

R에서 데이터를 정규화하는 방법 [3가지 쉬운 방법]


안녕하세요, 독자 여러분! 이 기사에서는 R 프로그래밍에서 데이터를 정규화하는 3가지 쉬운 방법을 살펴보겠습니다.

그럼 시작하겠습니다!! :)

정규화란 무엇입니까?

Feature Scaling은 데이터 사이언스에서 예측 문제를 해결하면서 모델링하기 전에 필수적인 단계입니다. 기계 학습 알고리즘은 더 작고 표준적인 규모에 속하는 데이터와 잘 작동합니다.

정규화가 필요한 시점입니다. 정규화 기술을 사용하면 변수의 규모를 줄일 수 있으므로 데이터의 통계적 분포에 긍정적인 영향을 미칩니다.

다음 섹션에서는 데이터 값에 대해 정규화를 수행하는 몇 가지 기술을 살펴보겠습니다.

1. R에서 데이터 정규화 - 로그 변환

실제 시나리오에서 데이터로 작업하기 위해 고르지 않게 분포된 데이터 세트를 찾는 상황을 자주 접하게 됩니다. 즉, 왜곡되거나 값의 정규화를 따르지 않습니다.

이러한 경우 값을 적절한 배율로 가져오는 가장 쉬운 방법은 개별 로그 값을 통해 값을 배율 조정하는 것입니다.

아래 예에서는 R 문서의 log() 함수에 있는 방대한 데이터 값을 스케일링했습니다.

예:

rm(list = ls())

data = c(1200,34567,3456,12,3456,0985,1211)
summary(data)
log_scale = log(as.data.frame(data))

산출:

         data
1	7.090077
2	10.450655
3	8.147867
4	2.484907
5	8.147867
6	6.892642
7	7.099202

2. R에서 최소-최대 스케일링으로 데이터 정규화

값을 정규화하는 또 다른 효율적인 방법은 Min-Max Scaling 방법을 사용하는 것입니다.

Min-Max Scaling을 사용하면 데이터 값의 범위를 0에서 1 사이로만 조정합니다. 이로 인해 데이터 값에 대한 이상값의 영향이 어느 정도 억제됩니다. 또한 데이터 척도의 표준 편차 값을 더 작게 만드는 데 도움이 됩니다.

아래 예에서는 'caret' 라이브러리를 사용하여 데이터를 사전 처리하고 확장했습니다. preProcess() 함수를 사용하면 method = c(range)를 인수로 사용하여 값을 0에서 1 범위로 조정할 수 있습니다. predict() 메서드는 아래와 같이 전체 데이터 프레임에 preProcess() 함수의 동작을 적용합니다.

예:

rm(list = ls())

data = c(1200,34567,3456,12,3456,0985,1211)
summary(data)
library(caret)
process <- preProcess(as.data.frame(data), method=c("range"))

norm_scale <- predict(process, as.data.frame(data))

산출:

           data
1	0.03437997
2	1.00000000
3	0.09966720
4	0.00000000
5	0.09966720
6	0.02815801
7	0.03469831

3. R에서 표준 스케일링으로 데이터 정규화

값의 표준화라고도 하는 표준 스케일링에서는 모든 변수의 전체 통계 요약이 평균값 0과 단위 분산 값을 갖도록 데이터 값을 스케일링합니다.

scale() 함수를 사용하면 데이터 값에 표준화를 적용할 수 있습니다.

rm(list = ls())

data = c(1200,34567,3456,12,3456,0985,1211)
summary(data)
scale_data <- as.data.frame(scale(data))

산출:

아래에서 볼 수 있듯이 스케일링 전 데이터 프레임의 평균 값은 6412입니다. 반면 값의 스케일링을 수행한 후 평균은 0으로 감소했습니다.

 Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
     12    1092    1211    6412    3456   34567	

            V1
1	-0.4175944
2	2.2556070
3	-0.2368546
4	-0.5127711
5	-0.2368546
6	-0.4348191
7	-0.4167131

           V1         
 Min.   :-0.5128  
 1st Qu.:-0.4262  
 Median :-0.4167  
 Mean   : 0.0000  
 3rd Qu.:-0.2369  
 Max.   : 2.2556  

결론

이상으로 이 주제를 마치겠습니다. 궁금한 점이 있으면 아래에 의견을 남겨주세요. R 프로그래밍과 관련된 더 많은 게시물을 보려면 계속 지켜봐 주세요!

그때까지 즐거운 배움!! :)

참조

  • R의 scale() - 문서