[이론+실습편] Python을 활용한 AI 모델링 - (3) 데이터 전처리

eunchae-04·2025년 1월 23일

AICE 자격증

목록 보기
5/10

학습 내용

  • 데이터 탐색하기
  • 결측치 처리하기
  • 이상치 처리하기
  • Feature Engineering

학습목표

  • 수집한 데이터를 데이터 분석이나 모델링을 위한 형태로 전처리할 수 있다.

"데이터 전처리"란?

수집한 데이터를 데이터 분석 / AI 모델링을 위하여 데이터를 정제하고 다듬는 작업


1. 데이터 탐색하기

1) Sample 데이터 확인

Sample 데이터를 육안으로 확인하여 데이터의 구성과 필요 유무에 대한 확인
→ head(), tail()

  • Data Frame 정보확인 - Dataframe명.info()
  • Data Frame 앞 5개 데이터 확인 - Dataframe명.head()
  • Data Frame 뒤 5개 데이터 확인 - Dataframe명.tail()

2) 통계적 특성 확인

수치 데이터에 대한 수학적 특성 확인으로 데이터 분포 확인
→ describe()

  • 유효 데이터 수
  • 값 평균
  • 표준편차
  • 최소값
  • 1사분위값
  • 2사분위값(중윗값)
  • 3사분위값
  • 최댓값

3) Table 정보 확인

컬럼 수, 데이터 타입 등을 확인하여 정상적 로드 확인
→ info()


2. 결측치 처리하기

결측치(Missing Value)

데이터에 값이 없는 것

  • N/A (Not Available)
  • Null (empty(null) object)
  • NaN (python)

0은 결측치일까요?

0은 결측치가 아니다. 실제 해당값이 0이라고 알고 있는 상태이다.

데이터를 분석하는데 있어서 반드시 처리해야 하는 값

→ 좋은 성능의 AI 모델을 만드는 데 중요한 요소
추가적인 조사나 정확한 예측을 통해서 결측치를 채워야 함.

결측치 처리의 특징

1) 실무자의 견해가 많이 반영되는 단계

  • 같은 데이터도 분석가에 따라 결과가 달라질 수도 있고, 잘못될 경우 분석 결과가 매우 트러질 수도 있음.

2) 시간이 많이 투자되어야 함

  • 데이터 현실을 반영한 결측치 처리가 되어야 분석을 정확하게 진행할 수 있음.

3) 결측치를 제거하는 것은 가장 쉽게 처리할 수 있는 방법

  • BUT, 막대한 데이터 손실 동반

4) 결측치를 단순 대체할 경우엔?

  • 데이터에서 현향(bias)이 생길 수 있음.

결측치는 어떻게 처리해야 할까요?

1) 제거하기

  • Listwise
    결측치가 존재하는 전체 행 삭제
    → 최대치의 정보손실 발생

  • Pairwise
    결측치로 존재하는 변수만 삭제
    모든 변수가 결측치인 경우 해당행 삭제
    다만, 결측값이 있는 변수는 향후 무시됨
    → 매번 샘플이 달라 분석을 비교할 수 없음

→ 제거하기 방법을 사용하여 결측치를 처리하면 정보가 손실될 수 밖에 없음

2) 채우기

  • 값 대체하기
    결측치를 평균화 값으로 대체
    가장 널리 사용되는 평균화 값(평균, 중앙값 최빈값)

  • 예측하기
    결측치를 상관관계 등을 예측하여 대체
    결측치의 특성이 무작위로 관찰되는 것이 아니라고 가정하고, 상관관계나 예측모델을 사용하여 채움

→ 결측치를 정보 손실 없이 빠르게 채울 수 있음.

→ BUT, 모든 결측치가같은 값을 가질 수 있음.

→ 채워진 값에 의해 평균, 중앙값, 상관관계 등이 영향을 받을 수 있음.

  • 결측치를 지정한 값으로 채우는 메소드 - Dataframe명.fillna('standard')
  • 결측치를 같은 간격으로 채우는 메소드 - Dataframe명.interpolate()
  • 결측치가 있는 레코드를 제거하는 메소드 - Dataframe명.dropna()

3. 이상치 처리하기

이상치는 왜 처리해야 할까요?

2020년 (주) OOO 사업보고서

  • 임직원 53명에게 총 261억 원 지급
  • 1인당 평균 급여액은 5억 원에 근접
  • 미등기임원 1인당 연봉도 10억 원을 넘어서며 조사 대상 기업 중 최고치
  • 미등기임원으로 재직하고 있는 OOO 회장에게 2024년 한 해 67억 원의 보수 지급
  • 임원을 제외한 부장급 이하 일반 직원 평균 연봉 1억 6203원

이상치는 어떻게 확인하고 처리할까요?

이상치(Outlier)

  • 특정 추제를 크게 벗어난 데이터
  • 중앙값을 크게 벗어난 데이터

이상치 처리

  • 삭제
    입력 시 error거나 outlier수가 굉장히 적을 경우 그냥 삭제

  • 대치
    다른 값으로 변경

  • 스케일링
    보통 right skewed(캐글에서 0.75 이상)인 경우 log나 square oot(제곱근)을 취함


4. Feature Engineering

Feature Engineering

  • 데이터를 분석하거나 AI 알고리즘을 적용하기 위해 데이터의 도메인 지식을 활용, 변수를 가공하여 데이터를 비교적 간단명료하게 만드는 것
    → Feature = 각 데이터의 특징

  • Data gathering (Raw Data)> Feature Engineering (Training Data)> Modeling

Feature Engineering은 어떻게 하나요?

Binning

  • 연속형 변수를 범주형 변수로 만드는 방법
    → 연속형 변수를 적절히 그룹을 지어주면 데이터를 이해하기가 더 쉬워짐

  • cut
    동일 길이로 나누기
    사용자가 구간값을 직접 입력

  • qcut
    동일 개수로 나누기
    사용자가 구간 개수를 입력

Scaling

  • 숫자데이터 간의 상대적 크기 차이를 제거하는 방법
    → 각 컬럼에 들어있는 데이터의 상대적 크기에 따라 분석이나 모델링 결과가 달라짐

  • StandardScaler()
    각 특성의 평균을 0, 분산을 1로 스케일링함
    즉, 데이터를 정규분포로 만듦

  • RobustScaler()
    평균과 분산 대신에 중간 값(정렬 시 중간에 있는 값)과 사분위 값(1/4,3/4에 위치한 값)을 사용함
    전체 데이터와 아주 동떨어진 데이터(이상치)에 영향을 받지 않음

  • MinMaxScaler()
    각 특성이 0과 1사이에위치하도록 스케일링함
    분류보다 회귀에 유용함

  • MaxAbsScaler()
    각 특성의 절대값이 0과 1 사이가 되도록 스케일링 함.
    즉, 모든 값은 -1과 1 사이로 표현되며, 데이터가 양수일 경우 MinMaxScaler와 같음

One Hot Encoding

  • 하나의 데이터만 1, 나머지는 0으로 만들어 주는 방법
    → 수치형/범주형/텍스트형 데이터 중 머신러닝이나 딥러닝 알고리즘은 수치로 된 데이터만 사용 가능
    → 범주형/텍스트형 데이터를 기계가 가장 잘 이해할 수 있도록 한 수치형 데이터 형태

0개의 댓글