진박사의 일상

ADsP 3과목 - 2 본문

프로그래밍/ADsP

ADsP 3과목 - 2

진박사. 2021. 8. 10. 16:37

데이터 마트

 

1. 데이터마트(DM) : 데이터웨어하우스(DW)와 사용자 사이의 중간층에 위치한 것으로 하나의 주제나 부서 중심의 DW. 대부분은 DW로부터 복제되지만 자체 수집할수도 있으며 관계형 DB나 다차원 DB를 이용해 구축. CRM 관련 업무 중에서 가장 핵심(고객 데이터 마트 구축)

2. 요약변수 : 수집된 정보를 분석에 맞게 종합한 변수, DM의 가장 기본 변수로 총구매 금액, 금액, 횟수, 구매여부 등 데이터 분석을 위해 만들어지는 변수. 많은 모델에 공통으로 사용될 수 있어 재활용성이 높다. 자동화프로그램 구축 가능. 단점은 기준값의 의미 해석이 애매할 수 있다. 이럴땐 연속형 변수를 그루핑해서 사용.

예)기간별 구매 금액, 횟수 여수, 위클리 쇼퍼, 상품별 구매금액, 회수 여수, 상품별 구매 순석, 유통 채널별 구매 금액, 단어 빈도, 초기 행동 변수, 트렌드 변수, 결측값과 이상값 처리, 연속형 변수의 구간화

3. 파생변수 : 사용자가 특정 조건을 만족하거나 특정 함수에 의해 값을 만들어 의미를 부여한 변수. 주관적일 수 있으므로 논리적 타당성을 갖춰 개발해야 함. 세분화, 고객행동 예측, 캠페인 반응 예측에 활용.

예) 근무시간 구매지수, 주 구매 매장 변수, 주 활동 지역 변수, 주 구매상품 변수, 선호하는 가격대 변수, 시즌 선호고객 변수, 라이프 스테이지 변수, 라이프스타일 변수, 행사민감 변수, 휴면가망 변수, 최대가시 변수, 최적 통화 시간

 

 

4. reshape의 melt(), cast() 함수(***)

reshape - install("reshape") libarary(reshape) #cast의 경우 reshape2

melt() : 원 데이터 형태로 만드는 함수. 쉬운 casting을 위해 적당한 형태로 만들어 줌

melt(data, id.vars, na.rm=T) #data 기존 데이터, id.vars 식별할 컬럼, na.rm NA행을 포함시킬지 여부

ex) MD<-melt(airquality, id=c("month", "day"), na.rm=T)

# month와 day를 기준으로 나머지 변수를 variable이라는 이름의 데이터로 만든다.

  month day variable value

1 1       1    ozone    41.0

...

n A       B    변수N   값

#이렇게 만드는 이유 -> 여러 변수를 하나의 명목형 변수로 reshape하면 시각화 하기 편함

 

cast() : 요약 형태로 만드는 함수 

cast(data, (x축)~/+(y축)~/+(값),(함수)) <- ~ : with aggregation / + : without aggregation

ex)

cast(MD, day~month~variable) -> 가로축 day, 세로축 month인 variable 별 표

cast(MD, month~variable, mean, na.rm=T) -> 월별 variable별 평균값 #length는 개수

cast(MD, month~variable, mean, margins = c("grand_row", "grand_col"), na.rm=T) -> 월별 variable 평균값 + 소계

cast(MD, day~month,mean, subset=variable=="ozone") -> 특정변수(ozone)만 처리

cast(MD, month~variable, range, na.rm=T) -> min값에는 _X1, max값에는 _X2를 붙여준다.

 

간단한 요약 - Melt & Cast 함수를 이용한 데이터 재구조화 : 네이버 블로그 (naver.com)

 

Melt & Cast 함수를 이용한 데이터 재구조화

Melt() & cast() 함수는 보통 이 그림으로 이해한다. 한개의 라벨값을 녹여(?) 녹인 변수들을 다시 라...

blog.naver.com

 

5. sqldf() - R에서 SQL을 사용할 수 있게 하는 함수

 

6. plyr 패키지(***)

접두사(2글자) + ply() 함수 : 접두사 첫번째 - 입력 데이터 형태, 두번째 - 출력 데이터 형태

a : array, d : dataframe, l : list, r : n replicates, m : function arguments

ex) aaply(array->array), laply(list -> array)

 

ddply(데이터셋, .(group by 칼럼), ddply내부함수, 그룹함수)

summarise() : 데이터의 요약 정보를 새로운 변수에 만드는 함수

ex) ddply(d, .(year), summarise, mean.temp=mean(temp)) -> 월별 기온 평균 요약

   year mean.temp

1

2

transform() :연산 결과를 데이터 프레임의 새로운 칼럼에 저장하는 함수

ex) ddply(d, .(year), transform, mean.temp=mean(temp)) -> 원본데이터에 mean.temp 추가

  year count (...) mean.temp

1

2

주로 쓰는 adply(), ddply()

 

간단한 요약 - [R] plyr 패키지로 그룹(join) 연산 하기 - adply(), ddply() 함수 (tistory.com)

 

5. 데이터 테이블(data.table)

데이터 프레임과 유사하지만 보다 빠른 그룹화, 순서화, 짧은 문장 지원 측면 및 데이터 분석 속도에서 데이터 프레임보다 연산속도가 월등히 빠름. 큰 데이터를 탐색, 연산, 병합 하는데 유용.

 

6. 데이터 가공

(1)Data Exploration - 데이터의 변수 상태 파악

-종류 : head(), tail() - 상위 6개, 하위 6개 / summary() - 수치형변수 : 최대, 최소, 평균, 1사분위수, 중앙값, 3사분위수 / 명목형변수 : 명목값, 데이터 개수

(2) 변수 중요도 - 모형을 생성해 변수의 중요도를 파악 -종류 : klaR패키지

(3) 변수 구간화 - 연속형 변수를 분석 목적에 맞게 활용하기 위해 구간화 하여 모델링에 적용

-구간화 방법 : binning(신용 평가 모형 개발시 연속형 변수를 범주형으로 구간화 하는데 활용), 의사결정트리(세분화 또는 예측에 활용되는 의사결정트리로 입력 변수 구간화 가능)

 

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

(1) 데이터 EDA - summary() 함수 이용

(2) 결측값 인식 - NA, (공백), 무응답 등

(3) 결측값 대치법(**)

단순 대치법(Single Imputation)

--1) 완전한 응답 개체 분석(Complete Analysis) : 불완전 자료는 무시하고 완전히 관측된 자료만으로 분석. 쉽지만 부분적 관측 자료를 무시하므로 효율성 상실과 통계적 추론의 타당성 문제 발생

--2) 평균 대치법(Mean Imputation) : 관측 값의 평균값으로 대치. 비조건부는 관측 데이터 평균으로, 조건부는 회기분석을 활용

--3) 단순 확률 대치법(Single Stochastic Imputation) : 평균대치법에서 추정량 표준 오차의 과소 추정 문제를 보안하고자 고안된 방법으로 Hot-deck, NearestNeighbor 등의 방법이 있다. 

다중대치법(Multiple Imputation)

-단순 대치법을 m번의 대치를 통해 m개의 가상적 완전 자료를 만드는 방법(단계 : 대치->분석->결합) 통계적 추론에 사용된 통계량의 효율성 및 일치성 문제를 부분적 보완, 추정량 오차의 과소추정과 계산의 난해성 문제

(4) R 결측값 처리 관련 함수

complete.cases() - 결측값 존재시 FALSE, 없으면 TRUE

is.na() - 결측값이 있으면 TRUE, 없으면 FALSE

DMwR패키지의 centralImputation() - NA값을 가운데값으로 대치, 숫자는 중위수, 요인은 최빈값으로

DMwR패키지의 knnImputation() : k 이웃 분류 알고리즘 사용

Amelia패키지의 amelia() : time-series-cross-sectional data set에서 활용. randomForest 활용

(5) 이상값 검색 및 처리(**)

-이상값 : (1)의도차 않게 잘못 입력(Bad data), 분석 목적에 부합되지 않아 제거해야 함(Bad data), 의도하지 않은 현상이지만 분석에 포함해야 하는 경우(이상값), 의도된 이상값(fraud, 불량) / 꼭 제거해야만 하는 것은 아니지만 분석 목적에 따라 다름

- 인식 방법 : ESD(Extreme Studentized Deviation) - 평균으로부터 3 표준편차 떨어진 값(0.15%), outlier 패키지 이용, 기하 평균, 사분위수 이용(상자 그림의 outer fence 밖의 값)

- 극단값 절단/조정 : 기하평균 이용 제거(geo_mean), 하단 상단 % 제거, 상한값과 하한 값을 벗어나는 값을 산한, 하한 값으로 바꿔 활용

 

 

'프로그래밍 > ADsP' 카테고리의 다른 글

ADsP 3과목 - 4  (0) 2021.08.24
ADsP 3과목 - 3  (0) 2021.08.22
ADsP 3과목 - 1  (0) 2021.08.08
ADsP 2과목 정리(마지막)  (0) 2021.08.06
[TIL] 21.08.03 - ADsP 공부  (0) 2021.08.03