사용안내 및 노트

홈으로/사용안내 및 노트
제목021. Representation: Cleaning Data2020-11-08 22:36:49
작성자

☐ Representation: Cleaning Data

 ○ 과수원에서 사과를 수확할 때에는 상한 사과가 포함되어 있었겠지만 상점에는 판매에 적합한 사과만 진열되어 있을 것이다. 판매를 위해 누군가 상한 사과를 구분하고 제외하는 작업을 수행한 것이다.

 ○ 마찬가지로 ML 엔지니어는 bad examples을 처리하는 작업(cleaning data)에 많은 노력을 기울여야 한다. 소수의 bad examples이 데이터 세트 전체를 망칠 수 있다.

 ○ 데이터를 cleaning 하는 방법으로는 Scaling feature values, Handling extreme outliers, Binning, Scrubbing 등을 들 수 있다.

 ○ Scaling feature values

  - Scaling은 크게 Normalization과 Standardization으로 나눌 수 있다.

   · Normalization : 정해진 범위의 값으로 변환한다.

   · Standardization : 평균이 0이고 표준 편차가 1인 데이터로 변환한다.

  - natural range를 standard range로 변환한다.

   · 예) 100 ~ 900 의 범위를 0 ~ 1 또는 –1 ~ +1 로 변환

  - 변환 방법

   · Standardization, Mean Normalization, Min-Max Scaling, Unit Vector

  - multiple features에 대한 scaling 효과

   · gradient descent 수행 시 converging point에 빠르게 도달할 수 있다.

   · 학습 시 부동 소수점 정밀도 한계 또는 수학적 연산에 의한 "NaN" 발생 감소

   · 모델이 각 feature에 대해 적정한 weights를 학습하도록 돕는다. scaling을 하지 않는다면 모델은 상대적으로 더 넓은 범위를 가진 features에 집중할 것이다.

※ feature set이 single feature로 이루어져 있다면 scaling의 효과가 별로 없다.

※ NaN(Not a Number) 트랩 : 모델의 숫자 중 하나가 학습 중에 NaN이 됨으로 인해 모델의 다른 여러 숫자 또는 모든 숫자가 결국 NaN이 되는 상황

※ 모든 floating-point feature에 동일한 크기의 scale을 적용할 필요는 없다. 즉, feature A는 -1~+1로, feature B는 -3~+3으로 조정해도 큰 문제는 없다. 그러나 feature B를 특이 값 수준인 5000~100000으로 조정하면 모델이 부정적으로 반응할 것이다.

 ○ Handling extreme outliers

  - 아래 California Housing data set의 roomsPerPerson feature 그래프를 통해 특이 값 처리 방식을 알아보자.

   · 1인당 방 수 = 전체 방수 / 인구 수

  - 대부분의 경우는 1인당 방이 1~2개 이지만 x축을 보면 50개가 넘는 지역이 있다. 아마도 호텔이나 기타 숙박 시설이 밀집한 곳이라 여겨진다.

  - 이런 종류의 특이 값들을 처리하기 위해 로그를 사용해 보자.

  - 로그를 사용해서 조금 결과가 나아졌지만 여전히 특이 값이 존재한다.

  - 다음은 특정 수준 이상인 경우에는 하나의 값으로 통일시켜 보자.

  - 4개 이상인 경우 모두 4개로 처리했다. 분포도가 비교적 정상적인 모습을 보인다. 처리된 scaled feature set은 학습과 예측에 보다 유용할 것이다.

 ○ Binning (=bucketing)

  - 하나의 feature(일반적으로 continuous)를 버킷(bucket) 또는 빈(bin)이라고 하는 여러 binary features로 변환하는 작업으로서, value의 범위를 기준으로 한다.

  - 예를 들어 온도를 하나의 continuous (numbers in a range) floating-point feature로 표현하는 대신 온도의 범위를 discrete bins으로 나눌 수 있다.

   · 단위가 1/10도인 온도 데이터가 있다면 0.0~15.0도 범위의 모든 온도를 1번 bin에, 15.1~30.0도 범위를 2번 bin에, 30.1~50.0도 범위를 3번 bin에 할당하는 방식이다.

 ○ Scrubbing

  - 누락/불완전/부정확/잘못된 형식/중복 데이터를 수정 또는 제거

   · 누락 또는 중복을 탐지하려면 간단한 프로그램을 작성하면 되지만 잘못된 feature values나 label을 검출하는 것은 훨씬 더 까다로울 수 있다.

 ○ Know your data

  - Keep in mind what you think your data should look like.

  - Verify that the data meets these expectations (or that you can explain why it doesn’t).

  - Double-check that the training data agrees with other sources (for example, dashboards).

  - Treat your data with all the care that you would treat any mission-critical code. Good ML relies on good data.