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

35. 데이터 가공

by #Glacier 2018. 11. 22.
반응형

오늘은 데이터 가공에 대해 알아보도록 하겠습니다.

데이터를 훑어보는 법, 결측값과 이상값 처리에 대해 알아볼게요.


-변수의 중요도

: 분석용 데이터 마트를 구축함에 있어서 가장 중요한 부분은 변수의 중요도를 체크하는 것입니다. 모든 변수를 사용하여 모델을 만들 수  없으므로,

 최적의 변수셋을 모형개발에 활용하는 것이 좋습니다.


-연속형 변수의 구간화

: 연속형 변수를 구간화 하는 이유는, 결과를 잘 해석할 수 있도록 적용하는 것입니다.


-결측치와 이상치의 처리방안

: 데이터마트에 결측치와 이상치가 있는 경우, 반드시 데이터클린징을 해야 합니다. 클린징에는 결측치와 이상치를 삭제하는 방법도 있지만,

 특정 값으로 대치하거나 그냥 쓸 수도 있습니다. 데이터가 적은 경우 가급적 대치하는 것이 좋습니다.


1. Data Exploration


데이터 분석을 위한 구성된 데이터의 변수들의 상태를 파악한다.

자주 사용하는 함수 : head(), summary()

summary() - 수치형 변수 : 최대값, 최소값, 평균, 1사분위수, 2사분위수(중앙값), 3사분위수

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


install.packages("ggplot2")
require(ggplot2)
data(diamonds)
dia.data<-diamonds


head(dia.data)


# A tibble: 6 x 10
  carat           cut color clarity depth table price     x     y     z
  <dbl>      <ord> <ord>   <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
1  0.23     Ideal         E     SI2    61.5    55   326  3.95  3.98  2.43
2  0.21   Premium       E     SI1    59.8    61   326  3.89  3.84  2.31
3  0.23      Good       E     VS1   56.9    65   327  4.05  4.07  2.31
4  0.29   Premium       I     VS2   62.4    58   334  4.20  4.23  2.63
5  0.31      Good        J     SI2   63.3    58   335  4.34  4.35  2.75
6  0.24 Very Good     J    VVS2  62.8    57   336  3.94  3.96  2.48​ 


 summary(dia.data)

     carat               cut        color        clarity          depth      
 Min.   :0.2000   Fair     : 1610          D: 6775     SI1    :13065      Min.   :43.00  
 1st Qu.:0.4000   Good     : 4906      E: 9797     VS2    :12258     1st Qu.:61.00  
 Median :0.7000   Very Good:12082   F: 9542     SI2    : 9194       Median :61.80  
 Mean   :0.7979   Premium  :13791     G:11292      VS1    : 8171       Mean   :61.75  
 3rd Qu.:1.0400   Ideal    :21551        H: 8304     VVS2   : 5066   3rd Qu.:62.50  
 Max.   :5.0100                              I: 5422       VVS1   : 3655   Max.   :79.00  
                                                 J: 2808       (Other): 2531                  
     table           price             x                y         
 Min.   :43.00   Min.   :  326   Min.   : 0.000   Min.   : 0.000  
 1st Qu.:56.00   1st Qu.:  950   1st Qu.: 4.710   1st Qu.: 4.720  
 Median :57.00   Median : 2401   Median : 5.700   Median : 5.710  
 Mean   :57.46   Mean   : 3933   Mean   : 5.731   Mean   : 5.735  
 3rd Qu.:59.00   3rd Qu.: 5324   3rd Qu.: 6.540   3rd Qu.: 6.540  
 Max.   :95.00   Max.   :18823   Max.   :10.740   Max.   :58.900  
                                                                  
       z         
 Min.   : 0.000  
 1st Qu.: 2.910  
 Median : 3.530  
 Mean   : 3.539  
 3rd Qu.: 4.040  
 Max.   :31.800  
                

#이런 식으로 탐색이 가능합니다.



2. 변수 중요도


-변수 선택법과 유사한 개념으로 모형을 생성하여, 사용된 변수의 중요도를 살피는 과정입니다.


-klaR패키지 : 특정 변수가 주어졌을 때 클래스가 어떻게 분류되는 지에 대한 에러율을 돌려주고, 그래픽으로 결과를 보여줌.


-greedy.wilks() : 세분화를 위한 stepwise forward 변수선택을 위한 패키지. 종속변수에 가장 영향력을 미치는 변수를 wilks lambda를 활용하여 중요도 정리


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


plineplot()을 이용한 iris 데이터 예제


install.packages("klaR")
library(klaR)
a<-iris
plineplot(Species ~., data=a, method="lda", x=iris[,4], xlab="Petal.Width")



즉, Petal.Width에 따라 Species 별로 분포가 다른 점을 파악할 수 있습니다. 이러한 경우,

Petal.Width를 그룹핑하여 categorical variable 즉, 범주형으로 만들어주면 해석이 용이해 질 수 있습니다.


mN<-NaiveBayes(Species~., data=iris)

par(mfrow=c(2,2))

plot(mN)


#위는 2X2의 그래프칸을 만들고 plot을 그리는 겁니다.


#한눈에 보기 정말 용이합니다..ㅎㅎ


3. 변수의 구간화


-신용평가모형, 고객 세분화 등 시스템으로 모형을 적용하기 위해서는 각 변수들을 구간화해서 

  구간별로 점수를 적용할 수 있어야 한다.

-binning : 연속형 변수를 범주형 변수로 변형하는 방식. 각각 동일한 개수의 레코드를 50개 이하의 구간에 

            데이터를 할당하여 구간들을 병합하면서 구간을 줄여나가는 방식의 구간화 방식

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


4. 데이터 결측값 처리


​-결측값의 표현 : NA, . , 99999999, ' ' , Unknown, Not Answer 등으로 표현

-결측값을 처리하기 위해 많은 시간을 소비하는 것은 비효율적

-결측값 자체가 의미가 있는 경우도 있다. (쇼핑몰 가입자 중 특정 거래 자체가 존재하지 않는 경우)

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

-결측값이 있는 자료의 평균 구하기 ex ) mean(x, na.rm=T)


5. 결측값 처리 방법


단순 대치법 (Single Imputation)

 1) completes analysis : 결측값이 존재하는 모든 레코드를 삭제

 2) 평균대치법 ( Mean Imputation) : 얻어진 데이터의 평균으로 대치 , 조건부평균대치법 - 회귀분석을 활용한 대치법

 3) 단순확률 대치법(Single Stochastic Imputation) : 평균대치법에서 추정량 표준 오차의 과소 추정문제를 보완하고자 

고안된 방법으로 Hot-deck 방법, nearest-neighbour 방법 등이 있다.

 4) 다중대치법 (Multiple Imputation)

  -단순대치법을 한 번이 아닌 m번의 대치를 통해 m개의 가상적 완전 자료를 만드는 방법

  - 1단계 : 대치, 2단계 : 분석, 3단계 : 결합

  -Amelia-time series cross sectional data set에서 bootstrapping based algorithm을 활용한 다중 대치법


6. R에서 결측값 처리


-랜덤 포레스트 ( random forest)모델은 결측값이 존재할 경우, 바로 에러를 발생함.

-randomForest 패키지의 rfImpute()함수를 활용하여 NA결측값을 대치한 후 알고리즘에 적용

-결측값 관련한 함수

1) complet.cases() : 데이터내 레코드에 결측값이 있으면 FALSE, 없으면 TRUE 반환

2) is.na() : 결측값이 NA인지 반환

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

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

5) Amelia 패키지의 amelia() : time-series-cross-sectional data set에서 활용


7. 이상값 (Outlier)찾기와 처리


-의도하지 않게 잘못 입력한 경우 (bad data)

-의도하지 않게 입력되었으나 분석 목적에 부합되지 않아 제거해야 하는 경우  (bad data)

-의도하지 않은 현상이지만 분석에 포함해야 하는 겨우

-의도된 이상값(fraud, 불량)인 경우


<이상값의 인식 방법>

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

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

3)사분위수 이용하여 제거하기 (상자 그림의 outer fence 밖에 있는 값 제거)

 이상값 정의 : Q1-2.5(Q3-Q1) <data< Q3+2.5(Q3-Q1)를 벗어나는 데이터


<극단값 절단(trimming)방법>

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

2) 하단, 상단% 이용한 제거

3) 10% 절단(상하위 5%에 해당되는 데이터 제거)


<극단값 조정(winsorizing) 방법>

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


- 극단값 조정방법이 절단법보다 데이터 손실율도 적고, 설명력도 높아진다.


하아 힘둘당 오늘은 여기까지 보도록 하겠습니다.


반응형

'## 오래된 게시글 (미관리) ## > R' 카테고리의 다른 글

37. 기초통계분석  (0) 2018.11.22
36. 데이터분석의 이해  (0) 2018.11.22
34. 데이터 마트 II  (0) 2018.11.22
33. 데이터마트  (0) 2018.11.22
32. 데이터 변형  (0) 2018.11.22