본문 바로가기
Certificate/ADSP

[ADSP] 3과목 1-3장. 데이터 분석, R, 데이터마트

by Istj_eff 2022. 10. 9.

1장. 데이터 분석

1. 데이터 처리

  • 데이터 분석은 통계에 기반을 두고 있지만, 통계지식과 복잡한 가정이 상대적으로 적은 실용적인 분야이다.
  • 데이터웨어하우스(DW)와 데이터마트(DM)을 통해 분석 데이터를 가져와서 사용한다.
  • 그 외, 기존 운영시스템(Legacy)이나 스테이징 영역(staging area)과 ODS(Operational Data Store)에서 데이터를 가져와서 DW에서 가져온 내용과 결합하여 활용
  • 가급적 클린징 영역인 ODS에서 데이터 전처리 후 DW나 DM과 결합

  • legacy : 예전부터 사용해오던 기술, 소프트웨어 등을 뜻한다. 이들은 새로운 것으로 대체가 가능하다.
  • ER : 데이터 모델 중 하나.
  • staging : 데이터 원천에서 받아들인 데이터를 확인. 어떠한 데이터가 저장됬는지 확인하는 구간. 아무런 변화 작업을 실행하지 않는다.
  • ODS : 데이터에 대한 품질을 테스트. 부족한 점이 있다면 cleaning 작업을 실시.(데이터 전처리)
  • DW : DW에 한번 쓰면 수정이 불가능하다. 읽기만 가능. 테이블 형태로 계속 축적한다.
  • Data mart : 예를 들자면, 한 부서에서의 데이터 웨어하우스를 뜻한다. 특정 부서의 목적에 필요한 데이터를 DW에서 추출하여 쌓아둔다.

 

2. 시각화

  • 시각화는 가장 낮은 수준의 분석이지만. 잘만하면 복잡한 분석보다 더 효율적이다.
  • 빅데이터분석, 탐색적 분석에서 시각화는 필수
  • SNA분석(사회연결망 분석)할 때 자주 활용된다,

# 공간분석(GIS) :  크기, 모양, 선 굵기 등으로 구분

 

 

3. 탐색적 자료 분석(EDA)

  • 데이터에 대한 전반적인 이해를 통해 분석가능한 데이터인지 확인하는 단계
  • 특이한 점이나 의미있는 사실을 도출하고 분석의 최종 목적을 달성해가는 과정
  • 다양한 차원과 값을 조합해서 특이한점이나 의미있는 사실 도출
  • 알고리즘이 학습을 얼마나 잘 하느냐는 것은 전적으로 데이터의 품질과 데이터에 담긴 정보량에 달려있다.
  • 4가지 주제 ★ : 저항성의 강조, 잔차 계산, 자료변수의 재표현, 그래프를 통한 현시성 (종속변수계산 아님!!!)

 

4. 통계분석

  • 어떤 현상을 종합적으로 한눈에 알아보기 쉽게 일정한 체계에 따라 숫자,표,그림으로 나타내는 것
  • 기술 통계(descriptove statistics) : 모집단으로 표본 추출, 표본의 정보 파악을 위해
  • 데이터 정리, 요약하기 위해 하나의 숫자 또는 그래프 형태로 표현하는 절차
  • 추측(추론)통계(inferential statistics) : 모집단으로부터 추출된 표본통계량으로부터 모집단의 특성인 모수에 관해 통계적으로 추론하는 절차 ★

 

5. 데이터마이닝

: 대표적인 고급분석데이터에 있는 패턴을 파악해 예측. 데이터가 크고  정보가 다양할수록 활용하기 유리한 분석

  • 모든 사용가능한 원천 데이터를 기반으로 감춰진 지식, 기대못했던 경향, 새로운 규칙을 발견하고, 이를 실제 비즈니스 의사결정 등에 유용한 정보로 활용하는 일련의 작업
  • 데이터마이닝 모델링은 통계적 모델링이 아니므로 지나치게 통계적 가설이나 유의성에 집착하지말아야 한다.
  • 데이터를 학습 및 테스트 데이터로 6:4, 7:3, 8:2비율로 상황에 맞게 실시한다.
  • 훈련 및 테스트 성능에 큰 편차가 없고 예상 성능을 만족하면 중단한다. (반드시 다양한 옵션 수행하지않아도 됨)

 

5-1. 데이터마이닝의 평가 기준 (정 정 디 리) 영어도 외우기

정확도(Accuracy)

정밀도(Precision)

디텍트 레이트(Detect Rate)

리프트(Lift)

(Throughput 아님!)

 

 

5-2. 데이터 마이닝 5단계

(1) 목적정의 : 데이터마이닝 목적 명확하게 함

(2) 데이터 준비 : 데이터 정제(cleaning)을 통해 품질 확보. 필요시 데이터 양 확보

(3) 데이터 가공 : 목적변수 정의, 필요한 데이터를 데이터 마이닝 소프트웨어에 적용할 수 있게 가공 및 준비.

                                충분한 CPU와 메모리, 디스크 공간 등 환경구축

(4) 데이터 마이닝 기법 적용 : 모델을 목적에 맞게 선택. 소프트웨어 필요한 값 지정

(5) 검증

 

5-3. 데이터 마이닝 기법

분류(Classification) 새롭게 나타난 현상 검토. 기존의 분류, 정의된 집합에 배정
의사결정나무, memory-based reasoning
추정(Estimation) 주어진 입력 데이터 사용. 알려지지 않은 결과값 추정.
연속된 변수값 추정, 신경망 모형
연관분석(Association) 같이 팔리는 물건’같이 아이템 연관성 파악. 카탈로그 배열 및 교차판매,물건배치, 공격적 판촉행사 등의 마케팅 계획
예측(Prediction) 미래 예측,추정하는 것을 제외하면 분류나 추정과 동일.
장바구니 분석, 의사결정나무, 신경망모형
군집(Clustering) 미리 정의된 기준,예시가 아닌 레코드 자체가 가진 다른것과의 유사성에 의해 그룹화되고 이질적인 모집단 세분화
데이터마이닝이나 모델링 준비단계에서 사용
기술(Description) 데이터가 가진 특징 및 의미를 단순하게 설명하는 것 ★
데이터가 암시하는 바에 대해 설명, 답을 찾아낼 수 있어야함
사람, 상품에 관한 이해를 증가시키기 위한 것으로 데이터의 특징 및 의미를 표현 및 설명

 


2장. R

1. R

  • R은 오픈소스 프로그램으로 통계, 데이터마이닝을 위한 언어 (윈도우, 맥, 리눅스OS)
  • 객체 지향 언어이며 함수형 언어로서 자동화가 가능하다. ★
  • 벡터의 원소 중 하나라도 문자가 있으면 모든 원소의 자료형은 문자 형태로 변환된다. ★
행렬 a <- matrix(data,행수,열수) 차원 dim(a)
대각 diag(a) 전치 t(a)
solve(matrix) 행렬곱 a %*% t(a)
행이름 rownames(a) <- c(“이름1”) 열 이름 colnames(a) <- c(“이름1”)
연산 f+f, f-f, f+1, f%*%f, f*3 ,열 선택 vec <- matrix[1,]or [,3]

 

2. summary() 

연속형 변수 : 1사분위수, 3사분위수, 최소값, 최대값, 중앙값, 평균 등을 출력

범주형 변수 : 각 범주 빈도수 출력. 범주별 데이터 개수 콜론으로 구분, 데이터 분포 파악

1st Qu = 하위 25% 데이터, Median Qu =50% 데이터, 3rd Qu = 75% 데이터를 의미

 

 

3. 연산자

&, && 논리 AND |, || 논리 OR
~ (formula) ! 논리부정 ex) !0 > TRUE
%any% 특수 연산자 %/%()
%%(나머지), %*%(행렬곱)
c() 벡터생성
ex) v <- c(1,2,3)
rm() 변수 삭제 rm(list=ls()) 모든 변수 삭제 V[n] 선택하고자 하는 자리수
(n은 자리수,V는 벡터)
paste() 문자 붙이기 A<-paste('a','b',sep='-') rep() 반복 ex) rep(1,time=5)
seq() seq(10,50,10) > 10 20 30 40 50 출력
  • 숫자에 비교연산자를 붙이면 논리형으로 반환됨 (TRUE,FALSE)
  • ex) x <- 1:100 sum(x>50) > 50 (TRUE=51~100, 총 50)
  • 표준편차 sd() 함수 = sqrt(var()) = var()^(1/2)   (stdev아님!!)

 

4. 패키지 

  1. plyr패키지는 데이터의 분리, 결합 등 필수적인 데이터 처리 기능 제공,
    • apply함수에 기반.
    • split-apply-combine : 데이터 분리,처리,다시 결합하는 기능 제공
    • ddply함수 제공
  2. data.table 패키지는 큰 데이터를 탐색, 연산, 병합하는데 유용하고 가장많이 사용한다.
    • 빠른 그루핑과 ordering
    • 짧은 문장 지원측면에서 데이터프레임보다 유용
  3. sqldf 패키지는 표준SQL 명령을 실행하고 결과를 가져옴. SAS의 proc sql 같은 역할

★ install.packages("패키지명“) → library(패키지명) 

 

5. reshape 패키지 - melt(), cast() 함수 이용 

 

6. 데이터 프레임과 데이터 구조 

(1) 벡터(Vector) - 1D

하나 이상의 스칼라(=길이가 1인 벡터) 원소들을 갖는 단순한 집합 

  • 벡터는 동질적 : 동일한 자료형을 갖는 값들의 집합으로 하나의 열(column)로 구성됨
  • 숫자, 문자, 논리형 데이터를 원소(element)로 사용할 수 있다.
  • 벡터 원소들은 이름을 가질 수 있다.
  • 벡터 생성 함수 : c(val1, val2,..) seq(from,to,by)(동일 = n:n),  rep(x,time,each)

(2) 행렬(matrix) - 2D

  • R에서 차원을 가진 벡터이며, 텍스트마이닝과 소셜네트워크 분석 등에 활용

 

(3) 리스트(List) - 2D 이상

  • 리스트는 이질적이다. : 여러 자료형의 원소들이 포함될 수 있다.
  • 리스트는 위치로 인덱스됨. 하위 리스트를 추출할 수 있다. 원소들은 이름을 가질 수 있음
  • 리스트 생성 함수 : list(x,y,z), L <- list(val1=data, val2=data,..)
  • 리스트 선택 : L[[n]]
  • 리스트에서 원소 제거 : L[["name"]]<-NULL
행렬 a <- matrix(data,행수,열수) 차원 dim(a)
대각 diag(a) 전치 t(a)
solve(matrix) 행렬곱 a %*% t(a)
행이름 rownames(a) <- c(“이름1”) 열 이름 colnames(a) <- c(“이름1”)
연산 f+f, f-f, f+1, f%*%f, f*3 ,열 선택 vec <- matrix[1,]or [,3]

 

(4) 데이터프레임(Data frame)  - 2D

  • 표 형태의 구조이며, 각 열은 서로 다른 데이터 형식을 가질 수 있다. ★★
  • 데이터프레임 리스트의 원소는 벡터, 요인(factors)이다. (벡터, 요인 = 데이터 프레임의 열)
  • 벡터와 요인들은 동일한 길이이다.
  • 메모리상에서 구동된다.
  • 열에는 이름이 있어야하며, 각각의 열에 대해 문자형인지 수치형인지 자동적으로 구분된다.
  • 테이블로 된 데이터 구조이지만, 행렬이 아닌 리스트 구조로 표현된다.
결합 newdata  rbind(data, row) 
결합↓ newdata  cbind(data, col) 
조회 df[df$gender="m"]   (데이터셋내 성별 남성만 조회)
df[df$변수1>4 & df$변수2>5, c(변수3)]   (변수1,2 조건을 만족하는 변수3 조회)
df[grep("문자“,df$변수1,ignore.case=T),c(”변수2“)   (변수1 문자있는 변수2조회)
셋 조회 subset(df, select=변수, subset=변수>조건)
ex) 경영학 학생 성적만 조회 subset(df, subset=(학과==“경영학”))
병합 merge(df1, df2, by="공통 열이름“)
열 이름 조회 colnames(변수) colnames(df) <- newnames (열 이름 변경)
NA행 삭제 NA_cleaning <- na.omit(df)

 

(5) 문자열, 날짜 다루기

문자열 길이 nchar("단어") 
날짜 객체로 변환 as.Date( )
format(Sys.Date(), format=%m%d%y)
ex)'2019-08-23' > as.Data('08/23/2019','%m/%d/%Y') 
문자열을 Date객체로 변환 as.Date(string, format=) 

 

(6) 데이터타입 확인

  • is.numeric() : 수치형 확인
  • is.integer() : 정수형 확인
  • is.double() : 실수형 확인
  • is.character() : 문자형 확인
  • is.logical() : 논리형 확인
  • is.complex() : 복소수형 확인
  • is.null() : NULL확인
  • is.na() : NA확인. 있으면 TRUE, 없으면 FALSE 반환
  • complete.cases() : 결측값이 있으면 FALSE, 없으면 TRUE 반환

 

(7) 데이터 구조 변경 (as)

내용에 접근 with(df, expr)
attach(df)
detach(df)
자료형 변환 as.character()  숫자를 문자로 변환

as.complex()  복소수형 변환

as.integer()
 ★ lvel 위치를 숫자로 변환 ex) as.interger(3, 14) > 3


as.numeric() 또는 as.double ★ 수치형으로 변환 ex) as.numeric(FALSE)의 값은 0

as.logical()  논리형으로 변환 ex) as.logical(0, 45)의 값은 TRUE

 

(8) 데이터 변형

벡터를 집단으로 분할 groups <- split(v,f)
리스트 각 원소 함수 적용 lapply(결과를 리스트 형태로 반환) list <- lapply(l, func)
행렬에 함수 적용 m <- apply(mat, 1, func)
df에 함수 적용 df <- lapply(df,func)
대용량 데이터 함수 적용 cors <- sapply(df, cor, y=targetVariable)

 

(9) 데이터 구조 및 자료형 변환 (as)

벡터 → 리스트 as.list(vector)
벡터 → 행렬 1열짜리 행렬: cbind(vector) 또는 as.matrix(vector)
1행짜리 행렬: rbind(vector) ★
n * m 행렬: matrix(vector, n, m) or
matrix(vec, ncol=, byrow=T) (열 몇 개, 행 기준)
행렬 → 벡터 as.vector(matrix)행렬을 as.vector 함수에 입력하면 열 방향으로 1열부터
차례로 원소를 나열하는 벡터가 생성된다. (행 방향 아님!!!)
행렬 → 데이터 프레임 as.data.frane(mat)
리스트 → 벡터 unlist(lst)
데이터 프레임 → 벡터 1열짜리 데이터 프레임 : df[[1]] or df[,1]
1행짜리 데이터 프레임 : df[1,]

 

 


3장. 데이터마트

1. 데이터 마트

  • 데이터 웨어하우스와 사용자 사이의 중간층에 위치
  • CRM관련 업무중 핵심-고객 데이터 마트 구축(어떻게 구축하느야에 따라 분석효과 차이)


2. 요약변수

  • 수집된 정보를 분석에 맞게 종합한 데이터마트에서 가장 기본적인 변수
  • 많은 모델을 공통으로 사용될 수 있어 재활용성이 높다.
기간별 구매 금액, 횟수 여부 단어 빈도
위클리 쇼퍼 초기 행동변수
상품별 구매금액, 회수 여부 트렌드 변수
상품별 구매 순서 결측값과 이상값 처리
유통 채널별 구매 금액 연속형 변수의 구간화

(요약변수 아니면 파생변수라고 생각!)


3. 파생변수

  • 사용자(분석자)가 특정 조건을 만족하거나 특정 함수에 의해 값을 만들어 의미를 부여
  • 매우 주관적, 논리적 타당성을 갖추어 개발해야함
  • 세분화, 고객행동 예측, 캠페인 반응 예측에 잘 활용
  • 특정 상황에만 유의미하지 않게 대표성을 나타나게 할 필요가 있다.
  • ex) 근무시간 구매지수, 주 구매 매장변수, 주 활동지역 변수, 주 구매상품 변수, 구매상품 다양성 변수 등

 

4.  EDA (Exploratory Data Analysis, 탐색적 자료 분석) 

  • 데이터가 가지고 있는 특성을 파악하기 위해 변수의 분포 등을 시각화하여 분석하는 방식
  • 4가지 주제 ★ : 저항성의 강조, 잔차 계산, 자료변수의 재표현, 그래프를 통한 현시성 (종속변수계산 아님!!!)

5. 결측값 (Missing value)

  • default값이라도 그 자체가 의미 있는 경우도 있어서 결측치로 처리하지 않아야함.
  • 결측값이나 이상값을 꼭 제거해야 하는 것은 아니기 때문에 분석 목적이나 종류에 따라 적절한 판단이 필요하다.
  • R에서는 결측값을 NA로 표기한다. ★

 

5-1. 결측값 처리방법 ★

단순 대치법 (Single Imputation)

  1. completes analysis 결측값이 존재하는 레코드를 삭제
  2. 평균대치법 (mean imputation) 
    • 자료의 평균값으로 결측값을 대치하여 불완전한 자료를 완전한 자료로 만들어 분석한다.
    • 비조건부 평균 대치법 관측 데이터의 평균으로
    • 조건부 평균 대치법 회귀분석을 활용한 대치
  3. 단순 확률 대치법 (Single Stochastic Imputation) 
    • 평균대치법에서 추정량 표준오차의 과소추정문제를 보완하고자 고안된 방법으로 Hot-deck 방법, nearest neighbor 방법 

다중 대치법 (Multiple Imputation)

  • 단순 대치법을 한 번 적용하지 않고 m번의 대치를 통해  m개의 가상적 완전 자료를 생성하는 방법이다.
  • 추정량의 표준오차의 과소추정 또는 계산의 난해성 문제가 보완된 방법이다.
  • 1단계 : 대치, 2단계 : 분석, 3단계 : 결합
  • Amelia-time series cross sectional data set에서 bootsta-pping based algorithm 을 활용한 대칩법이다.

 

그 외

  • complete.cases() : 결측값이 있으면 FALSE, 없으면 TRUE 반환 (있으면 FALSE니까 헷갈리지말기!)
  • is.na() : 결측값이 있으면 TRUE, 없으면 FALSE 반환
  • centralImputation() : NA값에 가운데 값으로 대치, 숫자는 중위수, 요인은 최반값으로
  • knnImputation() : NA값을 K최근이웃분류 알고리즘을 사용하여 대치
  • rfImpute() : 랜덤포레스트의 모형의 경우, 결측값이 있으면 에러를 발생하기 때문에 랜덤포레스트 패키지에서 NA결측값을 대치하도록 하는 함

6. 이상값(Outlier)

이상값 이란?

  • 의도치않게 잘못입력한 경우
  • 분석 목적에 적합하지 않아 제거해야하는 경우
  • 의도하지 않은 현상이지만 분석에 포함해야 하는 경우
  • 이상값 검색을 활용한 응용시스템 : 부정사용방지 시스템, 사기탐지, 의료, 침입탐지 

 

이상값 탐지

  1. ESD (Extreme Studentized Deviation) ★☆
    • 평균 - (3*표준편차), 평균 + (3*표준편차) 밖의 값들을 이상값으로 판단하는 방법
  2. 기하평균-2.5*표준편차 < data < 기하평균+2.5*표준편차
  3. 사분위수 이용하여 제거하기
    • 이상값 정의 Q1-1.5(Q3-Q1) < data < Q3+1.5(Q3-Q1) 범위를 벗어나는 값 (IQR=Q3-Q1)

이상치 

  • 설명변수의 관측치에 비해 종속변수의 값이 상이한 값
  • 변수의 분포에서 벗어난 값으로 상자 그림을 통해 확인 가능
  • 분포를 왜곡할 수 있으나 실제 오류인자에 대해서는 통계적으로 실행하지 못하기때문에 제거여부는 실무자들을 통해 결정하는 것이 바람직하다.

댓글