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. 패키지 ★
- plyr패키지는 데이터의 분리, 결합 등 필수적인 데이터 처리 기능 제공,
- apply함수에 기반.
- split-apply-combine : 데이터 분리,처리,다시 결합하는 기능 제공
- ddply함수 제공
- data.table 패키지는 큰 데이터를 탐색, 연산, 병합하는데 유용하고 가장많이 사용한다.
- 빠른 그루핑과 ordering
- 짧은 문장 지원측면에서 데이터프레임보다 유용
- 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)
- completes analysis : 결측값이 존재하는 레코드를 삭제
- 평균대치법 (mean imputation) ★
- 자료의 평균값으로 결측값을 대치하여 불완전한 자료를 완전한 자료로 만들어 분석한다.
- 비조건부 평균 대치법 : 관측 데이터의 평균으로
- 조건부 평균 대치법 : 회귀분석을 활용한 대치
- 단순 확률 대치법 (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)
이상값 이란?
- 의도치않게 잘못입력한 경우
- 분석 목적에 적합하지 않아 제거해야하는 경우
- 의도하지 않은 현상이지만 분석에 포함해야 하는 경우
- 이상값 검색을 활용한 응용시스템 : 부정사용방지 시스템, 사기탐지, 의료, 침입탐지
이상값 탐지
- ESD (Extreme Studentized Deviation) ★☆
- 평균 - (3*표준편차), 평균 + (3*표준편차) 밖의 값들을 이상값으로 판단하는 방법
- 기하평균-2.5*표준편차 < data < 기하평균+2.5*표준편차
- 사분위수 이용하여 제거하기
- 이상값 정의 Q1-1.5(Q3-Q1) < data < Q3+1.5(Q3-Q1) 범위를 벗어나는 값 (IQR=Q3-Q1)
이상치 ★
- 설명변수의 관측치에 비해 종속변수의 값이 상이한 값
- 변수의 분포에서 벗어난 값으로 상자 그림을 통해 확인 가능
- 분포를 왜곡할 수 있으나 실제 오류인자에 대해서는 통계적으로 실행하지 못하기때문에 제거여부는 실무자들을 통해 결정하는 것이 바람직하다.
'Certificate > ADSP' 카테고리의 다른 글
[ADSP] 3과목 - 5장 1-2. 데이터마이닝,성과분석,ROC/ 분류분석, 지니계수 (0) | 2022.10.11 |
---|---|
[ADSP] 3과목 - 4장. 시계열 분석, 다차원척도법(MDS), 주성분 분석(PCA) (0) | 2022.10.10 |
[ADSP] 3과목 - 4장.통계분석, 기초통계분석, 회귀분석 (0) | 2022.10.09 |
[ADSP] 2과목 - 데이터 분석 기획, 빅데이터, 분석 마스터 플랜 (0) | 2022.10.06 |
[ADSP] 1과목. 데이터, 데이터베이스, 빅데이터 (0) | 2022.10.05 |
댓글