본문 바로가기
## 오래된 게시글 (미관리) ##/R

33. 데이터마트

by #Glacier 2018. 11. 22.

안녕하세요. 오늘은 데이터마트에 대해 알아보고자 합니다.


데이터마트의 중요한 부분 중 하나인 요약변수와 파생변수의 구분에 대해 알아볼까요??

모형을 개발할 때 문제를 가장 잘 해석할 수 있는 변수를 찾는 것이 중요하다는 것은 알고 계실테죠~!


그래서 


데이터를 특정 기준에 따라 사칙연산을 통해 만들어 낸 변수가 요약변수이고, 

사용자의 노하우를 기반으로 새롭게 만들어 낸 변수가 파생변수입니다.

또 하나 알아볼 점은 Reshape 패키지 입니다. 이 패키지의 melt, cast() 함수는 아시는 분은 아실거라 생각합니다.


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


​데이터마트란 데이터 웨어하우스와 사용자 사이의 중간층에 위치한 것으로, 하나의 주제 또는 하나의 부서 중심의 데이터 웨어하우스라고 할 수 있습니다.

데이터 마트 내 대부분의 데이터는 데이터 웨어하우스로부터 복제되지만, 자체적으로 수집될 수도 있으며, 관계형 데이터베이스나 다차원 데이터베이스를 이용하여

구축합니다. (출처 : 컴퓨터인터넷IT용어대사전)

CRM(customer relationship management) 관련 업무 중에서 핵심 = 고객 데이터 마트 구축.

동일한 데이터 셋일 경우, 최신 분석기법을 사용하면 분석가의 역량에서는 분석효과가 크게 차이나지 않지만, 데이터 마트를 어떻게 구축하냐에 따라 분석 효과는

크게 달라질 수 있다고 합니다.


 1) 요약변수

 - 수집된 정보를 분석에 맞게 종합한 변수이다.

 - 데이터 마트에서 가장 기본적인 변수로, 총구매 금액, 금액, 횟수, 구매여부 등 데이터 분석을 위해 만들어 지는 변수이다.

 - 많은 모델을 공통으로 사용될 수 있어 재활용성이 높다.

 - 합계 , 횟수와 같이 간단한 구조이므로 자동화하여 상황에 맞게 또는 일반적인 자동화 프로그램으로 구축이 가능하다.

 - 요약변수의 단점은 얼마 이상이면 구매하더라도 기준값의 의미 해석이 애매할 수 있다. 이러한 경우, 연속형 변수를 그룹핑해 사용하는 것이 좋다.


 요약변수 예시 : 기간별 구매금액, 횟수, 상품별 구매 금액, 횟수, 상품별 구매 순서, 유통채널 별 구매 금액, 단어 빈도, 초기 행동변수, 트렌드 변수 등


 2) 파생변수

 - 사용자가 특정 조건을 만족하거나 특정 함수에 의해 값을 만들어 의미를 부여한 변수

 - 매우 주관적일 수 있으므로 논리적 타당성을 갖추어 개발하여야 한다.

 - 세분화, 고객행동 예측, 캠페인 반응 예측에 매우 잘 활용된다.

 - 파생변수는 상황에 따라 특정 상황에만 유의미하지 않게 대표성을 나타나게 할 필요가 있다.

 

 파생변수 예시 : 근무시간 구매지수, 주 구매 매장 변수, 주 활동 지역 변수, 주 구매상품 변수, 구매상품 다양성 변수, 시즌 선호고객 변수, 라이프 스테이지 변수 등


 3) reshape의 활용

 - reshape 패키지에는 melt()와 cast()라는 2개의 핵심 함수가 있다.

 - 녹이는 함수 melt(), 모양을 만드는 함수 cast()
 - airquality 데이터를 가지고 간단하게 해보겠습니다..


data(airquality)
airquality

install.packages("reshape")
library(reshape)

# 패키지를 설치해 준 후, head()함수로 한번 봅니다. 어떤 열변수가 있는지 봐야겠죠.


head(airquality)


  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6


오존... 등 여러가지 변수들이 있네요. melt를 써볼까요?


aqm<-melt(airquality, id=c("Month", "Day"), na.rm=T)


    Month Day variable value
1       5   1    Ozone  41.0
2       5   2    Ozone  36.0
3       5   3    Ozone  12.0
4       5   4    Ozone  18.0

565     9  27     Temp  77.0
566     9  28     Temp  75.0
567     9  29     Temp  76.0
568     9  30     Temp  68.0

이런식으로, Month, Day기준으로 형태가 정리되는 것을 보실 수 있습니다.


cast(aqm, Day~Month~variable)


, , variable = Ozone

    Month
Day    5  6   7   8  9
  1   41 NA 135  39 96
  2   36 NA  49   9 78
  3   12 NA  32  16 73
  4   18 NA  NA  78 91


이런식으로 X축은 월, Y축은 일로 각 변수별로 볼 수 도 있습니다. 원하는 형태로 변형해서 쓰기 좋겠죠.
단, cast() 함수를 쓸 때에는, melt 된 데이터여야 하나 봅니다.
그래서 저도 오류가 나서, aqm이라는 변수에 melt 결과물을 집어넣었죠.
그리고 대소문자 구분 잘해주셔야 합니다 ^^