2절. 데이터 가공
1) Data Exploration
- 개요 : 데이터 분석을 위해 구성된 데이터의 변수들의 상태를 파악한다
- 종류 (데이터를 살펴보는 방법)
1. head(), tail() : 시작 또는 마지막 6개 recoed만 조회하는 함수
2. summary()
- 수치형 변수 : 최댓값, 최솟값, 평균, 1사분위수(하위25%), 2사분위수(중앙값), 3사분위수(상위75%)
# Numeric변수는 : 최솟값, 1사분위-3사분위 값, 중간값, 평균값, 최댓값, NA의 개수
# Min : 최솟값, 1st Qu : 1사분위수, Median : 중위수, Mean : 평균, 3st Qu : 3사 분위수, Max : 최댓값 > 6개
- 명목형 변수 : 명목값, 데이터 개수
- Factor변수 : 요인별 개수
- Character변수 : Length(개수) 표시
3. str() : Numeric인지 Factor인지 Character인지 등을 알아보기위한 함수
4. tabplot() : 데이터가 어떻게 입체적으로 분포되어 있는지 보기 위한 방법, 이용하면 값의 변화에 따른 전체적인 다른 변수와의 관계도 파악할 수 있어 시각적인 효과
- 예시
› require(ggplot2) > ggplot2 패키지를 로드합니다
› data(diamonds) > R에 내장된 다이아몬드 데이터셋을 로드합니다.
› dia.data ‹- diamonds > 다이아몬드 데이터셋을 dia.data라는 변수에 할당합니다.
> head(dia.data) > dia.data의 처음 6개의 행을 출력합니다.
2) 변수 중요도
1. 개요
- 변수 선택법과 유사한 개념으로 모형을 생성하여 사용된 변수의 중요도를 살피는 과정이다
- 개발 중인 모델에 준비된 데이터를 기준으로 한 번에 여러 개의 변수를 평가하는 방식.
- 평가 방법은 1. 패키지를 이용한 평가 2. 모델링 결과 평가( 많이 쓰이는 방법 ) 이 있다.
2. 평가 방법
- klaR 패키지 : 특정 변수가 주어졌을 때 클래스가 어떻게 분류되는지에 대한 에러율을 계산해주고, 그래픽으로 결과를 보여주는 기능을 한다
- klaR패키지의 greedy.wilks()
> 모델링을 정의-> 변수를 stepwise하게 투입 -> 의미있는 변수를 순서대로 보여줍니다.
또, 효율적으로 정확도를 최소한으로 희생하면서 초기 모델링을 빨리 실행할 수 있게 해줍니다.
> 세분화를 위한 stepwise forward 변수선택을 위한 패키지, 종속변수에 가장 영향력을 미치는 변수를 wilks lambda를 활용하여 변수의 중요도를 정리
* Wilk's Lambad = 집단내분산/총분산
* "Stepwise"는 통계적 모델링에서 사용되는 용어로, 변수를 선택하거나 제거하는 과정을 의미합니다. 주로 회귀 분석에서 많이 사용되며, 변수 선택 방법 중 하나
- klaR 패키지의 plineplot은 특정 변수가 주어졌을 때 class가 어떻게 분류되는지 error rate를 돌려주고, graphical하게 결과를 보여주는 기능을 합니다.
3) 변수의 구간화
1. 개요
- 연속형 변수를 분석 목적에 맞게 활용하기 위해 구간화하여 모델링에 적용
- 일반적으로 10진수 단위로 구간화하지만, 구간을 5개로 나누는 것이 보통이며, 7개 이상의 구간을 잘 만들지 않는다
- 신용평가모형, 고객 세분화와 같은 시스템에서 모형에 활용하는 각 변수들을 구간화해서 구간별로 점수를 작용하는 스코러일 방식으로 많이 활용
2. 구간화 방법
(1) Binning
- 연속형 변수를 특정 구간으로 나누어 범주형 또는 순위형 변수로 변환하는 방법
- 예를 들면, 소득을 소득 분위로, 나이를 연령 구간이나 세대로 나누는 것이 구간화
- 구간화는 연속형 변수를 어떤 기준으로 구간으로 나누는 걸 말한다
(2) 의사결정나무
- 한번에 하나씩의 설명변수를 사용하여 예측 가능한 규칙들의 집합을 생성하는 알고리즘
- 동일한 변수를 여러 번의 분리 기준으로 사용이 가능 > 연속변수가 반복적으로 선택 > 각각의 분리 기준값으로 연속형 변수를 구간화할 수 있다
*뿌리마디(root node) : 시작되는 마디로 전체 자료를 포함
*자식마디(child node) : 하나의 마디로부터 분리되어 나간 2개 이상의 마디들
*부모마디(parent node) : 주어진 마디의 상위 마디
*끝마디(terminal node) : 자식마디가 없는 마디
*중간마디(internal node) : 부모마디와 자식마디가 모두 있는 마디
*가지(branch) : 뿌리마디로부터 끝마디까지 연결된 마디들
*깊이(depth) : 뿌리마디부터 끝마디까지의 중간마디들의 수
3절. 기초 분석 및 데이터 관리
1) 데이터 EDA (탐색적 자료 분석)
- 데이터의 분석에 앞서 전체적으로 데이터의 특징을 파악하고 데이터를 다양한 각도로 접근
- summary()를 이용하여 데이터의 기초통계량을 확인 (6가지 분류)
2) 결측값 인식
- 결측값 : NA, 99999999, ' '(공백), Unknown, Not Answer 등으로 표현
- 결측값을 처리하기 위해 시간을 많이 사용하는 것은 비효율적
- 결측값 자체가 의미있는 경우 존재
(쇼핑몰 가입자 중 특정 거래 자체가 존재하지 않는 경우,인구통계학적 데이터에서 아주 부자이거나 아주 가난한 경우 자신의 정보를 잘 채워넣지 않기 때문에 가입자의 특성을 유추하여 활용)
- 결측값 처리는 전체 작업속도에 많은 영향
- na.rm을 이용해 NA(결측값) 제거
3) 결측값 처리 방법
가. 단순 대치법(Simple Imputation)
1. Completes Analysis : 결측값이 존재하는 레코드 삭제
2. 평균대치법(Mean Imputation)
- 관측또는 실험을 통해 얻어진 데이터의 평균으로 대치(대신)
- 비조건부 평균 대치법 : 관측데이터의 평균으로 대치
- 조건부 평균 대치법(Regression Imputation)
> 회귀분석을 활용한 대치법
> 결측값(missing values)이 포함된 변수를 다른 변수들의 값을 기반으로 예측하여 대치하는 방법
> 결측값이 있는 변수를 다른 변수들을 독립 변수(원인/영향을 주는 변수)로 하는 회귀모델로 설명
> 예를 들어, 키(height)를 예측하기 위해 몸무게(weight)와 성별(gender)을 독립 변수로 하는 회귀모델을 만들 수 있습니다. 결측값이 있는 키 값을 몸무게와 성별을 이용하여 예측하는 것이 조건부 평균 대치법의 한 예시입니다.
3. 단순확률 대치법(Single Stochastic Imputation)
- 결측값을 대치할 때 무작위로 선택된 확률적인 값으로 대치하는 방법
- 평균대치법에서 추정량 표준 오차의 과소 추정문제를 보완하고자 고안된 방법
- Hot deck 방법, Nearest Neighbor 방법 > 결측값을 대치하기 위해 비슷한 패턴이나 특성을 가진 다른 관측값을 사용
나. 다중 대치법(Multiple Imputation)
- 단순대치법을 한 번만 하지 않고 m번의 대치를 통해 m개의 가상적 완전 자료를 만드는 방법
- 결측값을 대치하는 데 단순 대치법을 여러 번 반복하여 여러 개의 완전한 데이터셋을 만들어내고, 이를 이용하여 더 정확한 추정 및 분석을 수행
1단계 대치(Imputation Step)
- 결측값을 대치하기 위해 단순 대치법을 여러 번 반복합니다. 각 반복에서는 다양한 무작위성을 도입하여 여러 개의 대치된 데이터셋을 생성합니다.
- 각 대치된 데이터셋은 원래 데이터의 결측값을 채워넣은 완전한 데이터셋으로 간주됩니다.
2단계 분석(Analysis Step)
- 각 대치된 데이터셋에 대해 원하는 분석을 수행합니다. 예를 들어, 회귀분석, t-검정, 혹은 다른 통계적 모델링 등이 해당됩니다.
- 각각의 분석 결과는 결측값이 없는 완전한 데이터에서 얻은 것처럼 취급됩니다.
3단계 결합(Combination Step)
- 각 분석 결과를 종합하여 최종 결과를 얻습니다. 이는 각 단계에서 얻은 결과들의 평균, 표준편차 등을 계산하는 등의 방식으로 이루어집니다.
- 이로써 다중 대치법을 통해 결측값의 불확실성을 반영한 통계적 결과를 얻을 수 있습니다.
- Amelia : time series cross sectional data set(여러 국가에서 매년 측정된 자료)에서 Bootstrapping Based Algorithm을 활용한 다중 대치법
Amelia(시계열 교차 단면 데이터셋에서 다중 대치법을 구현하는 패키지)은 Bootstrapping 기반 알고리즘을 사용하여 여러 번의 대치를 통해 결측값을 처리하고,
이를 통해 시계열 교차 단면 데이터셋에서 더 정확한 결과를 얻을 수 있도록 지원합니다. Amelia 패키지는 R에서 사용할 수 있습니다.
4) R에서 결측값 처리
1. complete.cases() : 데이터 내 레코드에 결측값이 있으면 FALSE, 없으면 TRUE
2. is.na() : 결측값을 NA로 인식하여 결측값이 있으면 TRUE, 없으면 FALSE
3. DMwR 패키지의 centralImputation()
- NA 값에 가운데 값(Central Value)로 대치
- 숫자는 중위수, 요인은 최빈값으로 대치
- 이제 CRAN에서 DMwR 패키지 지원X
4. DMwR 패키지의 knnImputation()
- k는 최근접 이웃의 수
- k-최근접 이웃(K-Nearest Neighbors) 알고리즘을 기반 결측값 대치 방법
- k개 주변 이웃까지 거리를 고려해 가중 평균한 값 사용
5. Amelia 패키지의 amelia()
- time series cross sectional data set(여러 국가에서 매년 측정된 자료)에서 활용
- randomForest패키지의 rfImpute() 함수를 활용해 NA결측값 대치 후 알고리즘에 적용
*랜덤포레스트(Random Forest) 모델
- 결측값 존재시 바로 에러
- 앙상블(Ensemble) 학습 알고리즘 중 하나
- 앙상블 학습은 여러 개의 모델을 결합하여 단일 모델보다 높은 성능을 달성하는 기법
- 랜덤 포레스트는 의사 결정 트리(Decision Tree)를 기반으로 한 앙상블 방법
- 의사 결정 트리를 여러 개 생성하고 그들의 예측을 결합하여 더 강력하고 안정적인 예측을 수행
- rfImpute() 함수:결측값이 있는 데이터셋에서 랜덤 포레스트 모델을 학습하고, 학습된 모델을 기반으로 결측값을 대치
6. na.omit() : 데이터프레임에서 결측값(NA)을 포함하는 행을 제거하는 데 사용. 결측값이 있는 행을 제외한 데이터프레임을 반환
5) 이상값(Outlier)인식과 처리
1. 이상값 이란
- 의도하지 않게 잘못 입력한 경우(Bad Data)
- 의도하지 않게 입력되었으나 분석 목적에 부합되지 않아 제거해야하는 경우(Bad Data)
- 의도하지 않은 현상이지만 분석에 포함해야 하는 경우
- 의도된 이상값(Fraud,불량)인 경우
- 이상값을 꼭 제거해야 하는 것은 아니기 때문에 분석의 목적이나 종류에 따라 적절한 판단 필요
- ex) 사기 탐지, 의료(특정환자에게 보이는 예외적인 증세), 네트워크 침입탐지 등
2. 이상값의 인식 방법
(1) ESD(Extreme Studentized Deviation)
- 평균으로부터 일정한 거리 이상 떨어진 값들을 식별
- 이 방법은 특히 정규 분포를 따르는 데이터에서 사용되며, 평균으로부터 몇 표준편차 이상 떨어진 값을 이상값으로 간주합니다
- 정규 분포에서의 표준편차 범위 : 정규 분포를 따르는 데이터에서 약 99.7%의 값은 평균으로부터 ±3 표준편차 사이에 위치
- ESD의 적용 : ESD에서는 평균으로부터 일정한 거리 이상 떨어진 값들을 이상값으로 간주. 이 거리는 표준편차의 개념을 사용하며, 일반적으로는 3 표준편차를 사용합니다
- 확률 분포의 꼬리 영역 : 99.7%에서 0.3%를 빼면 꼬리 부분인 나머지 0.3%가 됩니다. 이 0.3%는 정규 분포의 꼬리에 해당하며, 평균으로부터 3 표준편차 이상 떨어진 값을 나타냅니다.
- 0.3%를 반으로 나누기 : 0.3%를 반으로 나누면 각각 0.15%가 됩니다. 이는 꼬리 부분에서의 상위 0.15%와 하위 0.15%를 의미합니다
- 각 0.15%에 해당하는 값 : 각각의 0.15%에 해당하는 값은 평균으로부터 3 표준편차 이상 떨어진 값을 의미합니다. 이 값을 넘어가는 경우, 해당 값은 ESD를 사용하여 이상값으로 식별됩니다.
(2) 기하평균-2.5x표준편차 < data < 기하평균+2.5x표준편차
- 주어진 데이터셋에서 값이 일정 범위를 벗어나면 이상값으로 간주하는 간단한 통계적 방법
- 일정 범위 > 기하평균-2.5x표준편차 < data < 기하평균+2.5x표준편차
(3) 사분위수 이용해 제거(상자그림의 outer fence 밖에 있는 값 제거)
- Q1-1.5(Q3-Q1) < data < Q3+1.5(Q3-Q1)를 벗어나는 데이터
- Q1−1.5×IQR는 이상값을 식별하기 위한 하한 경계값을 계산하는 공식
- IQR은 제 3사분위수(Q3)에서 제 1사분위수(Q1)를 뺀 값으로, 데이터의 중간 50% 범위를 나타냅니다. 수식으로는 IQR=Q3−Q1로 표현
- 1.5×IQR은 IQR의 1.5배를 의미하며, 이는 일종의 "허용 범위"를 나타냅니다.
- Q1−1.5×IQR은 데이터의 하위 25%에서 벗어나는 값들을 이상값으로 간주하는 경계값을 계산하는 공식
- Q3+1.5×IQR은 데이터의 상위 25%에서 벗어나는 값들을 이상값으로 간주하는 경계값을 계산하는 공식
- Q1 : 데이터 25%가 이 값보다 작거나 같음
- Q2 : 데이터의 절반(중앙값)
- Q3 : 데이터의 75%가 이 값보다 작거나 같음
3. 극단값 절단(Trimming) 방법
(1) 기하평균을 이용한 제거 : geo_mean
- 기하평균(Geometric Mean)은 여러 개의 양수 값의 곱에 대한 제곱근을 의미
- 기하평균은 주로 양수 값이 크게 편향되어 있는 데이터를 다룰 때 사용
- 데이터의 기하평균을 계산한 후, 일정 백분율만큼 상위와 하위에서 값을 제거
(2) 하단, 상단 % 이용한 제거 : 10% 절단(상하위 5% 데이터 제거)
4. 극단값 조정(Winsorizing) 방법
- 데이터에서 상한값(upper bound)과 하한값(lower bound)을 벗어나는 값을 해당 상한값 또는 하한값으로 대체하는 방법
- 상한값을 초과하는 데이터는 해당 상한값으로 대체하고, 하한값 미만인 데이터는 해당 하한값으로 대체
- 예시 > 원래 데이터: 1, 2, 3, 4, 100, 200, 300, 400, 500
Winsorizing 적용 후: 1, 2, 3, 4, 100, 200, 300, 300, 300
'ADsP(데이터 분석 준전문가) > 개념정리' 카테고리의 다른 글
[3-4. 통계분석] 2. 기초 통계분석 (1) | 2024.01.10 |
---|---|
[3-4. 통계분석] 1.통계분석의 이해 (1) | 2024.01.10 |
[3-3. 데이터 마트] 1. 데이터 변경 및 요약 (2) | 2024.01.02 |
[3-2. R프로그래밍 기초] (1) | 2024.01.02 |
[3-1. 데이터 분석 개요 ] (0) | 2024.01.01 |