반응형

이글은 www.analyticsvidhya.com의 내용임. (링크)

A Comprehensive Guide to Data Exploration

    데이터 탐색을 위한 지름길은 없다. 몇 시점 이후, 모델의 정확도 개선으로 괴롭힘 당하고 있는 것을 깨닫을 것이다. 이런 경우, 데이터 탐색 기술이 도움이 된다.

    이 글은 근본적인 데이터 탐험 기술을 이해하는데 도움을 줄 것이다.


Table of Contents

  1. 데이터 탐색과 준비 단계 (Steps of Data Exploration and Preparation)
  2. 결측치 처리 (Missing Value Treatment)
    • 왜 결측치 처리가 필요한가?
    • 왜 데이터에 결측치이 있는가?
    • 결측치 처리를 위한 방법은?
  3. 이상치 감지와 처리 기술(Techiques of Outlier Detection and Treatment)
    • 이상치란?
    • 이상치의 형태(Type)
    • 이상치의 원인은?
    • 데이터셋에서 이상치의 영향은?
    • 이상치를 탐지하는 방법은?
    • 이상치를 제거하는 방법은?
  4. 특성 공학 기술 (The Art of Feature Engineering)
    • 특성공학이란?
    • 특성공학 절차
    • 변수변환(Variable Transformation)이란?
    • 언제 변수변환을 사용해야 하는가?
    • 변수변환의 일반적인 방법은?
    • 특성 변수 생성이란? 그리고 이점은?

1. 데이터 탐색과 준비 단계 (Steps of Data Exploration and Preparation)

    입력 데이터의 질이 출력 데이터의 질을 결정한다는 것을 명심하자. 따라서 가설(Hypothesis)이 준비된 이후, 많은 시간과 노력을 하는 것은 당연하다. (글쓴이의) 개인적인 추정으로는 데이터 탐색, 정제와 준비는 전체 프로젝트의 70%까지 될 수 있다.

    아래는 예측 모델 구축을 위한 데이터 이해, 정제 그리고 준비에 관련된 단계이다.

  1. 변수 확인(Variable Identification)
  2. 일변량 해석(Univariate Analysis)
  3. 이변량 해석(Bi-variate Analysis)
  4. 결측치 처리(Missing values Treatment)
  5. 이상치 처리(Outlier Treatment)
  6. 변수 변환(Variable Transformation)
  7. 변수 생성(Variable Creation)

    마지막으로 4-7단계는 정제된 모델을 찾기 전까지는 여러번 반복이 필요할 것이다.

변수 확인(Variable Identification)

    우선 예측 변수(Predictor)(입력)과 대상(Target)(출력)을 확인한다. 다음으로 변수의 데이터 타입과 범주(category)를 확인한다.

    이 단계를 예제를 사용하여 좀 더 명확하게 이해해 보자.

    Example: 학생이 크리켓 경기를 할지 말지를 (아래 데이터셋으로) 예측한다고 가정하자. 여기서 예측 변수와 대상 변수, 변수의 데이터 타입과 범주를 확인해야 한다.


아래에서 변수는 다른 범주로 정의되었다.


일변량 해석(Univariate Analysis)

    이 단계에서 변수를 하나씩 탐색한다. 일변량 해석을 수행하기 위한 방법은 변수 타입이 범주형(categorical) 또는 연속(continuous)인가에 의존한다. 범주형과 연속 변수를 위한 방법과 통계적 측정을 각각 살펴보자.

  • *범주형 변수 : 연속 변수의 경우, 중심 경향(central tendency)와 변수의 퍼짐(spread)을 이해해야 한다. 이는 아래처럼 다양한 통계적 지표 시각화 방법으로 측정된다.
    
    

    Note : 단변량 해석은 또한 결측치과 특이값을 하이라이트하기 위해서도 사용된다.

  • 연속 변수 : 범주형 변수에 대해서는 각 범주의 분포를 이해하기 위해 빈도 테이블을 사용한다. 또한 각 범주에 대한 값의 비율(%)로 읽을 수 도 있다. 이는 각 범주에 대해 CountCount% 두개의 지표를 사용하여 측정된다. 막대그래프로 시각화 할 수 있다.

이변량 해석(Bi-variate Analysis)

    이변량 해석은 두 변수간 관계를 알아낸다. 여기서 사전 정의된 중요성 레벨로 변수간 연관과 분리를 찾는다. 범주형과 연속 변수의 어떠한 조합도 이변량 해석을 수행할 수 있다. 조합은 범주형 & 범주형, 범주형 & 연속 그리고 연속 & 연속이 될 수 있다. 다른 방법은 분석 과정동안 이들 조합을 다루기위해 사용된다.

    가능한 조합을 좀더 자세히 이해해 보자.

  • 연속 & 연속 : 두 연속 변수간 이변량 해석을 하는 동안 산포도(scatter plot)을 봐야한다. 이는 두 변수간 관계를 알아내는 훌륭한 방법이다. 산포도의 패턴은 두 변수간 관계를 나타낸다. 관계는 선형 또는 비선형일 수 있다.
    
    

    산점도는 두 변수간 관계를 보여주지만 관계의 강도를 나타내는 것은 아니다. 관계의 강도를 찾기 위해 상관관계(correlation)을 사용한다. 상관관계는 -1과 +1사이에서 변한다.

  • -1 : 완벽한 음의 선형 상관관계
  • +1 : 완벽한 양의 선형 상관관계
  • 0 : 상관관계 없음

    상관관계는 아래 식을 사용하여 얻을 수 있다.

$\text{Correlation} = \frac{\text{Covariance}(X, Y)}{\sqrt{\text{Var}(X) \times \text{Var}(Y)}} = \frac{\sigma_{XY}}{\sigma_X \times \sigma_Y}$

Corvariance (공분산) : $\sigma_{XY}$

Variance(분산) : $\sigma_X$, $\sigma_Y$

    다양한 도구가 변수간 상관관계를 확인하기 위한 함수 또는 기능을 가지고 있다. 엑셀(Excel)에서 COREL()함수는 두 변수간 상관관계를 반환한다. 이 함수는 두 변수간 관계를 확인하기 위한 피어슨 상관관계 값(Pearson Correlation Value)을 반환한다.


    위 예제에서는 두 변수 X와 Y에서 좋은 양의 관계(0.65)를 얻었다.

  • 범주형 & 범주형 : 두 범주형 변수간 관계를 알기 위해 아래 방법을 사용할 수 있다.

    • 양방향 테이블(Two-way Table) : 횟수(count)와 횟수비율(count%)의 양방향 테이블을 생성하여 관계를 분석할 수 있다. 열(row)은 변수 하나의 범주(category)를 열(column)은 다른 변수의 범주를 나타낸다. 행과 열범주의 각 조합에서 가능한 관측치의 개수 또는 개수비율을 보여준다.
    • 누적 막대 그래프(Stacked Column Chart) : 양방향 테이블의 좀더 시각적 형태이다.
      
      
    • 카이제곱 테스트(Chi-Square Test) : 이 테스트는 변수간 관계의 통계적 중요성을 끌어낸다. 또한 표본(샘플)내 증거(evidence)가 더 많은 집단에 대한 관계를 일반화 할 만큼 충분히 강한지도 테스트한다. 카이제곱은 양방향 테이블에서 하나이상의 범주내 예상 빈도와 관측 빈도 사이의 차이에서 비롯된다. 이는 자유도(degree of freedom)를 포함하는 계산된 카이제곱 분포에 대한 확률을 반환한다.

      확률 0 : 두 범주형 변수가 종속적임을 나타낸다.
      확률 1 : 두 변수가 독립적임을 나타낸다.
      확률 < 0.05 : 두 변수간 관계가 95% 신뢰도로 의미가 있음을 나타낸다. 두 범주형 변수의 독립성 테스트에 대한 카이제곱 테스트 통계는 아래와 같다.
        
        
      여기서 O은 관측된 빈도를 E는 귀무가설(null hypothesis)에서 예측 빈도를 나타내며 다음과 같이 계산한다.
        
        

      앞의 양방향 테이블로부터 범주1에 대한 예상 횟수가 작을것으로 예상되는 개수는 0.22이다. 이는 크기에 대한 열의 합(9)에 제품 범주에 대한 행의 합(2)를 곱하고 샘플 크기(81)로 나눈다. 이는 각 셀에 대해 수행된 절차이다. 관계의 강도를 분석하기 위해 사용된 통계적 측정은 아래와 같다.
    • 명목상의 범주형 변수(Nominal Categorical Variable)에 대한 크래머 V (Cramer's V)
    • 순서를 나타내는 범주형 번수(Ordinal Categorical Variable)에 대한 Mantel-Haenszed Chi-Square
  • 범주형 & 연속 : 범주형과 연속 변수간 관계를 탐색하는 동안 범주형 변수의 각 레벨에 대한 박스 그림을 그릴 수 있다. 만약 레벨이 작다면, 통계적 중요성을 보이지 않는다. 통계적 중요성을 보기 위해 Z-test, T-test 또는 ANOVA를 수행할 수 있다.

    • Z-Test/T-Test : 두 테스트 모두 두 그룹의 평균이 서로 통계적으로 다른지를 평가한다.
        
        
      만약 Z의 확률이 작으면 두 평균의 차이는 더욱 중요하다. T-test는 Z-test와 매우 유사하지만 양쪽 범주에 대한 관측의 수가 30보다 적을 때 사용된다.
        
        
    • ANOVA : 두개 이상의 그룹의 평균이 통계적으로 다른지를 평가한다.
  • Example : 다섯가지 다른 운동방법을 시험한다고 가정해보자. 이를 위해 20명을 모집하고 한 방법당 4명씩 배정하여 총 5그룹을 만든다. 참여자의 몸무게는 몇주 후에 기록되었다. 참여자에게 이 운동법들의 효과가 의미있는 차이를 갖는지를 알아내야 한다. 이것은 4명으로 구성된 총 5그룹의 몸무게를 비교하여 알 수 있다.


    여기까지, 데이터 탐색의 3단계인 변수 확인, 일변량해석 그리고 이변량 해석을 이해했다. 또한 변수간 관계를 확인하기 위해 다양한 통계적이고 시각적인 방법을 보았다.


2. 결측치 처리 (Missing Value Treatment)

왜 결측치 처리가 필요한가?

    훈련 데이터셋에서 손실 데이터는 모델의 힘/적합성을 감소시키거나 올바르게 동작과 다른 변수와의 관계를 분석하지 않았기 때문에 편향된 모델이 될 수 있다. 이는 잘못된 예측 또는 분류로 이어진다.


    위 이미지에서 보이는 결측치에 주의하자. 왼쪽 시나리오에서는 결측치을 처리하지 않았다. 이 데이터셋으로부터의 추론은 남자가 크로켓을 하는 기회가 여자보다 더 높다. 반면, 두번째 표을 보면, (성별을 기준으로)결측치을 처리한 것을 보여준다. 여기서는 여성이 남성보다 크로켓을 하는 기회가 더 높다는것을 볼 수 있다.

왜 데이터에 결측치이 있는가?

    데이터셋에서 결측치 처리의 중요성을 보았다. 이제 이들 결측치이 발생하는 이유를 확인해보자. 결측치은 두단계에서 발생한다.

  1. 데이터 추출(Extraction) : 추출 과정에서 문제가 있을 수 있다. 이런 경우, 데이터 보호장치(data guidian)과 함께 올바른 데이터를 다시 확인해야 한다. 몇몇 해시 프로시져 또한 확실한 데이터 추출을 위해 사용될 수 있다. 데이터 추출 단계에서의 오류는 보통 찾기 쉽고 쉡게 고쳐질 수 있다.
  2. 데이터 수집(Collection) : 이런 오류는 데이터 수집시 발생하고 수정하기 어렵다. 이는 4가지 형태로 분류될 수 있다.
    • 무작위로 완전히 누락(Missing Completely at Random)

      : 손실 변수의 확률이 모든 관측에 대해 동일할 때의 경우이다. 예를 들면, 데이터 수집 과정의 응답자는 공정한 동전 던지기로 수입을 신고하기로 결정한다. 만약 앞면이 나오면 응답자는 수입을 신고하고 뒷면이 나오면 신고하지 않는다. 여기 각 관측은 동일한 결측치의 가능성을 갖는다.
    • 무작위로 누락(Missing at Random)

      : 변수가 임의로 손실되고 있고 손실 비율이 다른 입력 변수 값/수준에 따라 변할
      때의 경우이다. 예를 들면 나이에 대한 데이터를 수집하고 있고 여자가 남자에 비해 결측치이 더 높은 결측치을 갖는 겾는다.
    • 관찰되지 않은 예측변수에 의한 누락(Missing that depends on unobserved predictors)

      : 결측치가 임의가 아니고 관측되지 않은 입력 변수와 관련 있는 경우이다. 예를 들면 의료 연구에서 특정 진단 프로그램이 불변을 야기한다면, 연구에서 빠질 가능성이 더 높다. 이 결측치는 모든 환자에 대한 입력 변수에 '불편'을 포함하지 않는 한 무작위가 아니다.
    • 결측치 자체에 따른 누락(Missing that depends on Missing value itself)

      : 결측치의 확률이 직접적으로 결측지 자신과 상관관계에 있는 경우이다. 예를 들면 더 높거나 더 낮은 사람들은 그들의 수입을 무응답으로 제공하려 한다.

결측치 처리를 위한 방법은?

  1. 삭제(Deletion) : 목록별(List wise) 삭제와 쌍별(Pair wise) 삭제의 두가지 형태가 있다.
    • 목록별 삭제에서는 결측치가 있는 곳의 관측치를 삭제한다. 간단함은 이 방법의 주요 이점중 하나이다. 하지만, 이 방법은 샘플의 크기를 줄이기 때문에 모델의 파워를 줄인다.
    • 쌍별 삭제에서는 흥미가 있는 변수가 존재하는 모든 경우에 대해 분석한다. 이 방법의 이점은 분석을 위해 가능한 많은 케이스를 유지하는 것이다. 단점중 하나는 다른 변수에 대해 다른 샘플 크기를 사용하는 것이다.
      
      
    • 삭제 방법은 결측 데이터의 특성이 무작위로 완전히 누락일때 사용된다. 그렇지 않으면 무작위가 아닌 결측치는 모델 출력을 편향시킬 수 있다.
  2. 평균/중간값/최빈값 대치 : 대치(imputation)는 결측치를 추정값으로 채우는 방법이다. 목적은 결측치 추정을 돕기 위해 데이터셋의 유효한 값에서 확인될 수 있는 알려진 관계를 쓰는 것이다. 평균/최빈값/중간값 대체(imputation)는 가장 자주 사용되는 방법중 하니이다. 이는 해당 변수의 모든 알려진 값의 평균 또는 중간값(양적 특성) 또는 최빈값(질적 특성)으로 주어진 특성에 대해 결측치를 대체하는 것으로 구성된다. 이는 두가지 형태가 될 수 있다.
    • 일반화된 대치(Generalized Imputation) : 이 경우, 해당 변수의 모든 비결측치에 대한 평균 또는 중간값을 계산하고 평균 또는 중간값으로 결측치를 대체한다. 위의 테이블에서처럼, 변수 'Manpower'의 값이 없다. 따라서 'Manpower'의 모든 비결측치의 평균(28.33)를 구해 결측치를 대치한다.
    • 유사한 경우 대치(Similar Case Imputation) : 이 경우, 남성(Male)(29.75)과 여성(Female)(25)의 비결측치에 대한 평균을 각각 계산하고 성별 기준으로 결측치를 대치한다. 남성은 29.75로 manpower가 대치되고 여성은 25이다.
  3. 예측 모델(Prediction Model) : 예측 모델은 결측치 조작을 위한 세련된 방법중 하나이다. 여기서 결측 데이터를 대체할 값을 추정하기 위한 예측 모델을 만든다. 이 경우, 데이터 셋을 두개로 나눈다. 하나는 변수에 대해 결측치가 없는 것과 다른 하나는 경측치가 있는 것이다. 첫번째 데이터셋은 모델의 훈련 데이터셋이 되는 반면 결측치가 있는 두번째 데이터셋은 테스트 데이터 셋이다. 그리고 결측치를 갖는 변수는 목표(target)변수가 된다. 다음으로 훈련 데이터의 다른 속성을 바탕으로 목표 변수를 예측하기 위한 모델을 만들고 테스트 데이터셋의 결측치를 채운다. 이를 위해 회귀(regression), ANOVA, 로지스틱(logistic) 회귀 그리고 다양한 모델링 기술을 사용할 수 있다. 이 접근방법에는 2가지 결점이 있다.
    1. 모델이 추정한 값은 보통 실제값(true value)보다 더 잘 동작한다.
    2. 데이터셋에서 속성과 결측치가 있는 속성과 관계가 없다면 모델은 결측치 추정에 대해 정확하지 않게 된다.
  4. KNN 대치(Imputation) : 이 방법에서 속성의 결측치는 값이 누락된 속성에 가장 유사한 주어진 속성의 수를 사용하여 대치된다.두 속성의 유사성은 거리(distance)함수로 결정된다. 이 또한 특정 이점과 단점이 있다.
    • 이점
      • KNN(K-Nearest Neighbour)는 양적/질적 속성 모두를 예측할 수 있다.
      • 결측 데이터를 갖는 각 속성에 대한 예측 모델 생성이 필요없다.
      • 데이터의 상관관계 구조는 고려사항이 된다.
    • 단점
      • KNN 알고리즘은 대규모 데이터셋 분석에서 많은 시간을 소모한다. KNN은 가장 유사한 인스턴스를 찾기위해 모든 데이터셋을 검색한다.
      • k-값 선택(choice)은 매우 중요하다. 높은 k값은 필요한 값과 크게 다른 속성을 포함하고 낮은 k.값은 중요한 속성의 누락을 내포한다.

    결측치를 다룬 이후, 다음 단계는 이상치를 다루는 것이다. 자주, 모델을 구축하는 동안 이상치를 방치하는 경향이 있다. 이상치는 데이터를 치우치게 하는 경향이 있고 정확도를 감소시킨다.


이상치 감지와 처리 기술(Techiques of Outlier Detection and Treatment)

이상치란?

    이상치는 세심한 주의가 필요하다 그렇지 않으면 넓은 범위로 잘못된 추정을 할 수 있기 때문에 보통 분석가와 데이터 과학자에 의해 사용되는 용어이다. 이상치는 멀리 떨어져 나타나는 관측치이며 샘플내 전체적인 패턴에서 벗어난다.

    예를 들어보자. 고객 정보를 프로파일링하고 고객의 연간 수입의 평균이 80만 달러인 것을 알았다. 하지만, 연간 수입이 400만 달러와 420만 달러인 개객이 두명 있다. 이 두 고객의 연간 수입은 나머지 사람들보다 훨씬 높다. 이 두 관측치는 이상치로 보여질 것이다.


이상치의 형태(Type)

    이상치는 일변량(Univariate)다변량(Multivariate)의 두가지 형태가 될 수 있다. 위에서 본 예제는 일변량 이상치이다. 일변량 이상치는 변수 하나의 분포를 보면 찾을 수 있다. 다변량 이상치는 n-차원 공간에서의 이상치이다. 이것을 찾기 위해서는 다차워에서의 분포를 찾아야만 한다.

    예제로 이해해 보자. 높이와 너비의 관계를 이해하려고 한다고 가정해 보자. 아래에 높이, 너비에 대한 일변량과 이변량 분포가 있다. 박스 그림을 보면 어떠한 이상치도 보이지 않는다.(상하로 $1.5 \times IQR$, 가장 일반적인 방법). 산포도로 보면 너비와 높이의 특정 부분(segment)에서 평균 아래에 두개, 위에 하나가 있다.


$1.5 \times IQR$ 규칙

  • $IQR = Q3 - Q1$

: 이상치를 찾기 위해 가장 많이 사용하는 방법

  1. 데이터의 사분위수간 범위 계산
  2. 사분위수간 범위(IQR)에 1.5를 곱함
  3. 3분위수에 $1.5 \times IQR$을 더함. 이 값보다 더 큰 수는 의심스러운 이상치이다.
  4. 1분위수에 $1.5 \times IQR$을 뺌. 이 값보다 더 작은 수는 의심스러운 이상치이다.

예제 : data = {1, 3, 4, 6, 7, 7 ,8, 8, 10, 12, 17}

->직관적으로는 17이 이상치로 보인다.

  • 5개의 요약수 : 최소 = 1, 1분위 = 4, 중앙값 = 7, 3분위 = 10, 최대 = 17
  • $Q3 - Q1 = 10 - 4 = 6$
  • $1.5 \times IQR = 1.5 \times 6 = 9$
  • $Q1 - 9 = 4 - 9 = -5$ : -5보다 작은 값이 없음
  • $Q3 + 9 = 10 + 9 = 19$ : 19보다 큰 값 없음

-> $1.5 \times IQR$규칙으로 보면 이상치가 존재하지 않는다.

이상치의 원인은?

    언제 이상치와 마주치게 되든지 이를 해결하느 이상적인 방법은 이상치를 갖는 이유를 찾는 것이다. 이를 다루는 방법은 발생 원인에 따라 달라지게 된다. 이상치의 원인은 두가지 광범위한 범주로 나눌 수 있다.

  1. 인공적인(오류) / 자연적이지 않은
  2. 자연적인

        이상치의 다양한 형태를 알아보자
  • 데이터 입력 오류(Data Entry Error)

    : 데이터 수집, 기록 또는 입력동안 방생된 오류같은 휴먼 오류(Human error)는 데이터에 이상치를 발생시킬 수 있다. 예를 들어, 고객의 년간 수입이 $100,000이다. 사고로 데이터 입력 담당이 추가적인 0을 입력한다. 이제 수입은 $1,000,000로 10배 더 높다. 분명하게 이것은 나머지와 비교했을 때 이상치가 될 것이다.
  • 측정 오류(Measurement Error)

    : 이상치의 가장 일반적인 원인이다. 이것은 측정 도구가 잘못되었을 때 발생된다. 예를 들면, 10대의 저울이 있다. 그중 9대는 정상이고 1대는 불량이다. 불량 저울에서 측정된 무게는 나머지보다 높거나 낮을 것아 이상치로 연결 될 수 있다.
  • 실험적 오류(Expe)

    : 이상치의 또다른 원인은 실험적 오류이다. 예를 들면 7명의 100미터 주자중에 한 주자가 출발 소리에 집충하지 못했다. 이는 그 주자가 늦게 출발하게 만든다. 따라서 이것은 주자의 기록이 다른 주자에 비해 더 길게 만들어 전체 기록이 이상치가 될 수 있다.
  • 의도적인 오류(Intentional Error)

    : 민감한 데이터를 수반하는 자기보고(self-reported) 측정에서 보통 발견된다. 예를 들면, 10대는 보통 그들이 술 소비량을 적게 신고한다. 단지 그들의 일부만이 실제 소비량을 신고한다. 여기서 실제 값은 소비를 적게 신고한 나머지 10대때문에 이상치처럼 보일 것이다.
  • 데이터 처리 오류(Data Processing Error)

    : 데이터 마이닝(data mining)을 수행하는 언제라도 여러 소스로부터 데이터를 추출한다. 이는 몇몇 조작 또는 추출 오류가 데이터셋에서 이상치가 될 가능성이 있다.
  • 샘플링 오류(Sampling Error)

    : 예를 들면, 운동선수의 키를 측정해야 한다. 실수로, 샘플에 약간의 농구선수를 포함한다. 이러한 포함은 데이터셋에 이상치를 발생시킬 수 있다.
  • 자연적 이상치(Natural Outlier)

    : 이상치가 인공적이지 않을 때(오류로 인한)가 자연적인 이상치이다. 예를 들면, 유명한 보험회사의 한사람과의 마지막 임무에서, 상위 50명의 재정 고문의 성과가 나머지보다 훨씬 높다는 것을 알았다. 놀랍게도 이는 오류로 인한 것이 아니다. 따라서 재정 고문과 어떠한 데이터 마이닝 작업을 수행할때는 별도로 이 부분을 처리했다.

데이터셋에서 이상치의 영향은?

    이상치는 데이터 분석과 통계적 모델링의 결과를 극적으로 바꿀 수 있다. 데이터 셋에서 이상치의 좋지않은 영향은 다음과 같다.

  • 오류 변동량을 증가시키고 통계적 테스트의 힘을 감소시킨다.
  • 이상치가 무작위로 배포된 것이 아니라면, 정상상태를 줄일 수 있다.
  • 실질적인 관심일 수 있는 추정치를 편향시키거나 영향을 줄 수 있다.
  • 또한 회귀의 기본 추정, ANOVA 그리고 다른 통계적 모델 추정에 영향을 미칠 수 있다.

    좀 더 자세히 이해하기 위해 데이터셋에 이상치가 있고 없고에 따라 데이터셋에 발생하는 것을 확인하기 위한 예제를 보자.

Example:


    위와 같이 이상치를 갖는 데이터셋은 평균과 표준편차의 차이가 크다. 이상치가 없는 데이터셋의 경우 평균이 5.45지만 이상치가 있는 데이터셋은 30으로 급증한다. 이것은 완전히 추정을 바꿀 수 있다.

이상치를 탐지하는 방법은?

    이상치 탐지를 위해 가장 일반적으로 사용되는 방법은 시각화이다. 박스그림, 히스토그램, 산점도같은 다양한 시각화 방법을 사용한다. 몇몇 분석가는 이상치 탐지를 위해 다양한 Thumb rule(경험 법칙, 대충이지만 실제에 근거한 방법)을 사용한다. 다음은 그중 몇가지 예이다.

  • $-1.5 \times IQR$에서 $1.5 \times IQR$ 범위를 벗어다는 값
  • 캡핑 방법(capping method) 사용. 5% ~ 95%의 범위를 벗어나는 값은 이상치로 볼 수 있다.
  • 데이터 포인트(Data Points), 평균에서 3배이상인 표준편차는 이상치로 볼 수 있다. ($<3\sigma$)
  • 이상치 탐지는 단지 영향력있는 데이터 포인트에 대한 데이터 검사의 특별한 경우이다. 따라서 비즈니스를 이해하는 것에 따라 달라진다.
  • 이변량(bivariate)과 다변량(multivariate) 이상치는 보통 영향지수, 레버리지 또는 거리를 사용하여 측정된다. 맨하탄 거리(Mahalanobis’ distance)와 Cook’s D같은 유명한 지수는 이상치 탐지를 위해 자주 사용된다.

이상치를 제거하는 방법은?

    이상치를 다루는 대부분의 방법은 관측치 삭제, 변환, 범주화(binning), 분리된 그룹으로 처리, 다른값으로 대치 그리고 다른 통계적 방법같이 결측치를 다루는 방법과 유사하다. 여기서는 이상치를 다루는 일반적인 기술에 대해 살펴본다.

  • 관측치 삭제(Deleting observations)

    : 데이터 입력/처리 오류 또는 이상 관측치가 애우 작다면 삭제한다. 또한 이상치 제거를 위해 양끝을 잘라낼 수도 있다.(trimming)

  • 변환과 범주화(Transforming and binning values)
    : 변수 변환 또한 이상치를 추정할 수 있다. 값의 자연로그는 극단적인 값에 의한 변동폭을 줄인다. 범주화(구간화) 또한변수 변환의 형태이다. 결정트리(decision tree) 알고리즘은 변수의 구간화로 이상치를 잘 다룬다. 또한 가중치를 다른 관측치에 할당하는 과정을 사용할 수 있다.

      
      
  • 대치(Imputing)
    : 결측치 대치와 같이 이상치를 대치할 수 있다. 평균, 중간값, 최빈값 대치 방법을 사용할 수 있다. 값을 대치하기 전에 자연적 이상치인지 인공적인 이상치인지를 분석해야 한다. 만약 인공적이라면 값을 대치할 수 있다. 또한 이상 관측치를 예측하기 위한 통계적 모델을 사용하여 값을 대치할 수도 있다.

  • 별개로 처리(Treat separately)
    : 이상치가 의미가 있다면, 통계적 모델에서 별개로 다루어야 한다. 한가지 접근방법은 두개의 다른 그룹으로 다루고 두 그룹에 대한 개별 모델을 구축하고 결과를 합치는 것이다.

    여기까지 데이터 탐색, 결측치 처리와 이상치 탐지와 처리 기술으ㅢ 단계에 대해 알아보았다. 이 3단계는 raw 데이터를 정보 가용성과 정확도 면에서 더 좋게 만든다. 이제 데이터 탐색의 마지막 단계인 특성공학(Feature Engineering)에 대해 알아보자.


특성 공학 기술 (The Art of Feature Engineering)

특성공학이란?

    특성공학은 데이터로부터 더 많은 정보를 추출하는 과학이다. 어떠한 새로운 데이터도 추가되지 않지만 실제로 이미 가지고 있는 데이터를 더 유용하게 만든다.

    예를 들면, 날짜에 기초하여 쇼핑몰의 고객수를 예측한다고 해보자. 만약 날짜를 직접적으로 사용하려한다면 데이터로부터 의미있는 시각을 추출할 수 없을 것이다. 이는 고객수가 요일보다 날짜가 영향을 덜 받기 때문이다. 이제 요일정보가 데이터에 내포된다. 모델을 더 좋게 만들기 위해 이 정보를 끌어내야 한다.

    데이터로부터 정보를 끌어내는 것이 특성공학이다.

특성공학 절차

    데이터 탐색에서 처음 5단계 - 변수 인식, 일변량, 이변량 해석, 결측치 대치, 이상치 처리-를 완료하고 특성공학을 수행한다. 특성공학은 아래 두 단계로 나눌 수 있다.

  • 변수 변환(Variable transformation)
  • 변수/특성 생성(Variable/Feature creation)

    이 두 기술은 테이터 탐색에서 필수적이며 예측의 강도에서 주목할만한 영향을 갖는다.

변수변환(Variable Transformation)이란?

    데이터 모델링에서 변환은 함수에 의한 변수 치환을 나타낸다. 예를 들면 변수 x를 $\sqrt{x}$, $\sqrt[3]{x}$ 또는 $\log{x}$로 치환하는 것이 변환이다. 다른 말로 변환은 분포 또는 다른 변수와의 관계를 바꾸는 과정이다.

    변수 변환이 유용한 경우를 보자

언제 변수변환을 사용해야 하는가?

    아래는 변수변환이 필요한 경우이다.

  • 변수의 스케일을 변화시키거나 더 나은 이해를 위해 변수의 값을 표준화(standardize)하고자 할때. 다른 스케일의 데이터라면 이 변환은 필수지만 변수 분포의 모양은 변하지 않는다.
  • 복잡한 비선형 관계를 선형 관계로 변환 할 수 있다. 변수간 선형 관계의 존재는 비선형 또는 곡선 관계에 비교하여 이해하기 쉽다. 변환은 비선형 관계를 선형으로 바꿀 수 있다. 산점도는 두 연속성 변수간 관계를 찾는데 사용된다. 이들 변환은 또한 예측을 개선한다. Log 변환은 이런 경우에 일반적으로 사용되는 변환 기술중 하나이다.
    
    
  • 추론을 이해하고 생성하기 쉽기 때문에 대칭 분포가 치우친(skewed) 분포보다 선호된다. 몇몇 모델링 기술은 변수의 정규분표가 필요하다. 따라서 치우친 분포는 왜도(skewness)를 감소시키는 변환을 사용할 수 있다. 오른쪽으로 치우친 분포에 대해서 $\sqrt{x}$, $\sqrt[3]{x}$, $log{x}$를 취하고 좌측으로 치우친 분포는 $\sqrt{x}$, $\sqrt[3]{x}$, $e^x$를 취한다.
    
    
  • 변수변환은 또한 구현 관점(Implementation point of view)에서 수행된다.(인간 참여) 좀 더 명확하게 이해해 보자. 직원 능력에 대한 프로젝트에서 나이가 직접적으로 직원의 성과와 관계있다는 것을 알았다. 연령 기반 프로그램 출시는 구현 문제를 발생시킬 수 있다. 그러나 30세 미만, 30~45세, 45세 초과의 3 그룹으로 세일즈 에이젼트를 나누고 각 그룹에 대해 다른 3가지 전략을 만드는 것은 판단력있는 접근방법이다. 이 범준화 기술은 Binning of variables로 알려져 있다.

변수변환의 일반적인 방법은?

    변수를 변환하기 위한 여러 방법이 있다. 이미 언급한 바와 같이 몇몇 방법은 $\sqrt{x}$, $\sqrt[3]{x}$, $\log{x}$, binning, reciprocal등을 포함한다.이들 변환 방법의 장,단점을 부각하여 살펴보자

  • 로그(Logarithm) : 변수의 로그는 분포도에서 변수의 분포 모양을 바꾸기 위해 사용되는 일반적인 변환 방법이다. 이 변환은 변수의 오른쪽 치우침을 줄이기 위해 보통 사용된다. 그렇지만 0 또는 음수에는 적용할 수 없다.
  • 제공/세제곱 루트 : 변수의 제곱/세제곱 루트는 변수 분포에서 음향 효과(sound effect)를 갖는다. 그러나 로그변환만큼 의미있지는 않다. 세제곱 루트는 그 자체로 이점이 있다. 이는 0을 포함한 음수에 적용할 수 있다. 제곱 루트는 0을 포함한 양수에 적용할 수 있다.
  • Binning : 변수를 범주화하기 위해 사용된다. 원래 변수, 비율 또는 빈도에서 수행된다. 범주 기술의 결정은 비즈니스 이해에 기초한다. 예를 들면 수입은 높음, 평균, 낮음의 세 범주로 나눌 수 있다. 또한 하나 이상의 값에 따른 공변량 비닝(co-variate binning)또한 수행할 수 있다.

특성 변수 생성이란? 그리고 이점은?

    특성(Feature)/변수(Variable) 생성은 기존 변수에 기초하여 새로운 변수/특성을 생성하는 과정이다. 예를 들면 데이터셋에서 입력 변수로 날짜(dd-mm-yy)가 있다고 하자. 여기서 목표변수와 더 나은 관계를 갖을 수 있는 일, 월, 년, 주, 주말같은 새로운 변수를 생성할 수 있다. 이 단계는 변수에서 숨겨진 관계를 부각시키기기 위해 사용된다.


    새로운 특성을 생성하기 위한 몇가지 기술이 있다. 일반적으로 사용되는 방법 몇가지를 살펴보자.

  • 파생변수 생성(Creating derived variables) : 함수 또는 다른 방법으로 기존 변수로부터 새로운 변수를 생성하는 것을 나타낸다. 이부분은 “Titanic – Kaggle competition”을 통해 살펴보자. 데이터셋에서 변수 '나이'는 결측값이 있다. 결측값 예측을 위해 새로운 변수로 이름의 salutation(Master, Mr, Miss, Mrs)를 사용한다. 어떻게 어떤 변수가 생성될 것인지를 결정할 수 있을까? 솔직히 이는 분석자의 비즈니스 이해도, 분석자의 호기심과 문제에 대한 가설에 달려있다. 로그 변환, 비닝 등과 같은 방법 또한 새로운 변수 생성에 사용될 수 있다.
  • 더미(dummy)변수 생성 : 더미 변수의 가장 일반적인 적용중 하나는 범주형 변수를 숫자형으로 변환하는 것이다. 더미 변수는 또한 지표(indicator) 변수로도 불린다. 통계모델에서 예측변수로써 범주형 변수를 갖는 것이 유용하다. 범주형 변수는 0과 1의 값을 갖을 수 있다. 변수 '성별'이 있다고 하자. 그러면 값 1(남성)과 값 0(남성이 아님)을 갖는Var_male과 값 1(여성)과 값 0(여성이 아님)을 갖는 Var_Female의 두개 변수를 만들 수 있다. 또한 n 또는 n-1 더미 변수로 두개 이상의 분류가 있는 범주형 변수에 대한 더미 변수도 만들 수 있다.
    
    
반응형

+ Recent posts