데이터 마트 개념 및 활용
1. 데이터 마트란?
데이터 마트는 데이터 웨어하우스와 최종 사용자 사이의 중간층에 위치하는 데이터 저장소이다. 특정 주제나 부서별 분석을 위해 데이터를 가공하여 저장하며, 재사용성이 높다는 특징을 가진다.
2. 요약 변수와 파생 변수
- 요약 변수: 총 구매 금액, 구매 횟수, 구매 여부 등 특정 분석 목적에 맞게 종합한 값이다.
- 파생 변수: 특정 조건이나 함수를 기반으로 새롭게 생성된 변수로, 논리적 타당성이 중요하다.
R을 활용한 데이터 마트 개발
1. reshape을 활용한 데이터 재구성
reshape는 데이터를 재정렬하는 기법 중 하나이며, 엑셀의 피벗 테이블 기능과 유사하다. reshape를 활용하면 원본 데이터를 손실하지 않으면서도 유연한 변형이 가능하다.
- melt() 함수: 데이터를 세로로 길게 변환하여 보다 유연한 분석이 가능하도록 한다.
- cast() 함수: melt된 데이터를 다시 요약된 형태로 변환하는 함수로, 피벗 테이블과 유사하게 사용할 수 있다.
library(reshape)
# 데이터 컬럼명을 소문자로 변환
names(airquality) <- tolower(names(airquality))
# month, day 기준으로 데이터를 녹임
aqm <- melt(airquality, id=c("month","day"), na.rm = TRUE)
# 데이터를 cast하여 피벗 테이블처럼 변환
a <- cast(aqm, day~month~variable)
# 평균값을 적용하여 월별 데이터 요약
b <- cast(aqm, month~variable, mean)
2. R에서 SQL 사용 (sqldf)
R에서는 sqldf 패키지를 활용하여 SQL 문법을 그대로 사용할 수 있다.
library(sqldf)
# iris 데이터에서 처음 10개 행 조회
sqldf("SELECT * FROM iris LIMIT 10")
3. plyr을 활용한 데이터 처리
plyr 패키지는 데이터를 분할하고, 처리한 후 다시 결합하는 작업을 간단하고 빠르게 수행할 수 있도록 도와준다.
- ddply(): 데이터 프레임을 그룹별로 분리하고 요약 통계를 계산할 때 유용하다.
- summarise 옵션: 평균, 합계 등의 값을 계산하여 출력한다.
- transform 옵션: 기존 변수와 함께 변환된 변수를 포함하여 출력한다.
library(plyr)
# 연도별 변동계수(cv) 계산
ddply(d, "year", function(x){
mean.count <- mean(x$count)
sd.count <- sd(x$count)
cv <- sd.count / mean.count
data.frame(cv.count = cv)
})
4. 데이터 테이블 (data.table) 활용
data.table은 data.frame과 유사하지만, 속도가 월등히 빠르고 데이터 탐색 및 병합 작업에 최적화되어 있다.
library(data.table)
# 데이터 테이블 생성
DT <- data.table(x=c("b","b","b","a","a"), v=rnorm(5))
# 기존 데이터 프레임을 데이터 테이블로 변환
CARS <- data.table(cars)
데이터 가공 및 분석 기법
1. 변수 구간화
- 바이닝(Binning): 연속형 변수를 범주형 변수로 변환하는 기법이다.
- 의사결정나무 기반 구간화: 의사결정나무의 분리 기준을 활용하여 변수의 구간을 설정할 수 있다.
2. 결측값 처리 방법
- 단순 대치법: 특정 값(평균, 중앙값 등)으로 결측값을 대체한다.
- 확률 대치법: 단순 대치법의 한계를 보완하여 적절한 확률값을 부여한다.
- 다중 대치법: 여러 개의 대치 데이터를 생성하여 분석을 수행하고 결과를 결합한다.
3. 이상값 탐지 기법
- ESD (Extreme Studentized Deviate Test): 이상값을 통계적으로 검출하는 기법이다.
- 기하평균을 활용한 방법:
- 기하평균 - 2.5 * 표준편차 < 데이터 < 기하평균 + 2.5 * 표준편차
- 사분위수를 이용한 방법:
- Q1 - 1.5 * IQR < 데이터 < Q3 + 1.5 * IQR
4. 극단값 처리 방법
- 기하평균을 이용한 제거
- 하단 및 상단 특정 백분위수 값 제거
- 상한값과 하한값을 설정하고 벗어나는 값들을 대체
이와 같이 R을 활용하면 데이터 마트를 효과적으로 구축하고 분석할 수 있다. reshape, sqldf, plyr, data.table 등의 패키지를 적절히 활용하면 데이터 처리 속도를 높이고 효율적으로 가공할 수 있다.