Feature Engineering

이혜빈·2022년 11월 10일
0

데이터 분석의 일반적인 순서

  1. 데이터 수집
  2. 데이터 전처리
  3. 탐색적 데이터 분석(EDA)
  4. 특성 공학(Feature Engineering)
    +머신러닝

Feature Engineering을 위한 기초 개념

Feature 종류

৹ Categorical

  • Nominal: 여러 가지로 나뉘고 자연적인 순서가 없는 범주형 변수
  • Ordinal: 여러 가지로 나뉘고 자연적인 순서가 있는 범주형 변수

৹ Numerical

  • Discrete: 유한하거나 개수를 헤아릴 수 있는 숫자형 변수
  • Continuous: 무한하거나 개수를 헤아릴 수 없는 숫자형 변수

Feature Engineering의 분류

৹ 특성 선택 (Feature Selection)

  • 해당 도메인 전문가의 지식이, 특성의 중요도에 따라 일부 특성을 버리거나 선택
  • 과대적합을 방지하기 위해 비교적 중요하지 않은 Feature 제외

৹ 특성 추출 (Feature Extraction)

  • 특성들의 조합으로 아예 새로운 특성 생성
    ex. 주성분 분석(PCA)

৹ 범위 변환(Scaling)

  • 변수의 분포가 편향되어 있을 경우, 이상치가 많이 존재할 경우 등 변수의 특성이 잘 드러나지 않고 활용하기 어려울 경우 변수의 범위를 바꾸어준다.
  • 변수와 분산의 편차를 바꾸어 변수간 규모 차이를 줄인다.

৹ 변형(Transform)

  • 기존에 존재하는 변수의 성질을 이용하여 새로운 변수 생성

৹ 범주화(Binning)

  • 연속형 변수를 범주형 변수로 변환
  • Numerical Feature만으로는 경향을 보기 어려울 때

৹ 숫자화(Dummy)

  • 범주형 변수를 연속형 변수로 변환
  • Categorical Feature는 조작이 어렵기 때문

데이터 전처리 & EDA

데이터 탐색

- info()

  • 데이터프레임에 대한 요약 정보 출력
  • Dtype => Feature의 자료형 확인

- select_dtypes()

  • 데이터프레임의 Feature를 자료형에 따라 나눠준다.
  • Categorical Features와 Numerical Features의 개수를 알 수 있다.

결측치

  • 결측치: Feature가 적절한 값을 갖지 못하고 무의미한 값을 갖는 경우
  • 데이터 조작 시 오류를 일으키거나 데이터에 대해 잘못된 결론을 내릴 수 있다.
  • None, Null, NaN(Not a Number), “ “(공백), “-” 등

이상치

  • Numerical Feature에서 일반적인 값 분포에서 벗어난 값
  • 데이터 해석이나 머신러닝 모델의 학습을 방해한다.
  • 찾는 방법
  1. 값의 범위를 지정하여 범위에서 벗어나는 값 찾기
    • 비교적 기준이 명확하고 과정이 간결
    • 데이터 비전문가에게 설명하기 어려울 수 있다.
  2. 데이터를 시각화하여 그래프에서 눈에 띄는 값 찾기
    • 어떤 데이터가 왜 이상치인지 한눈에 들어온다.
    • 기준이 다소 주관적일 수 있다.
  • 처리: 제거하거나 적절한 값으로 변환

희소값

  • Categorical Feature에서 빈도가 낮은 값
  • 데이터 해석을 어렵게 하고 머신러닝 성능을 낮출 수 있다.
  • 전체 데이터의 경향을 파악하기 어렵게 한다.

Feature Scaling

  • 트리기반 모델은 정보 균일도를 기반으로 되어 있기 때문에 피처스케일링이 필요 없다.
  • 트리기반 모델은 데이터의 절대적인 크기보다 상대적인 크기에 영향을 받기 때문에 스케일링을 해도 상대적 크기관계는 같다.

중요성

  • 서로 다른 변수끼리 비교하기 편리하다.
  • Feature Scailing 없이 작동하는 알고리즘에서 더 빨리 작동한다.
  • 머신러닝 성능이 상승한다.
  • (Robust scaling) 사분위수를 기준으로 값을 스케일링하여 이상치가 매우 큰 값이나 매우 작은 값을 갖는 경우 이를 완화시켜주는 효과가 있다.

스케일링 기법

① 표준화 (Z-score scaling)

  • 정의: 평균을 빼주고 표준편차로 나눠준다.
  • 장점: 표준편차가 1, 중심을 0으로 하는 표준 정규 분포를 갖도록 조정
  • 단점: 평균을 이용하여 계산 ⇒ 이상치에 영향을 받는다.
  • 공식: z = (X - X.mean) / std

② Min-Max scaling

  • Feature를 지정된 범위로 확장하여 기능 변환 (기본: 0~1 사이 값으로 만든다.)
  • 단점: 이상치를 포함하고 있으면 범위설정에 영향이 가기 때문에 이상치에 의해 영향을 많이 받는다
  • 공식: X_scaled = (X - X.min) / (X.max - X.min)

③ Robust scaling

  • 정의: 중간값을 빼주고 분위수 범위(기본: IQR)로 나눠준다 => 이상치에 덜 민감
  • 장점: 변수의 분산을 더 잘 보존, 이상치 제거에 효과적
  • 공식: X_scaled = (X - X.median) / IQR

트랜스포메이션

  • Feature Scaling이 잘 되었어도 아직 표준정규분포 형태가 아니다.
  • 표준정규분포 형태로 만들기 위해 Log Transformation 필요
    ⇒ log함수: x값에 대해 상대적으로 작은 스케일에서는 키우고. 큰 스케일에서는 줄여주는 효과

정규분포와 트랜스포메이션

  • Scaling은 Feature의 범위를 조정하지만, Feature의 분포 자체는 유지되기 때문에 일반적으로 Feature Scaling편향된 분포나 이상치에 취약
    ⇒ Transformation을 적용한 이후 Feature Scaling을 적용하면 표준정규분포를 얻는다.
  • 정규분포가 중요한 이유?
    • log함수는 x값이 커질수록 기울기가 완만해진다.
      = x값이 작을수록 y의 변화량이 크고, x값이 클수록 y의 변화량이 작다.
    • 작은 숫자들 사이의 차이는 벌어지고 큰 숫자들 사이의 차이는 줄어든다.
    • 편향된 Feature에 log를 적용하면 더 고르게 분포되어 y값을 예측하는데 더 유용하다.

이산화

  • Numerical Feature를 일정 기준으로 나누어 그룹화하는 것

필요성

  • 우리의 사고방식과 부합하는 측면이 있어 직관적이다.
    ex) 한 그룹의 구성원을 나이가 다양하다.
    → 10살 단위로 나누어 20대, 30대, … 분석하면 경향이 뚜렷해지고 이해하기 쉬워진다.
  • 데이터 분석과 머신러닝 모델에 유리하다.
    • 유사한 예측 강도를 가진 유사한 속성을 그룹화하여 모델 성능을 개선하는데 도움
    • Numerical Feature로 인한 과대적합 방지

종류

① Equal width binning

  • 범위를 기준으로 나누는 것
  • 한 분할 안에 몇 개가 들어가는지와 무관하게 전체 수치 범위에 대해 n분할하는 것
  • 단점: 편향된 분포에 민감
    ex) 절대평가, 히스토그램, pd.cut(), 고객을 구매 금액 구간에 따라 나눌 때

② Equal frequency binning

  • 빈도를 기준으로 나누는 것
  • 개수를 기준으로 n분할하는 것
  • 장점: 알고리즘의 성능을 높이는데 도움
  • 단점: 대상과의 관계를 방해할 수 있다.
    ex) 상대평가, pd.qcut(), 고객을 나눌 때 고객의 수를 기준으로 등급을 나눌 때

Pandas에서의 이산화

  • 메서드로 지원
  • Equal width binning : pd.cut()
  • Equal frequency binning : pd.qcut()

인코딩

  • Categorical Feature를 Numerical Feature로 변환하는 과정

필요성

  • 데이터 시각화에 유리하다.
    ex) 변화의 추이 관찰(lineplot), 산점도(scatterplot)
  • 머신러닝 모델에 유리하다.
    ex) 선형회귀 모델, 딥러닝모델 등

종류

① Ordinal-Encoding

  • Categorical Feature의 고유 값들을 Ordinal Feature, 임의의 수샂러로 변환
  • 장점: 직관적이다. 개념적으로 복잡하지 않고 간단하다.
  • 단점: 데이터에 추가적인 가치를 더해주지 않는다.
    - Ordinal-Encoding은 표현 방식을 바꿀 뿐 데이터의 정보 자체는 동일하다.

② One-Hot-Encoding

  • Categorical Featuref를 다른 Bool 변수로 대체하여 해당 관찰에 대해 특정 레이블이 참인지 여부를 나타낸다.
  • 장점: 해당 Feature의 모든 정보를 유지한다.
  • 단점: 해당 Feature에 너무 많은 고유값이 있는 경우 Feature를 지나치게 많이 사용한다.
profile
안녕하세요

0개의 댓글