본문 바로가기

자격증/[2021]빅데이터분석기사

[빅분기D-45] 2021 빅데이터 분석기사 필기 준비 #2. 데이터 전처리 - 분석 변수 처리

PART02. 빅데이터 탐색 - CH01. 데이터 전처리


SECTION 02. 분석 변수 처리

 

1. 변수 선택

 

1) 회귀분석의 사례- 예를들어, 회귀모형에 의한 분석의 경우 최종 결과를 도출해 내기 위해서 사용된 독립 변수가 m개이고 이를 통해서 얻어진 설명력이 R제곱 = 89% 라고 했을 때, m보다 작은 n개만을 사용시 동일한 설명력이 나온다면 변수의 효율적 선택의 필요성이 증가함

 

2) 변수별 모형의 분류

  • 전체 모형 : 모든 독립변수를 사용한 모형으로 정의함
  • 축소 모형 : 전체 모형에서 사용된 변수의 개수를 줄여서 얻은 모형
  • 영 모형 : 독립변수가 하나도 없는 모형

⭐3) 변수의 선택 방법

① 전진 선택법

  • 영 모형에서 시작, 모든 독립변수 중 종속변수와 단순상관계수의 절댓값이 가장 큰 변수를 분석모형에 포함시키는 것
  • 부분 F검정을 통해 유의성 검증을 시행, 유의한 경우는 가장 큰 F통계량을 가지는 모형을 선택하고 유의하지 않은 경우는 변수선택 없이 과정을 중단
  • 한번 주가된 변수는 제거하지 않는 것이 원칙

② 후진 선택법

  • 전체 모델에서 시작, 모든 독립변수 중 종속변수와 단순상관계수의 절댓값이 가장 작은 변수를 분석모형에서 제외시킴
  • 부분 F검정을 통해 유의성 검증을 시행, 유의하지 않은 경우는 변수를 제거하고 유의한 경우는 변수제거 없이 과정을 중단함
  • 한번 제거된 변수는 추가하지 않음

③ 단계적 선택법

  • 전진 선택법과 후진 선택법의 보완방법
  • 전진 선택법을 통해 가장 유의한 변수를 모형에 포함 후 나머지 변수들에 대해 후진 선택법을 적용하여 새롭게 유의하지 않은 변수들을 제거함
  • 제거된 변수는 다시 모형에 포함하지 않으며 유의한 설명변수가 존재하지 않을떄까지 과정을 반복함

 

2. 차원 축소

 

1) 자료의 차원

- 분석하는 데이터의 종류의 수

 

2) 차원의 축소

- 차원의 축소는 어떤 목적에 따라서 변수(데이터의 종류)의 양을 줄이는 것

 

3) 차원 축소의 필요성

복잡도의 축소: 데이터를 분석하는 데 있어서 분석시간의 증가(시간복잡도)와 저장변수 양의 증가(공간복잡도)를 고려시 동일한 품질을 나타낼 수 있다면, 효율성 측면에서 데이터 종류의 수를 줄여야 함

 

과적합의 방지

  • 차원의 증가는 분석모델 파라미터의 증가 및 파라미터 간의 복잡한 관계의 증가로 분석결과의 과적합 발생의 가능성이 커짐. 이것은 분석모형의 정확도(신뢰도) 저하를 발생시킬 수 있음
  • 작은 차원만으로 안정적인 결과를 도출해 낼 수 있다면 많은 차원을 다루는 것보다 효율적임

해석력의 확보

  • 차원이 작은 간단한 분석모델일수록 내부구조 이해가 용이하고 해석이 쉬워짐
  • 해석이 쉬워지면 명확한 결과도출에 많은 도움

4) 차원축소의 방법- 데이터 분석에 있어서 차원 축소의 필요성을 인지하고 실제적으로 차원을 축소하는 데 사용될 수 있는 방법

 

① 요인 분석(Factor Analysis)

- 개념 : 다수의 변수들간의 관계를 분석하여 공통차원을 축약하는 통계분석 과정- 목적

  • 변수 축소 : 다수의 변수들의 정보손실을 억제하면서 소수의 요인으로 축약
  • 변수 제거 : 요인에 대한 중요도 파악
  • 변수특성 파악 : 관련된 변수들이 묶음으로써 요인 간의 상호 독립성 파악이 필요
  • 타당성 평가 : 묶여지지 않는 변수의 독립성 여부를 판단
  • 파생변수 : 요인점수를 이용한 새로운 변수 생성. 회귀분석, 판별분석 및 군집분석 등에 이용

- 요인 분석의 특징 : 독립변수, 종속변수 개념이 없음. 주로 기술 통계에 의한 방법 이용- 요인 분석의 종류

  • 주성분 분석, 공통요인 분석 특이값 분해(SVD), 행렬과 음수미포함 행렬분해(NMF) 등
  • 공통요인 분석은 분석대상 변수들의 기저를 이루는 구조를 정의하기 위한 요인분석 방법으로 변수들이 가지고 있는 공통분산만을 이용하여 공통요인만 추출하는 방법

⭐② 주성분분석(PCA : Principal Component Analysis)

- 개념

  • 분포된 데이터들의 특성을 설명할 수 있는 하나 또는 복수개의 특징을 찾는것
  • 서로 연관성이 있는 고차원공간의 데이터를 선형연관성이 없는 저차원으로 변환하는 과정을 거침
  • 기존의 기본 변수들을 새로운 변수의 세트로 변환하여 차원을 줄이되 기존 변수들의 분포특성을 최대한 보존하여 이를 통한 분석결과의 신뢰성을 확보함

- PCA 방법의 이해

  • 2차원 좌표평면에 n개의 점 데이터들이 타원형으로 분포되어 있을 때, 이 데이터들의 분포 특성을 2개의 벡터로 가장 잘 설명할 수 있는 방법은 그림에서와 같이 v1, v2 두 개의 벡터로 데이터분포를 설명하는 것
  • v1의 방향과 크기, 그리고 v2의 방향과 크기를 알면 이 데이터분포가 어떤 형태인지를 가장 단순하면서도 효과적으로 파악가능
  • PCA는 데이터 하나하나에 대한 성분을 분석하는 것이 아니라, 여러 데이터들이 모여 하나의 분포를 이룰때, 이 분포의 주성분을 분석해 주는 방법이라고 할 수 있음

- PCA의 특징

  • 차원 축소에 폭넓게 사용되며, 어떠한 사전적 분포 가정의 요구가 없음
  • 가장 큰 분산의 방향들이 주요 중심 관심으로 가정함
  • 본래의 변수들의 선형결합으로만 고려함
  • 차원의 축소는 본래의 변수들이 서로 상관이 있을때만 가능함
  • 스케일에 대한 영향이 큼. 즉, PCA 수행을 위해선 변수들 간의 스케일링이 필수

③ 특이값 분해(SVD : Singular Value Decomposition)

- 특이값 분해 소개(선형대수)

  • 데이터 공간을 나타내는 m x n 크기의 행렬 M에 대해, 다음과 같이 분해 가능

                                             M = U∑V⊺

 

  • 여기서 U는 m x n 크기의 직교행렬이고, 시그마는 m x n 크기의 대각행렬, Vt는 n x n 크기의 직교행렬임
  • Orthogonal Matrix의 정의 : 행렬의 열벡터가 독립이라는 의미로 다음과 같은 관계가 성립

U가 직교행렬이면 UtU = Im (여기서 Im은 단위행렬)

즉, Ut = U-1 (역행렬이 됨)

  • Diagonal Matrix의 정의 : 행렬의 대각성분을 제외한 나머지 행렬의 원소의 값이 모두 0인 행렬

- 특이값 분해의 차원 축소 원리

  • 수학적 원리 : SVD 방법은 주어진 행렬 M을 여러개의 행렬M과 동일한 크기를 갖는 행렬로 분해할 수 있으며 각 행렬의 원소값의 크기는 Diagonal Matrix에서 대각성분의 크기에 의해 결정됨
  • 데이터의 응용 : 기존의 전차원의 정보 A를 SVD에 의해서 3개의 행렬로 분해하며 적당한 k(특이값)만을 이용해 원래 행렬A와 비슷한 정보력을 가지는 차원을 만들어 낼 수 있음
  • 즉, 큰 몇 개의 특이값을 가지고도 충분히 유용한 정보를 유지할 수 있는 차원을 생성해 낼 수 있음(차원축소)

④ 행렬과 음수 미포함 행렬분해(NMF : Non-negative Matrix Factorization)

- 음수 미포함 행렬분해는 음수를 포함하지 않은 행렬 V를 음수를 포함하지 않은 두 행렬의 곱으로 분해하는 알고리즘- - NMF의 이해

  • 일반적으로 W의 열개수와 H의 행개수가 WH=V가 되도록 결정됨. 기존 행렬 V와 분해한 음수 미포함 행렬 W와 H의곱과의 차이를 오차 U라고 이야기함. V=WH+U, U의 원소들은 양수나 음수가 될 수 있음
  • W와 H의 크기가 V보다 작기 때문에 저장하거나 다루기에 용이함. 또한 V를 원래 정보보다 상대적으로 적은 정보로 표현하여 분해한 행렬 하나가 전체 정보의 대략적인 정보를 제시할 수 있음

- NMF의 차원 축소

  • 행렬 곱셈에서 행렬은 결과행렬보다 훨씬 적은 차원을 가지기 때문에 NMF가 차원을 축소할 수 있음

3. 파생변수 생성

 

- 데이터 마트는 데이터 웨어하우스로부터 복제 또는 자체 수집된 데이터 모임의 중간층이지만 분석을 위한 기본 단계변수가 모여지는 단계로 요약변수 파생변수들의 모임이라고 볼 수 있음

 

⭐1) 파생변수

  • 사용자가 특정 조건을 만족하거나 특정 함수에 의해 값을 만들어 의미를 부여하는 변수로 매우 주관적일 수 있으므로 논리적 타당성을 갖출 필요성 有
  • 세분화 고객행동예측, 캠페인반응예측 등에 활용할 수 있음
  • 특정 상황에만 유의미하지 않게 대표성을 나타나게 할 필요가 있음

⭐2)요약변수

  • 수집된 정보를 분석에 맞게 종합한 변수임
  • 데이터 마트에서 가장 기본적인 변수임
  • 많은 분석모델에서 공통으로 사용될 수 있어 재활용성이 높음

3) 요약변수 vs 파생변수

 

① 예시를 통한 요약변수와 파생변수의 이해

  • 고객관계관리(CRM) 데이터를 통한 요약변수와 파생변수의 정리
요약변수(단순 종합 개념) 파생변수(주관적 변수 개념)
매장이용 횟수 주 구매매장 변수
구매상품품목 개수 구매상품 다양성 변수
기간별 구매금액/횟수 주 활동지역 변수
상품별 구매금액/횟수 주 구매상품 변수

② 요약변수 처리시의 유의점

  • 처리(단어의 빈도 초기행동변수 트렌드변수 등) 방법에 따라 결측치의 처리 및 이상값 처리에 유의해야 함
  • 연속형 변수의 구간화 적용과 고정된 구간화를 통한 의미 파악시 정구간이 아닌 의미 있는 구간을 찾도록 해야함

③ 파생변수 생성 및 처리의 유의점

  • 특정 상황에만 의미성 부여가 아닌 보편적이고 전 데이터구간에 대표성을 가지는 파생변수 생성 필요

4. 변수 변환

 

1) 변수 변환의 개념

- 데이터를 분석하기 좋은 형태로 바꾸는 작업을 의미함. 수학적 의미로 변환은 기존의 변수 공간에서는 해결하거나 관찰할 수 없는 사실을, 변환해서 해석이 용이해지거나 취급이 단순해지는 장점을 가짐

- 데이터의 전처리 과정 중 하나로 간주됨

 

2) 변수 변환의 방법

① 범주형 변환

- 연속형 변수 중에서 변수자체로의 분석보다는 분석 결과의 명료성 및 정확성을 배가시키기 위해 범주형으로 바꾸는 것이 좋은 경우가 있음

 

'소득이 100만원 늘 때마다 사교육비의 지출이 10만원 증가한다', 보다는 상위 10% 소득가정의 사교육비 지출이 하위 10%보다 10배많다.' 식의 설명이 이해가 쉬움

 

- 이 경우 소득의 연속적 데이터를 그대로 사용하기 보다는 순위형 데이터로 범주를 나누어 상대비교를 하는 방법, 즉 연속형 데이터를 범주형 데이터로 나누는 설명이 효과적임을 알 수 있음

 

⭐② 정규화

- 분석을 정확히 하려면 원래 주어진 연속형(이산형) 데이터 값을 바로 사용하기 보다는 정규화를 이용하는 경우가 타당할 수 있음. 특히, 데이터가 가진 스케일이 심하게 차이나는 경우 그 차이를 그대로 반형하기 보다는 상대적 특성이 반영된 데이터로 변환하는것이 필요함

 

  • 일반 정규화 : 수치로 된 값들을 여러 개 사용할 때 각 수치의 범위가 다르면 이를 같은 범위로 변환해서 사용하는데 이를 일반 정규화라고 함

두 과목의 시험을 가지고 평가하는데 과목 A의 시험은 10점만점이고, 다른 과목 B는 50점 만점이라고 하자. 만약 A에서는 8점, B에서는 20점을 받았을 때, 이것을 정규화하면 8/10=0.8점, 20/50=0.4점이 되고 평점은 0.6점이 됌

 

  • 최소 - 최대 정규화 : 데이터를 정규화하는 가장 일반적인 방법

- 모든 feature에 대해 최소값 0, 최대값 1로, 그리고 다른 값들은 0과 1사이의 값으로 변환

- 만약 X라는 값에 대해 최소-최대 정규화를 한다면 아래와 같은 수식을 사용할 수 있음

 

Min-Max Normalization = (X-Min)/(Max-Min)

 

어떤 특성의 최소값이 20이고 최대값이 40인경우 30은 딱 중간이므로 0.5로 변환됌

 

- 최소-최대 정규화의 단점은 이상치의 영향을 많이 받는다는 것

 

  • Z-Score 정규화 : 이상치 문제를 피하는 데이터 정규화 전략

Z score = (x -mean) / std. deviation

 

- 만약 데이터의 값이 평균과 일치하면 0으로 정규화되고, 평균보다 작으면 음수, 평균보다 크면 양수로 나타남. 이때 계산되는 음수와 양수의 크기는 그 데이터의 표준편차에 의해 결정됌. 따라서 만약 데이터의 표준편차가 크면(값이 넓게 퍼져있으면) 정규화 되는 값이 0에 가까워 짐

- 이상치는 잘 처리하지만 정확히 동일한 척도로 정규화된 데이터를 생성하지 않는다는 점에 유의

 

③ 로그변환

- 로그변환이란 어떤 수치값을 그대로 사용하지 않고 여기에 로그를 취한 값을 사용하는 것

- 데이터 분석에서 로그를 취하는 게 타당한 경우가 종종 있는데 먼저 로그를 취하면 그 분포가 정규분포에 가깝게 분포하는 경우가 있음. 이런 분포를 로그 정규분포를 가진다고 함.

 

 X ~ ln(X)

 

  • 로그변환분포를 사용하는 전형적 데이터

- 국가별 수출액, 사람의 통증 정도 수치화, 개별 주식의 가격이용 변동성 분석 등

- 데이터 분포의 형태가 우측으로 치우친 경우 정규분포화를 위해 로그변환을 사용함

 

④ 역수변환

- 어떤 변수를 데이터 분석에서 그대로 사용하지 않고 역수를 사용하면 오히려 선형적인 특성을 가지게되어 의미를 해석하기가 쉬워지는 경우

- 데이터분포의 형태로 보면 데이터의 분포형태가 극단적인 우측으로 치우친 경우 정규분포화를 위해 역수변환 사용

 

 X ~ 1/X

 

⑤ 지수변환

- 어떤 변수를 데이터분석에 그대로 사용하지 않고 지수를 사용하면 오히려 선형적인 특성을 가지게 되어 의미를 해석하기가 쉬워지는 경우

- 데이터의 분포형태가 좌측으로 치우친 경우 정규분포화를 위해 지수변환을 사용함

 

X~Xⁿ

 

⑥ 제곱근변환

- 어떤 변수를 데이터 분석에 그대로 사용하지 않고 제곱근을 사용하면 오히려 선형적인 특성을 가지게 되어 의미를 해석하기가 쉬워지는 경우

- 데이터 분포의 형태로 보면 좌측으로 약간 치우친 경우 정규분포화를 위해 제곱근 변환을 사용함

 

X~√X

 

⑦ 분포 형태별 정규분포 변환

모집단의 분포형태별로 사용가능한 변수변환이 다름. 최종적으로 정규분포 형태를 지향

 

변수변환 전 분포 사용변수 변환식 변수변환 후 분포
좌로 치우침 정규분포화
좌측으로 약간 치우침
우측으로 약간 치우침 √X
우측으로 치우침 ln(X)
우측으로 극단적으로 치우침 1/X

 

기본적으로 단일집단의 정규성 검정은 데이터 분포의 형태를 눈으로 확인할 수도 있지만, 샤피로테스트 또는 큐큐플롯을 이용해 확인 가능하며, 결과에 따라 적당한 변수변환식을 사용하여 정규분포 형태로 변환이 가능할 수 있음

 


5. 불균형 데이터 처리

 

어떤 데이터에서 각 클래스(주로 범주형 반응 변수)가 갖고 있는 데이터의 양에 차이가 큰 경우, 클래스 불균형이 있다고 말함.

 

병원에서 질병이 있는 사람과 없는 사람의 데이터를 수집했을때, 일반적으로 질병이 있는 사람이 질병이 없는 사람에 비해 적음. 병원 데이터뿐 아니라 대부부분의 '현실데이터'에 클래스 불균형 문제 有

 

⭐1) 불균형데이터의 문제점

- 데이터 클래스 비율이 너무 차이가 나면 단순히 우세한 클래스를 택하는 모형의 정확도가 높아지므로 모형의 성능판별이 어려워짐. 즉, 정확도가 높아도 데이터 개수가 적은 클래스의 재현율이 급격히 작아지는 현상 발생

  결과
거짓
실험 TP FP
거짓 FN TN

- 정확도(Accuracy) 

 

- 재현율(Recall) : T를 T라고 예측

2) 불균형 데이터의 처리 방법

① 가중치 균형방법

데이터에서 loss를 계산할 때 특정 클래스의 데이터에 더 큰 loss값을 갖도록 하는 방법. 즉, 데이터 클래스의 균형이 필요한 경우로 각 클래스별 특정 비율로 가중치를 주어서 분석하거나 결과를 도출하는 것으로 정의함.

 

  • 고정 비율 이용 : 클래스의 비율에 따라 가중치를 두는 방법인데, 예를 들어 클래스의 비율이 1:5라면 가중치를 5:1로 줌으로써 적은 샘플 수를 가진 클래스를 전체 loss에 동일하게 기여하도록 할 수 있음.
  • 최적 비율 이용 : 분야와 최종 성능을 고려해 가중치 비율의 최적 세팅을 찾으면서 비중치를 찾아가는 방법

② 언더 샘플링과 오버 샘플링

비대칭 데이터는 다수 클래스 데이터에서 일부만 사용하는 언더샘플링이나 소수 클래스 데이터를 증가시키는 오버샘플링을 사용하여 데이터 비율을 맞추면 정밀도가 향상됌.

  • 언더샘플링 : 언더샘플링은 대표클래스의 일부만을 선택하고, 소수클래스는 최대한 많은 데이터를 사용하는 방법임. 이때 언더샘플링된 대표클래스 데이터가 원본 데이터와 비교해 대표성이 있어야함
  • 오버샘플링 : 소수 클래스의 복사본을 만들어, 대표 클래스의 수만큼 데이터를 만들어 주는 것. 똑같은 데이터를 그대로 복사하는 것이기 때문에 새로운 데이터는 기존 데이터와 같은 성질을 갖게됌.