본문 바로가기
  • 紹睿: 자유롭고 더불어 사는 가치있는 삶
Archived/ADsP

[ADsP] 3과목 데이터 분석 - (1) R기초와 데이터 마트

by 징여 2018. 8. 23.
반응형

데이터 분석

- R기초와 데이터 마트

- R 기초

R: 통계 계산과 그래픽을 위한 프로그래밍 언어이자 소프트웨어 환경/ GPL하에 배포되는 S프로그래밍 언어로 구현(GNU S)

R studio: 메모리에 변수가 어떻게 되어있는지, 타입무엇인지 볼수있따

Rattle: GUI가 패키지와 긴빌하게 결합돼 있어 정해진 기능만 사용가능

특징

1) 표준 플랫폼(S언어기반)

2) 모든 운영체제에서 사용가능

3) 메모리 저장방식

세션마다 저장함

4) 객체지향언어, 함수언어

병렬프로그래밍으로의 전환이 용이하다.

5) 오픈소스 프로그램


- R 기초 2

setwd("작업디렉토리")

도움말: help(함수), ?함수, RsiteSearch(함수명)

히스토리: history(), savehistory(file="파일명"), loadhistory(file="파일명")

콘솔 청소 :Ctrl+L

한줄 실행: Ctrl+R

여러줄실행: 그래그해서 Ctrl+R

주석처리: #

패키지 설치: install.package("패키지명")

배치 실행: 매일 돌아가야하는 프로그램을 프로세스에서 자동으로 구동하는 작업


1) 출력하기: print(), cat()

2) 값 할당: <- , <<-, =, ->

3) 변수 목록보기: ls(), ls.str()

4) 변수 삭제:rm(), rm(list=ls())

5) R함수 정의: function(x, y) {}

6) 지역변수: 단순 값 대입(함수가 종료되면 삭제됨)

7) 전역변수: <<- 사용

8) 조건문: if

9) 반복문: for, while, repeat

10) x<- c(1, 2, 3, 4)

11) 수열: 

- 1:5, 

- seq(from=0, to=20, by=2)

- seq(from=0, to=20, length.out=5)

12) 반복:

- rep(1, time=5)

- rep(1:4, each=2), rep(c, each=2)

13) 문자 붙이기

- A <- paste("a", "b", "c", sep="-")

- paste(A, c("e", "f"))

14) 문자열 추출

- substr("Bigdata", 1, 3)

15) 논리값: T(True), F(False)

16) 논리연산자: ==, !=, <, <=, >, >=

17) 원소선택: V[n] 


- 연산

1) %/% 나눗셈 몫, %% 나머지, %*% 행렬곱

2) 평균: mean(x) 

3) 합계 sum(x)

4) 중앙값: median(x)

5) 로그: log(x)

6) 표준편차: sd(x)

7) 분산: var(x)

8) 공분산: cov(x1, x2)

9) 상관계수: corr(x1, x2)

10) 변수 길이: length(x)


데이터 구조와 데이터 프레임

특징 

Vector

List 

 Data Frame

 원소 자료형

동질적 

이질적 

이질적 

원소위치 인덱싱 가능

 여러개 원소로 구성된 하위 데이터생성 가능

 원소 이름부여 가능


1) vector

2) List: L[[n]], L[["name"]], L$name

3) Data frame: SAS 데이터셋 모방

4) Matrix: 차원을 가진 벡터로 인식

dim(vec) <- c(2, 3)

rownames(mx) <- c("name1", "name2")

colnames(mx) <- c("col1", "col2")

5) Array: 3차원또는 n차원 확대된 행렬

6) Factor: 고유값이 요인수준(level)로 구성된 백터(범주형)


- Data frame

1) 데이터 행결합: rbind(df1, df2)

2) 열결합: cbind(df1, df2)

3) 조회: subset(df, selelct=변수, subset=변수>조건)

4) 병합: merge(df1, df2, by="열이름")

5) 열 이름 조회: colnames(df)

6) 행,열 선택: 

- subset(df, select="열이름")

- subset(df, select=c("열이름1", "열이름2")

- subset(df, select ="열이름", subset="조건")

7) 자료형 변환

- as.character()

- as.complex()

- as.numeric()

- as.double()

- as.integer()

- as.logical()

- as.data.frame()

- as.list()

- as.matrix()

- as.vector()

8) 벡터 연산

(1) + - * /

(2) 함수 적용: sapply(변수, 연산함수

(3) 파일 저장

- write.csv(x, "df.csv")

- save(x, file="x.Rdata")

(4) 파일 읽기

- read.csv("df.csv")

(5) 파일 불러오기

- load("x.R")

- source("x.R")

(6) 삭제

- rm(x)

- rm(list=ls(all=T))

9) 요약: summary(df)

10) 조회: head(df)

11) 작업 종료: q()

12) 여러집단으로 분할: groups <- split(x, f)

13) lapply(결과를 리스트 형태로 반환)

14) sapply(결과를 벡터 또는 행렬로 반환

15) tapply(vec, factor, func): 데이터가 집단에 속해 있을때, 

16) 행 집단: by(df, factor, func)

17) 뱅렬벡터, 리스트들: maply(factor, vec1, vec2, ve3, ...,)

18) 문자열 다루기

(1) 문자열 길이: nchar("단어") / length(vec): 벡터의 길이 반환

(2) 문자열 나누기: strsplit("문자열", "구분자")

(3) 문자열대체: sub(old, new, string) / gsub(old, new, string)

(4) outer("문자1", "문자2", patste, sep="")

19) 날짜

(1) Sys.Date(), as.Date()

(2) format(Sys.date(), format=%m%d%y)

(3) 요일: %a

축약된 월이름: %d

전체 월이름: %B

두자리 숫자 일조회: %d

두자리 숫자 월조회: %m

두자리 숫자 연도 조회: %y

네자리 숫자 연도 조회: %Y


- 데이터 마트

- 데이터웨어하우스와 사용자 사이의 중간층, 하나의 주제 또는 하나의 부서 중심의 데이터 웨어하우스

- 데이터 웨어하우스로 부터 복제되지만, 자체적으로 수집될수 있으며, 관계형 데이터 베이스나 다차원 데이터 베이스를 구축한다

- CRM 관련업무중 핵심: 고객데이터 마트 구축

1) 요약변수

수집된 정보를 분석에 맞게 종합한 변수

재활용성이 높다

합계, 횟수와 같이 간단한 구조 이므로 자동화 하여 상황에 맞게 구축가능

단점: 얼마 이상이면, 구매하더라도 기준값의 의미 해석이 애매할 수 있다. -> 연속형 변수로 그룹핑해 사용

예) 기간별 구매금액, 횟수여부 / 위클리쇼퍼 / 상품별 구매금액, 회수 여부/ 구매순서, 단어빈도, 행동변수, 드랜드 변수, 결측값과 이상값 처리, 구간화

2) 파생변수

특정 조건을 만족하거나 특정함수에 의해 만들어 의미를 부여한 변수

주관적

세분화, 고객행동 예측, 캠페인 반응 예측 

특정 상황에만 유의하지 않게 대표성을 나타나게 할 필요가 있다.

예) 근무시간 구매지수, 주 구매 변수, 구매상품 다양성 변수, 선호하는 가격대 변수, 시즌 선호고객변수, 최대 가치 변수

3) reshape 활용

- melt()

melt(df, id=c("Month", "Day"), na.rm=T)

Month, Day 기준으로 뽑아줌

- cast(): 원하는 형태로 계산 또는 변형

cast(df, Day~Month~variable, func)

4) spldf 패키지: SAS의 proc sql과 같은 기능

5) plyr 패키지: apply함수를 기반으로 데이터와 출력변수를 동시에 배열로 치환하여 처리

split-apply-combine 방식

6) data.table 패키지

데이터 탐색, 연산, 병합에 유용

특정 col을 key값으로 색인을 저장후 데이터 처리

빠른 grouping과 ordering 제공


데이터 가공 

1) Data Exploration

수치형 변수: 최대값, 최소값, 평균, 사분위수

명목형변수: 명목값, 데이터 개수

2) 변수 중요도

- klaR 패키지: 특정 변수가 주어졌을때, 클래스가 어떻게 분류되는지에 대한 에러율을 돌려주고 그래픽화

- greedy.wilks(): 세분화를 위한 stepwise forward 변수 선택을 위한 패키지

- Wilk's Lambda: 집단내 분산/ 총분산

- plineplot() 이용

* Petal.Width에 따라 Species 분포 알아보기

plineplot(Species ~. , data=iris[,c(1, 3, 5)], method="lda", x=rirs[,4], xlab="Petal.Width")

3) 변수 구간화

각 변수들을 구간화해서 구간별로 점수를 적용할 수 있다.

- binning: 연속형 변수를 범주형 변수로 변형하는 방식

- 의사결정나무: 세분화 또는 예측에 활용되는 의사결정나무 모형을 활용하여 입력변수들을 구간화 할수있다.


데이터 EDA(탐색적 자료 분석)

summary()


- 결측값 처리와 이상값 검색

결측값의 표현: NA, .,99999999, ' ', unknown, Not Answer 등

결측값 자체가 의미있는 경우가 있다.

- 특정 거래 자체가 존재하지 않는경우

- 인구 통계학적 데이터의 경우, 아주 부자거나 아주 가난한경우

결측값 처리가 전체 작업속도에 많은 영향을 준다.

- 이상값검색(꼭 제거해야하는 것은 아님)

- 결측값이 있는 자료의 평균 구하기

- na.rm을 통해 NA를 제거 할 수 있따.


결측값 처리방법

1) 단순대치법(Single Imputation)

- 레코드 삭제

- 평균대치법: 평균으로 대치

비조건부 평균대치법: 평균으로 대치

조건부 평균 대치법: 회귀분석을 활용한 대치법

- 단순확률 대치법: 평균 대치법에서 추정량 표준 오차의 과소 추정문제를 보완하고자 고안된 방법

Ho-deck, nearest-neighbour

2) 다중대치법: 단순대치법 여러번을 통해 가상적 완전 자료를 만드는 방법

대치, 분석, 결합



complete.cases(): 데이터내 레코드에 결측값이 있으면 F, 없으면 T 반환

ramdomforest는 결측치가 존재할 경우 바로 에러를 발생시킨다. rflmpute()를 통해 미리 대치한 후 사용해야 한다.

DMwR패키지: centralImputation(): NA값에 가운대 값으로 대치, 숫자 - 중위수, factor - 최빈값

DMwR패키지: knnLmputation(): k최근 이웃 분류 알고리즘을 사용하여 대치, k개 주벼 이웃까지의 거리를 고려하여 가중 평균한 값 사용

Amelia패키지: amelia(): time-series-cross-sectional data set(여러 국가에서 매년 측정된 자료에서 사용)


이상값 찾기와 처리

이상값

- 의도하지 않게 잘못 입력한 경우

- 분석 목적에 부합하지 않아 제거해야되는 경우

인식 방법

1) ESD: 평균으로 부터 3표준편차 떨어진값

2) 기하평균 - 2.5 x 표준편차 < data < 기하평균 + 2.5 x 표준편차

3) 4분위수 이용하여 제거


극단값 절단 방법

1) 기하평균을 이용한 제거 geo_mean

2) 하단, 상단 % 이용한 제거: 10% 절단 (상하위 5% 제거)


조정 방법: 상한값과 하한값을 벗어나는 값들을 하한, 상한 값으로 바꾸어 활용

반응형

댓글