데이터 마트를 구성하는 요약변수와 파생변수를 알아보고 reshape 패키지를 활용하여 데이터마트를 생성해보자.
sqldf패키지와 plyr 패키지를 활용해 데이터를 핸들링하고, data.table 패키지를 이해하고 활용해보자.
모형을 개발
할 때 문제를 가장 잘 해석할 수 있는 변수
를 찾는 것은 모형 개발
에서 가장 중요한 핵심단계다.
요약변수
사칙연산
을 통해 만들어낸 변수파생변수
사용자의 노하우
를 기반으로 새롭게 만들어 낸 변수reshape
데이터 마트를 생성
할 수 있도록 데이터를 녹이고(melt)
다시 형상화(cast)
할 수 있는 R패키지분석용 마트 설계
에 활용sqldf
SAS
에서 SQL
을 활용할 수 있듯, R
에서도 SQL
을 사용하기 위한 패키지data.table
dataframe
과 같은 구조를 가지고 있으나 key
를 활용해서 훨씬 빠른 연산
가능데이터 마트
데이터 웨어하우스
와 사용자
사이의 중간층
에 위치하나의 주제
또는 하나의 부서 중심
의 데이터 웨어하우스
데이터 마트
내 대부분의 데이터
는 데이터 웨어하우스
로부터 복제
또는 자체적
으로 수집 가능관계형 데이터 베이스
나 다차원 데이터 베이스
를 이용하여 구축CRM
관련 업무 중 핵심-고객
데이터 마트 구축데이터 마트
를 어떻게 구축하느냐에 따라 분석 효과 차이
요약변수
수집된 정보
를 분석
에 맞게 종합한 변수
가장 기본적인 변수
총 구매 금액
, 금액
, 횟수
, 구매 여부
등 데이터 분석
을 위해 만들어지는 변수재활용성이 높음
간단한 구조
이므로 자동화
하여 상황에 맞게 일반적인 자동화 프로그램
으로 구축 가능
단점
: 얼마 이상
이면 구매하더라도 기준값의 의미 해석
이 애매
연속형 변수
를 그룹핑
해서 사용하면 좋음.파생변수
사용자(분석자)
가 특정 조건
을 만족
하거나 특정 함수
에 의해 값을 만들어 의미를 부여한 변수
주관적
일 수 있으므로 논리적 타당성
을 갖추어 개발세분화
, 고객행동 예측
, 캠페인 반응 예측
에 활용특정 상황
에만 유의미하지 않게
대표성을 나타나게
해야함reshape의 활용
melt()-원데이터 형태로 만드는 함수
와 cast()-요약 형태로 만드는 함수
라는 2개의 핵심 함수melt
를 이용해 airquality 데이터의 month, id를 기준으로 모든 데이터를 표준 형식
으로 변환변수
를 조합해 변수명
을 만들고, 변수들을 시간
,상품
등의 차원에 결합해 다양한 요약변수
와 파생변수
를 쉽게 생성하여 데이터마트
구성airquality data
melt함수 : 쉬운 casting을 위해 적당한 형태로 만들어주는 함수
melt(data,id=...)
cast 함수 : 데이터를 원하는 형태로 계산 또는 변형 시켜주는 함수
cast(data, formula=...~variable,fun)
cast(aqm,Day~Month~variable)
#Day : 행, Month : 열, variable : 값
R
에서 sql명령어
를 사용 가능하게 해주는 패키지SAS
에서 PROC SQL
과 같은 역할select * from [data frame]
sqldf("select * from [data frame]")
select * from [data frame] numrows 10
sqldf("select * from [data frame] limit 10")
select * from [data frame] where [col]='char%'
sqldf ("select * from [data frame] where [col] like 'char%'")
head([df]) :
sqldf("select * from [df] limit6")
subset([df],grep1("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")
iris
데이터 예시apply함수
에 기반해 데이터
와 출력변수
를 동시에 배열로 치환
하여 처리하는 패키지split-apply-combine
: 데이터를 분리
하고 처리
한 다음, 다시 결합
하는 등 필수적인 데이터 처리 기능 제공test.data
생성test.data
를 이용해 sd
와 mean
의 비율인 변동계수 CV
산출data.table
패키지는 R
에서 가장 많이 사용
하는 데이터 핸들링 패키지
큰 데이터
를 탐색, 연산, 병합
하는 데 아주 유용data.frame
보다 월등히 빠른 속도
Key
값으로 색인
을 지정한 후 데이터 처리빠른 그룹핑
과 Ordering
, 짧은 문장 지원
측면에서 데이터 프레임보다 유용rep(LETTERS, each=10000))
: 대문자 알파벳을 A부터 각각 10000번씩 출력rep(letters, each=10000))
: 소문자 알파벳을 a부터 각각 10000번씩출력데이터 분석
을 위해 구성된 데이터
의 변수
들의 상태 파악
종류
head(데이터셋)
, tail(데이터셋)
시작
또는 마지막 6개
record만 조회summary(데이터셋)
수치형 변수
: 최댓값
, 최솟값
, 평균
, 1사분위수
, 2사분위수(중앙값)
, 3사분위수
명목형 변수(변수 값이 고유한 순위가 없는 범주를 나타내는 경우. ex)성별(남,녀)/혈액형(AB,A,B,O)
: 명목값
, 데이터 개수
변수 선택법
과 유사한 개념모형
을 생성하여 사용된 변수
의 중요도
를 살피는 과정종류
klaR 패키지
특정 변수
가 주어졌을 때 클래스
가 어떻게 분류
되는지에 대한 에러율
을 계산해주고, 그래픽
으로 결과를 보여주는 기능greedy.wilks()
세분화
를 위한 stepwise forward 변수선택
을 위한 패키지종속변수
에 가장 영향력
을 미치는 변수를 wilks lambda
를 활용해 변수의 중요도 정리
(Wilk's Lambda
= 집단내분산/총분산
)*lda
: 선형판별분석
*x=iris[,4] : iris 데이터셋의 4번째 열인 Petal_width
연속형 변수
를 분석 목적
에 맞게 활용하기 위해 구간화
하여 모델링에 적용10진수 단위
로 구간화.5개
로 나누는 것이 보통, 7개 이상의 구간 잘 안 만듦신용평가모형
, 고객 세분화
와 같은 시스템
에서 모형에 활용하는 각 변수들을 구간화
해서 구간별
로 점수를 적용
하는 스코어링 방식
으로 활용구간화 방법
Binning
신용평가모형
의 개발에서 연속형 변수(부채비율)
를 범주형 변수
로 구간화하는데 활용연속형 변수
를 오름차순 정렬
후 각각 동일한 개수의 레코드를 50개
의 깡통(bin)
에 나누어 담고 각 깡통의 부실율
을 기준으로 병합해서 최종 5~7개
의 깡통으로 부실율의 역전이 생기지 않게 합치면서 구간화.의사결정나무
세분화
또는 예측
에 활용되는 의사결정나무 모형
을 사용하여 입력변수
를 구간화동일한 변수
를 여러 번의 분리 기준
으로 사용 가능하여, 연속 변수
가 반복적으로 선택
될 경우, 각각의 분리 기준값
으로 연속형 변수를 구간화
가능전체적
으로 데이터의 특징을 파악
하고 데이터를 다양한 각도
로 접근summary()
를 이용하여 데이터의 기초통계량
확인결측값
NA
, 99999999
, ' '(공백)
, Unknown
, Not Answer
등으로 표현시간을 많이 사용하는 것
은 비효율적
결측값 자체
가 의미있는 경우
존재가입자의 특성을 유추
하여 활용
결측값 처리
는 전체 작업속도
에 많은 영향
na.rm
을 이용해 NA 제거
단순 대치법(Simple Imputation)
Completes Analysis
결측값
이 존재하는 레코드 삭제
평균대치법(Mean Imputation)
관측
또는 실험
을 통해 얻어진 데이터의 평균
으로 대치비조건부 평균 대치법
: 관측데이터
의 평균
으로 대치조건부 평균 대치법(Regression Imputation)
: 회귀분석
을 활용한 대치법단순확률 대치법(Single Stochastic Imputation)
평균대치법
에서 추정량 표준 오차
의 과소 추정문제
를 보완하고자 고안된 방법Hot deck
방법, Nearest Neighbor
방법다중 대치법(Multiple Imputation)
단순대치법
을 한 번만
하지 않고 m번
의 대치를 통해 m개의 가상적 완전 자료
를 만드는 방법대치(Imputation Step)
분석(Analysis Step)
결합(Combination Step)
Amelia
time series cross sectional data set(여러 국가에서 매년 측정된 자료)
에서 Bootstrapping Based Algorithm
을 활용한 다중 대치법
complete.cases()
결측값이 있으면 FALSE
, 없으면 TRUE
is.na()
NA
로 인식하여 결측값이 있으면 TRUE
, 없으면 FALSE
DMwR 패키지
의 centralImputation()
NA 값
에 가운데 값(Central Value)
로 대치숫자
는 중위수
, 요인
은 최빈값
으로 대치DMwR 패키지
의 knnImputation()
NA값
을 KNN알고리즘
을 사용해 대치k개 주변 이웃까지 거리
를 고려해 가중 평균한 값
사용Amelia 패키지
의 amelia()
time series cross sectional data set(여러 국가에서 매년 측정된 자료)
에서 활용랜덤포레스트(Random Forest)
모델은 결측값 존재시 바로 에러
randomForest패키지
의 rfImpute() 함수
를 활용해 NA결측값
대치 후 알고리즘에 적용na.omit(데이터프레임)
이상값이란?
의도하지 않게 잘못 입력한 경우
(Bad Data
)분석 목적에 부합되지 않아
제거
해야하는 경우(Bad Data
)의도하지 않은 현상
이지만 분석에 포함해야 하는 경우
의도된 이상값(Fraud,불량)
인 경우분석의 목적
이나 종류
에 따라 적절한 판단 필요사기 탐지
, 의료(특정환자에게 보이는 예외적인 증세
), 네트워크 침입탐지
등이상값의 인식 방법
ESD(Extreme Studentized Deviation)
평균
으로부터 3 표준편차 떨어진 값
(각 0.15%
)99.7%
에서 0.3%
남으니 0.3%반은 각각 0.15%
기하평균-2.5x표준편차 < data < 기하평균+2.5x표준편차
기하평균=n√a1xa2x...xan
사분위수
이용해 제거(상자그림
의 outer fence
밖에 있는 값 제거)Q1-1.5(Q3-Q1)<data<Q3+1.5(Q3-Q1)
를 벗어나는 데이터IQR(Q3-Q1)
: 자료 집합의 50%
에 포함되는 자료의 산포도Q1
: 데이터 25%가 이 값보다 작거나 같음Q2
: 데이터의 절반(중앙값)Q3
: 데이터의 75%가 이 값보다 작거나 같음극단값 절단(Trimming) 방법
기하평균
을 이용한 제거geo_mean
하단, 상단 % 이용한 제거
10% 절단
(상하위 5%
데이터 제거)극단값 조정(Winsorizing) 방법
상한값
과 하한값
을 벗어나는 값들을 하한, 상한값
으로 바꾸어 활용상자수염그림
(Box Plot
을 통한 예시)IQR(182-160)
은 22
IQRx1.5
는 33
이며 160-33=127
이 하한선, 182+33=215
가 상한선, 이를 넘어갈 경우 이상점
항상 좋은 글 감사합니다.