본문 바로가기

DATA SCIENCE/ADSP

[ADsP] 3-3. 데이터 마트

1. R reshape를 이용한 데이터 마트 개발

  • 데이터 마트
    • 데이터웨어하우스(DW)와 사용자 사이의 중간층
    • 대부분 DW로부터 복제, but 자체 수집 가능, 관계형 DB나 다차원 DB 이용하여 구축
    • CRM 관련 업무 중 핵심
    • 요약변수
      - 수집된 정보 분석 맞게 종합
      - 재활용성 높음 (공통 사용 多 : 합계, 횟수 등)
      - 기간별 구매 금액, 횟수여부, 위클리 쇼퍼, 상품별 구매 금액 등
    • 파생변수
      - 특정 함수 의해 값 만들어 의미 부여 (매우 주관적)
      - 상황 따라 대표성 나타나게 할 필요 있음
    • reshape 활용
      - melt(data, id = ...) : 적당 형태로 만들어줌
      - cast(data, formula = ...~variable, func) : 원하는 형태로 계산, 변형
  • sqldf를 이용한 데이터 분석
    • R에서 sql 명령어 사용 패키지
      - sqldf("select * from [df] limit 10 where [col] like 'char%'")
head([df]) sqldf("select * from [df] limit 6")
subset([df], grepl("qn%", [col])) sqldf("select * from [df] where [col] like 'qn%'")
subset([df], [col] %in% c("BF","HF")) sqldf("select * from [df] where [col] in ('BF','HF')")
rbind([df1], [df2]) sqldf("select * from [df1] union all select * from [df2]")
merge([df1], [df2]) sqldf("select * from [df1], [df2]")
df[order([df]$[col], decreasing=T),] sqldf("select * from [df] order by [col] desc")
  • plyr를 이용한 데이터 분석
    • apply 함수 기반 데이터와 출력변수 동시에 배열로 치환
    • split - apply - combine : 데이터 분리하고 처리 후 다시 결합하는 필수적 데이터 처리기능 제공
  array data frame list nothing
array aaply adply alply a_ply
data frame daply ddply dlply d_ply
list laply ldply llply l_ply
n replicates raply rdply rlply r_ply
function arguments maply mdply mlply m_ply
  • 데이터 테이블
    • data frame보다 20배 더 빠름
    • library(data.table) 사용

2. 데이터 가공

  • Data Exploration
    • head() / summary() - 수치형(최대, 최소값, 평균, 1,2,3사분위수) / 명목형(명목값, 데이터개수)
  • 변수 중요도
    • 모형 생성하여 사용된 변수 중요도 살피는 과정
    • klaR 패키지 : 특정 변수 주어졌을 때 클래스 분류 에러율 계산, 그래프로 결과 보여줌
      - greedy.wilks() : 세분화 위한 stepwise forward 변수선택
    • wilk's lambda (= 집단 내 분산 / 총분산) 활용하여 변수 중요도 정리
    • plineplot() 이용 가능
  • 변수의 구간화
    • binning : 연속형 → 범주형
    • 의사결정나무 : 세분화, 예측에 활용 → 활용되는 입력변수 구간화

3. 기초 분석 및 데이터 관리

  • 데이터 EDA (탐색적 자료 분석)
    • 전체적 데이터 특징 파악, 다각도로 접근
    • summary() 이용하여 데이터 기초통계량 확인
  • 결측값 처리
    • NA, . , 99999999, ' ', Unknown, Not Answer 등으로 표현
    • 0으로 표현하면 안됨 : 결측값 자체가 의미있을수도
    • na.rm 이용해 NA 제거하고 계산 가능
  • 결측값 처리 방법
    • 단순 대치법
      - completes analysis : 결측치 레코드 제거
    • 평균대치법
      - 비조건부 : 데이터 평균으로 대치
      - 조건부 : 회귀분석 활용 대치법
    • 단순확률 대치법
      - 평균대치법의 추정량 표준 오차의 과소 추정문제 보완
      - hot-deck 방법, nearest-neighbor 방법
    • 다중 대치법
      - m번의 대치 통해 m개의 가상적 완전 자료로 만드는 방법
      - 대치 → 분석 → 결합
  • R에서 결측값 처리
    • 랜덤포레스트에서 결측값 있으면 바로 error 발생 -> randomForest의 rfImpute() 통해 NA 결측값 대치한 후 알고리즘 적용
    • complet.cases() : 결측값 있으면 FALSE , 없으면 TRUE
    • is.na() : 결측값이 NA인지 여부 반환
    • DMwR의 centralImputation() : NA값에 가운데값으로 대치 (숫자 - 중위수 / factor - 최빈값)
    • DMwR의 knnImputation() : NA값에 kNN 알고리즘으로 대치
    • Amelia의 amelia() : time-series-cross-sectional dataset
  • 이상값 찾기와 처리
    • 이상값
      - 의도치 않게 잘못 입력 or 분석 목적에 부합되지 않아 제거해야하는 경우
      - 의도치 않지만 분석에 포함해야하는 경우
      - 의도된 이상값(불량)인 경우
    • 이상값 인식 방법
      - ESD(Extreme Studentized Deviation) : 평균으로부터 3 표준편차 떨어진 값
      - 기하평균-2.5표준편차 < data < 기하평균+2.5표준편차
      - Q1-2.5(Q3-Q1) < data < Q3+2.5(Q3-Q1)
    • 극단값 절단 방법
      - 기하평균 이용 (geo_mean)
      - 하단, 상단 % 이용
    • 극단값 조정 방법
      - 상한값, 하한값 벗어나는 값들을 상한, 하한값으로 바꾸어 활용

 

출처 : ADsP 데이터 분석 준전문가 (윤종식 저)

반응형