데이터 마트를 구성하는 요약변수와 파생변수를 알아보고 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)Ameliatime 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)은 22IQRx1.5는 33이며 160-33=127이 하한선, 182+33=215가 상한선, 이를 넘어갈 경우 이상점
항상 좋은 글 감사합니다.