[DataAnalysis] 데이터 전처리(Pre-processing)

hugingstar·2022년 4월 4일
0
post-thumbnail
  • 이 글은 데이터 전처리(PreProcessing)을 위한 방법을 정리한 자료

1.개요

  • 센서데이터, 공공데이터를 사용하여 분석하는 프로젝트를 진행한다고 생각해보면, 고품질의 알고리즘을 개발하기 위해서는 고품질의 데이터를 사용해야한다.
  • 고품질의 데이터를 제작하려면 데이터 전처리 과정이 반드시 필요하며, 데이터 전처리 과정이 프로젝트 진행 중 거의 90%는 차지한다고 볼 수 있다.
  • 마침 데이터 전처리를 하고 있으니 이 글을 작성해 보기로 한다.

2. 데이터(Data)

  • 요즘에는 지역별 기후 데이터와 같은 빅데이터를 클라우드 형태(AWS, Google Cloud)로 저장해서 데이터 분석을 많이 하는데,
  • 돌아다니는 예제 파일의 데이터나 데이터 베이스에 매핑이 완료된 데이터를 사용하면, 아주 깔끔하게 정리되어 있지만, 원본 데이터를 보면 숨이 막힐 정도로 지저분하다.

3. 전처리할 때 고려할 점

  • 빅 데이터(TB 단위 이상)를 분석하면, 컬럼 아래에 있는 값들의 데이터 형이 모두 다를 수가 있다.
    (e.g.) array([~])와 같이 데이터가 들어 있지만 이게 numpy의 행렬이 아니라 문자열이어서 문자열로 처리해줘야 하는 상황이 있다.

  • 결측치, Offset, 이상치 등 데이터 패턴 및 예측 성능을 저하시키는 다양한 Outlier values가 함께 공존하고 있다.
    (e.g.) -1000과 같이 적절한 데이터가 출력되고 있을 수 있음., 센서 보정이 정확하지 않아서 이상한 값이 출력되고 있을 수 있다.

  • 데이터 Range가 모두 달라서, Range가 큰 변수의 영향력이 커지고, 이에 따라 어떤 타겟을 예측할 때 성능이 떨어질 수 있다.
    (e.g.) 어떤 유체 시스템의 유량 +- 0.5 정도의 레인지로 움직이지만 압력은 10 단위로 움직인다고 하면, 압력에 비해 유량은 아주작은 Range를 가지고 있어 압력의 영향을 크게 받는다. 이에 따라서 예측 알고리즘과 같은 딥러닝, 머신러닝 알고리즘을 만들 때는 Scaler를 사용하여 데이터의 Range를 통일하는 것도 중요하다.

  • 메모리 에러 : 원본 데이터가 방대하다보니 데이터시트가 읽히지 않는 경우도 발생한다. 빈번하므로 이를 해결하기 위해서는 데이터를 쪼개서 관리한다.

  • 또한, 중간에 del 기능등을 사용해서 메모리를 잡아먹는 것들을 관리할 필요가 있다.
    (e.g.) 100,000,000개의 데이터를 한번에 전처리하면 부담이 크므로, 20,000,000씩 5개로 나누어 관리하는 방법

0개의 댓글