-
피처 엔지니어링 기법 싹 다 모으기머신러닝 배우기 2024. 2. 25. 17:20
피처 엔지니어링은 모델을 훈련시키기 전에 데이터의 패턴을 더 잘 이해하고, 더 나은 예측을 할 수 있도록 데이터를 가공하는 단계입니다. 피처 엔지니어링을 잘하면 1) 모델의 성능이 향상되고, 2) 오버피팅을 방지할 수 있으며 3) 모델 해석력을 향상시킬 수 있습니다.
성능을 끌어올리기 위해서 데이터의 특성, 모델의 종류에 따라 올바른 처리를 해야 하며, 분석 목적과 도메인 지식을 종합적으로 활용하여 더 풍부한 정보를 제공해야 합니다.
► 결측치 처리
→ 설명 : 데이터 수집 과정에서 발생할 수 있는 실수, 누락, 또는 불완전한 정보 등으로 인해 발생.
→ 처리 방법 : 데이터가 누락된 부분을 삭제하거나 의미있는 값들로 채우기. (자세한 방법 및 코드 참고)
►아웃라이어 처리
→ 설명 : 아웃라이어는 일반적인 데이터 패턴에서 벗어나 있으며 잘못된 측정, 데이터 입력 오류, 드물게 발생한 현상 때문에 발생함. 모델이 일반화를 하기 위해서는 아웃라이어 처리가 필요함
→ 유용한 곳 : 선형 모델과 같이 아웃라이어의 영향에 민감한 모델
→ 처리 방법 : 제거 (가장 간단하지만 유용한 정보를 잃을 수 있음), 로그 변환, Box-Cox 변환 등
► 바이닝
→ 설명 : 연속형 데이터를 여러 개의 구간(또는 버킷)으로 나누는 과정.
→ 장점 : 연속형 변수를 범주형 변수로 변환함으로써 데이터의 복잡도를 줄이고 오버피팅을 방지하며 모델 학습을 단순화하고 설명력을 높일 수 있음.
→ 처리 방법 : 등간격으로 구간을 나누거나 데이터의 분포를 고려하여 구간 설정.
► 로그 변환
→ 설명 : 로그를 통해 데이터의 분포를 변환하여 왜곡을 줄이는 기법
→ 유용한 곳 : 왜도가 높거나 분산이 비교적 큰 데이터를 처리할 때 유용
→ 장점 : 왜도를 줄이고, 데이터의 분포를 정규 분포에 가깝게 만들면서 데이터의 범위가 축소되고 극단값/이상치에 대한 영향력을 줄여준다.
→ 단점 : 변환 후 데이터의 해석이 어려워질 수 있음. 0과 음수에 대한 처리를 해야 함
► 범주형 변수 인코딩
→ 설명 : 범주형 데이터를 숫자 형태로 변환하는 기법 (문자를 컴퓨터가 이해할 수 있는 0,1 조합으로 변환하는 작업이 필요)
→ 처리 방법 : 원핫인코딩, 라벨인코딩, 바이너리 인코딩 (자세한 방법 및 코드)
► 그룹핑
→ 설명 : 고윳값이 너무 많은 범주형 데이터를 특정 그룹으로 묶는 기법
→ 유용한 곳 : 범주형 데이터에서 고윳값이 너무 많아 더미 변수를 쓰기 곤란할 때
► 스케일링
→ 설명 : 데이터의 크기를 조정하는 과정.
→ 유용한 곳 : 입력 데이터의 스케일이 크게 달라 데이터 포인트 간의 거리나 비교가 어려울 때 사용.
→ 사용 모델 : 거리 기반 알고리즘(KNN, SVM) 및 경사 하강법을 사용하는 모델(로지스틱 회귀, 인공신경망)
→ 사용이 필요없는 모델 : 트리 기반 알고리즘(의사 결정 트리, 랜덤 포레스트, 그래디언트 부스팅 등)은 데이터의 순서나 절대 크기에 대해 민감하지 않기 때문에 굳이 스케일링을 하지 않아도 됨
→ 장점 : 모든 특성의 범위를 동일하게 조정하여 모델의 성능 향상, 일부 최적화 알고리즘은 데이터의 스케일에 민감하게 반응하기 때문에 스케일링을 적용하여 수렴 속도를 향상시킴
→ 처리 방법 : 표준화, 정규화, 로버스트 스케일링 (자세한 방법 및 코드)
→ 주의할 점 : 훈련 데이터와 테스트 데이터에 대해 동일한 스케일링을 적용해야 함. 그렇지 않으면 모델이 제대로 일반화되지 않을 수 있습니다. 즉, 훈련 데이터에서 파생된 파라미터(평균, 표준편차 등)를 사용하여 테스트 데이터를 변환해야 합니다.
► 날짜 추출
→ 설명 : 날짜 데이터에서 연/월/일/요일 등을 추출해 필요한 형태로 정보 추출
→ 유용한 곳 : 날짜 데이터의 특정 속성이 중요할 때
→ 장점 : 각 시계열적 특성에 대한 정보를 포함하여 모델의 해석력이 향상됨. (년도별로, 계절별로, 월별, 평일/주말 등에 따른 패턴을 학습할 수 있음.)
► 텍스트 분할
→ 설명 : 특스트로 된 변수에서 특정 부분의 단어를 빼오거나, 특정 기호가 들어간 부분을 기준으로 나누어 필요한 항목만 추출
→ 유용한 곳 : 텍스트 변수에 불필요한 정보가 많이 뒤섞여 있을 때
► 새로운 변수(파생 변수) 생성
→ 설명 : 주어진 변수들을 사용해 새로운 변수를 만드는 과정. 사칙연산을 활용한 의미있는 변수를 만들 수도 있고 원본 데이터에서 새로운 정보를 추출하거나 데이터를 더 잘 설명할 수 있는 형태로 변환할 수도 있음
→ 주의할 점 : 데이터에 대한 배경 지식을 활용하여 유용한 변수를 만들어야 함
→ 처리 방법 : 새로운 변수의 조합(사칙연산이나 조합 활용), 범주형 변수의 레이블 인코딩, 시간 변수의 추출 등
참고 자료 : 데싸노트의 실전에서 통하는 머신러닝 (권시현, 골든래빗)
'머신러닝 배우기' 카테고리의 다른 글
[머신러닝] "불균형 데이터" 평가 지표로 "정확도"는 알맞지 않다. (2) 2024.01.03 [머신러닝] 전처리 및 모델 Pipeline 파이프라인 구축하기 (#파이썬) (0) 2024.01.02 불균형 데이터 SMOTE 코드 위주 실습과 결과 해석 (0) 2023.12.28 불균형 데이터의 문제와 해결 방법, 평가지표 (0) 2023.12.28 카테고리컬 변수 인코딩하는 세가지 방법 (원핫 인코딩, 라벨 인코딩, 바이너리 인코딩) (1) 2023.12.17