데이터 정제

ddoddo·2023년 1월 3일
0

데이터분석 with R

목록 보기
3/21

결측치(NA)

데이터를 다루다보면 다양한 이유로 데이터가 잘못 입력되거나 저장이 안 되는 경우가 있다. 이런 값이 없는 데이터를 결측치(NA)라고 한다. 데이터 정제 단계에서는 결측치를 제거하거나 대체해야 한다.

결측치 제외

데이터의 첫 행은 데이터가 아닌 열 이름이기 때문에 header=TRUE를 해준다.

# 데이터 불러오기
air <- read.csv('ch3-1.csv', header=TRUE)

데이터 일부에 값이 누락되어 있음을 확인할 수 있다. 결측치는 자동으로 NA로 표시되어 있다.

결측치 NA가 포함된 행을 제거하기 위해서는 na.omit()함수를 사용한다.

# 결측치 제거
air_d <- na.omit(air)

중앙값으로 대체

결측치를 제외하지 않고 중앙값으로 대체해보자. 중앙값은 데이터를 크기순으로 나열했을 때 가장 중앙에 위치한 값으로 평균과는 의미가 다르다.

  • 평균 : 이상치에 영향을 받으므로 전체를 대표할 때 왜곡될 수 있다.
  • 중앙값 : 평균에 비해 이상치에 영향을 덜 받는다.

DMwR1라는 패키지를 이용하여 결측치를 중앙값으로 대체할 수 있다.

# 패키지 설치 및 실행
install.packages('DMwR2')
library('DMwR2')

PM10과 PM25의 결측치를 대체하기 전 중앙값을 계산해본다.

median(air$PM10, na.rm=TRUE)  # 25
median(air$PM25, na.rm=TRUE)  # 13

DMwR2 패키지의 centralInputation() 함수를 사용하여 결측치를 중앙값으로 대체한다. 앞서 계산한 중앙값으로 대체되었음을 확인할 수 있다.

# 결측치 대체
air_c <- centralImputation(air)

# 결측치 대체 전
> air[14:16,]
       MMDDHH PM10 PM25    O3  NO2  CO   SO2
14 2006-01-14   NA   NA    NA   NA  NA    NA
15 2006-01-15   NA   NA    NA   NA  NA    NA
16 2006-01-16   NA   NA 0.038 0.02 0.4 0.003

# 결측치 대체 후
> air_c[14:16,]
       MMDDHH PM10 PM25     O3    NO2   CO   SO2
14 2006-01-14   25   13 0.0395 0.0155 0.35 0.003
15 2006-01-15   25   13 0.0395 0.0155 0.35 0.003
16 2006-01-16   25   13 0.0380 0.0200 0.40 0.003

인접값 가중 평균으로 대체(K-NN)

결측치를 중앙값이 아닌 K-NNN(최근접 이웃) 알고리즘을 이용한 값으로 대체할 수 있다. K-NN 알고리즘은 회귀와 분류 문제 모두에 적용할 수 있는 알고리즘으로 회귀 문제에서는 k개의 인접 이웃 값의 가중 평균으로 값을 예측한다.

K-NN 알고리즘으로 결측치를 대체하기 위해서는 knnImputation() 함수를 사용해야 한다. 해당 함수를 사용할 경우 데이터 셋이 문자가 존재하면 오류가 발생하기 때문에 숫자만을 담은 데이터셋을 생성해준다.

# 숫자 데이터셋
air_k <- air[, -1]  # air[, 2:7]와 같다.

# 결측치 대체
air_knn <- knnImputation(air_k)

# K-NN 알고리즘
> air_knn[14:16,]
       PM10     PM25     O3    NO2   CO    SO2
14 19.70000 12.60000 0.0385 0.0117 0.32 0.0024
15 19.70000 12.60000 0.0385 0.0117 0.32 0.0024

# 중앙값
> air_c[14:16,]
       MMDDHH PM10 PM25     O3    NO2   CO   SO2
14 2006-01-14   25   13 0.0395 0.0155 0.35 0.003
15 2006-01-15   25   13 0.0395 0.0155 0.35 0.003
16 2006-01-16   25   13 0.0380 0.0200 0.40 0.003

K-NN 알고리즘을 사용한 결측치 대체와 중앙값을 사용한 대체의 값이 서로 다른 걸 확인할 수 있다. 결측치를 처리하는 방법은 이외에도 다양한 방법들이 있으며 도메인 지식에 따라 결측치 값을 대체하는 것도 무방하다. 결측치 대체 방법이 데이터 분석 결과에 영향을 미치기 때문에 다양한 방법을 시도해 보는 것이 중요하다.


이상치(Outlier)

이상치는 다른 데이터와 동떨어진 데이터를 의미한다. 이상치에 대한 기준은 정하기 나름이며 일반적으로 상자그림(Boxplot)을 이용해 이상치를 정의하거나 데이터 분포를 확인할 수 있는 히스토그램을 이용해 평균-n*표준편차, 평균+n*표준편차의 범위를 벗어나면 이상치로 정의한다.


스케일링(Scaling)

스케일링은 서로 다른 변수 간의 단위로 인한 값 차이가 클 경우 변수가 영향이 있음에도 불구하고 크기로 인해 영향이 없는 것처럼 왜곡될 수 있는 문제를 해결하기 위해 사용하는 방법이다.

  • Standard Scaling : 평균을 0, 표준편차를 1로 변환한다.
  • MinMax Scaling : 하한값을 0, 상한값을 1로 변환한다.
  • Robust Scaling : 중앙값과 사분위수를 이용해 변환한다.

0개의 댓글