오늘은 머신러닝을 위한 데이터 전처리 이론을 학습하였다.
다음 시간에는 오늘 배운 것을 활용하여, 실습을 진행할 것이다.
[Part 1] 데이터 전처리란?
1. 데이터 전처리와 특성 공학(Feature Engineering)
과적합과 편향을 방지할 수 있도록 데이터를 분석함에 있어서 가장 중요한 부분이다.
- 데이터 전처리: 분석 결과/인사이트와 모델 성능에 직접적인 영향을 미치는 과정
- 특성 공학: 컴퓨터가 잘 이해할 수 있도록 변수들의 형태를 변형하거나 처리하는 과정
2. 데이터 정제 (Data Cleansing)
: 레코드 세트, 테이블, DB에서 손상되거나 부정확한 레코드를 감지 및 수정하는 프로세스
1) 특징
· 데이터의 불완전성, 부정확성, 비연관 데이터를 교체, 수정 삭제
· Data Wrangling, Data Quality Firewall을 통해 일괄 처리로 수행 가능
· AI의 학습 성능을 높이기 위한 데이터 처리 작업
· 결측치, 이상치 등을 처리하려 데이터의 신뢰도를 높임
2) 결측치, 이상치, 잡음
원인 | 설명 | 처리방법(예시) |
결측치 (Missing Value) | 데이터가 입력되지 않고 누락된 값 | 대푯값 처리(평균, 중앙, 최빈), 확률 분포 기반 랜덤 |
이상치 (Outlier) | 정상적인 범위를 벗어난 매우 크거나 작은 값 | 상한 혹은 하한 값 대체 |
잡음 (Noise) | 입력되지 않았으나 입력되었다고 잘못 판단된 값 | 일정한 규칙에 따라 평균값 대체 |
3) 데이터 정제 기법
기법 | 설명 | 처리방법(예시) |
변환 (Transform) | 다양한 형태/형식 삾을 일관성 있게 변환 | 코드 변환, 형식 변환 |
파싱 (Parsing) | 데이터 정제 규칙 적용을 위해 유의미한 최소 단위로 분할 작업 | 주소(시, 군, 구 단위 분할), 주민번호(생년월일, 성별 분할) |
보강 (Enhancement) | 변환, 파싱, 수정, 표준화 등을 통하여 추가정보 반영 | 변환과 파싱을 거친 데이터 추가 |
① 결측값 처리
모든 데이터가 항상 입력되어 있는 것은 아니다. 따라서, 1번 결측값이 존재하는 샘플 삭제, 2번 결측값이 많이 존재하는 변수(특징) 삭제, 3번 결측값을 다른 값으로 대체 중 하나를 선택해야 한다.
결측값이 존재하는 샘플을 삭제하는 것은 열이나 행을 지우는 것이다.
결측값을 대체할 때는 해당 열의 비결특 데이터의 평균값 혹은 중앙값 등을 대체 값으로 사용한다. 예를 들어 Python scikit-learn 패키지의 Simple Imputer 클래스를 활용할 수 있다.
주의해야 할 점은 이처럼 데이터 특성이나 사용 목적에 따라 샘플 자체를 삭제하는 것이 나을 때가 있다는 것이다. 예를 들어, 의료데이터의 경우, 데이터를 임의의 값으로 대체하는 것은 매우 위험하다. 왜곡의 문제가 있기 때문이다. 그러나 요즘은 적대적 생성 신경망(GAN)을 활용한 EMR 데이터의 결측값 대치 알고리즘 연구가 진행되고 있다.
② 이상치 처리 (Cleansing)
데이터에는 이상치가 존재할 수 있으며 이는 모델의 성능을 저하할 수 있다. 따라서 전처리 과정에서 반드시 제거해야 하며, 판단 기준을 명확하게 해야 한다. 판단 기준의 예시로 데이터 분포를 보고 직접 판단, 통계지표로 판단, 머신러닝 기법 사용, 가우시안 혼합 사용 등이 있다.
[Part 2] 데이터 처리 기법
1. 특징 선택 (Feature Selection)
: 모델링 시 데이터의 특징을 잘 나타내는 주요 특성만 선택하는 작업
타겟값 예측과 관련 없는 특성이 많을 경우, 예측 성능이 떨어지기 때문에 중요하다. 즉, 예측 성능을 높이려면 타겟값과 관련 있는 특성이 필요하다.
- 상관관계 매트릭스 (Correlation Matrix)
: 두 변수 간의 관계를 측정하고 묘사하기 위한 통계학적 기법
강한 상관관계를 보이는 두 특성 값이 있으면 타겟값 예측력이 비슷하여 모델 성능이 떨어질 수 있어 둘 중 하나를 제거하는 것이 좋다. (다중공선성)
ex) 피어슨 상관계수: 두 변수 X와 Y 간의 선형 상관관계를 계량한 수치
2. 데이터 세분화 (Data Segmantation)
: 데이터를 기준에 따라 나누고, 선택한 매개변수를 기반으로 그룹화하여 데이터를 효율적으로 사용
3. 범주형 변수 처리
컴퓨터가 처리할 수 있는 데이터는 오직 숫자밖에 없다. 따라서 인코딩 또는 임베딩을 통해 텍스트 및 이미지 데이터를 숫자로 변환해야 한다. 또는 핵심 정보를 선택하고 데이터를 조합하여 새로운 데이터가 생성되었을 때, 처리를 해야 한다.
1) 수치화: Label Encoding
숫자의 차이에 영향을 받지 않는 트리 계열의 모델에 적용하기 좋지만, 선형 계열 모델에는 부적합하다.
2) 수치화: One-Hot Encoding
: N개의 클래스를 N차원의 One-Hot 벡터로 변환
숫자의 차이에 영향을 받는 선형 계열의 모델에 적합하지만, 단점은 열 개수(차원)가 많아져 모델 훈련 속도가 느려질 수 있다. 해당되는 클래스 값이 있을 때는 1(true), 아니면 0(false)으로 바꿔주는 작업이다.
[Part 3] 특징의 변환
수치형 특성(Numerical feaure)과 범주형 특성(Categorical feature)이 서로 변환이 가능하다.
1. 범주형 특성 처리
1) 특징 통합(Feature Aggregation)
2) 특징 선택(Feature Selection)
3) 여러 특징의 평균값 사용
이미지와 같이 많은 특징을 가진 데이터는 특징 전체를 평균하거나, 분산 값을 활용한다. 이는 대푯값을 가지기 때문에 의미 있는 머신러닝 학습이 가능하다.
2. 수치형 변수 처리
1) 스케일링
: 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업
예를 들어, 만점이 다른 두 시험 점수를 비교한다거나 단위가 다른 데이터의 차이를 비교하는 것이 있다.
2) 로그 변환 (Log Transformation)
: 왜도와 첨도가 높은 데이터는 상관성이 어려워 정규분포에 맞게 변형시키는 것
각각의 독립변수가 가지고 있는 값이 6부터 갑자기 격차가 너무 크게 난다. 이를 로그 변환 해주면 정수값으로 변환되기 때문에 단위값이 균등하게 분포되는 형태가 된다.
반대로, 너무 작게 차이 난다거나 음수를 양수로 바꾸고 싶다면 지수 변환 사용할 수 있다.
※ 해당 카테고리는 딥노이드, 오픈놀, 앙트비에서 주최하는 '<스타트업 유니버시티: DX Challenge 교육> AI+X 역량 강화 트랙'에 대한 기록입니다.
'[AI+X 역량 강화] 인공지능 > 2) 주특기 심화: 머신러닝, 딥러닝' 카테고리의 다른 글
딥러닝 활용 프로젝트 // 나이 예측앱, 백혈병 분류앱 만들기 (0) | 2023.09.20 |
---|---|
[머신러닝] #3 정형데이터 전처리 실습 // 결측치 처리(평균, 최빈값), 정규화, missingno (1) | 2023.09.16 |
DX AI 산업 특강 // 챗GPT로 웹페이지 만들기 (0) | 2023.09.07 |
[머신러닝]#1 머신러닝의 이해 // 데이터 종류, 스팸 필터, 머신러닝 특징 (0) | 2023.09.05 |