피처 엔지니어링

saucedong·2022년 6월 18일
0
post-thumbnail

피처 정규화

수치형 데이터는 정규화를 통해 차원의 영향을 제거 할수 있습니다.
하지만 만능은 아닙니다. 의사결정 트리 계열의 모델은 정규화가 굳이 필요 없습니다

  1. 선형함수 정규화
    데이터에 대해 선형 변환을 해 [0, 1] 사이 값으로 투영되게 만들어줍니다.
    Xnorm=XXminXmaxXminX_{norm} = {X-X_{min} \over X_{max}-X_{min}}
  2. 표준 정규화
    데이터를 평균이 0이고 표준편차가 1인 분포상으로 투영되게 만들어 줍니다.
    z=xμσz = {x - \mu \over \sigma}

범주형 피처

트리계열의 경우 범주형 피처를 그대로 사용할 수 있지만 로지스틱 회귀, SVM 같은 모델들은 반드시 수치형 피처로 전환해야 분석이 가능해집니다.

  1. 순서형 인코딩
    대소 관계가 존재하는 데이터에서 많이 사용 됩니다.
  2. 원 - 핫 인코딩
    클래스간에 대소 관계가 존재하지 않는 경우 사용됩니다.
    • 희소 벡터를 활용해 공간 절약
    • 적절한 피처 선택을 통해 차원 줄이기
  3. 이진 인코딩
    순번을 통해 이진법으로 바꾼후 변경 N차원 벡터의 경우 2N2^N 개의 데이터를 표현 가능

결합 피처

모든 데이터는 서로 독립적이지 않습니다. 불연속한 쌍을 조합시켜 고차원의 결합 피처를 만들어서 하나의 피처로 사용할 수 있습니다.
차원 축소가 되어지므로 파라미터 수를 줄일 수 있습니다.
피처들끼리 결합하기 위해서는 여러 조합이 존재하게 됩니다. 두 피처를 잘못 조합할 경우 과적합, 파라미터 과다 문제가 생기게 됩니다.
따라서 더 효율 적인 방법을 통해 결합 피처를 구해야 합니다.

텍스트 표현 모델

텍스트는 중요한 비정형 데이터 중 하나입니다. 다음은 텍스트를 머신러닝이나 딥러닝에 사용할 수 있게 변환하는 과정입니다.

  1. BOW, N-GRAM 모델

    TFTF-IDF(t,d)=TF(t,d)×IDF(t)IDF(t,d) = TF(t,d) \times IDF(t)
    TF(t,d)TF(t,d) = 문장 d에서 출현한 단어 t의 개수
    IDF(t)IDF(t) = loglog 문장의단어t포함한문장의수+1문장의\,수 \over 단어t를\,포함한\,문장의수 + 1
    문장을 단어 단위로 구별할 경우 단어를 조합해서 사용할 때와 의미가 다르게 사용되기도 합니다. 자주 출현하는 단어들을 한 그룹으로 구성해서 표현하는 방식이 N-GRAM 방식입니다

  2. 워드 임베딩과 딥러닝 모델
    딥러닝의 경우 단순히 문장을 단어 단위로 벡터로 바꿔서 만들어진 차원이 높은 행렬에 대해서도 잘 잡아내는 경향이 있습니다.
    따라서 일반적인 다른 머신러닝에 비해서 뛰어난 성능을 보이게 됩니다.

이미지 데이터가 부족할 때는 어떻게 처리해야 할까요?

머신러닝은 기본적으로 많은 데이터가 있을수록 잘 훈련이 됩니다. 데이터가 부족할 경우 해결책입니다.

  1. 이미지 데이터 회전, 평행이동, 축소, 확대, 삭제, 추가, 좌우 반전
  2. 노이즈 추가
  3. GAN을 이용한 샘플 추가
  4. SMOTE: knn알고리즘을 통해 샘플 추가

0개의 댓글