데이터 전처리(Data Preprocessing)
현실에서 머신러닝을 구현할 때 사용되는 데이터는 대부분 가공되지 않은 raw data이다
따라서 모델을 학습시키기 전, 데이터의 전처리(Preprocessing)를 통해 자신의 알고리즘에 맞게 데이터를 가공해야 한다
전처리를 얼마나 잘 했나에 따라 모델의 성능이 바뀌기도 하므로 학습시키기 전, 반드시 전처리를 수행하도록 해야한다
전처리 기법에는 다음과 같은 기법들이 존재한다
- 이진화
- 평균 제거
- 크기 조정
- 정규화
이진화 기법은 임계값을 기준으로 숫자를 0 혹은 1로 변환하는 기법이다
위와 같이 정의할 수 있으며 데이터의 개수를 줄일 수 있다
예를 들어 RGB컬러를 이용하는 이미지 처리를 하는데, 특정 값 이상의 픽셀만을 남기고 싶은 경우
3차원 벡터를 하나의 값으로 줄일 수 있으므로 전체 데이터의 양이 줄어들게 된다
분석하는 데이터의 벡터의 차원이 커질수록 데이터의 수는 극적으로 줄어든다
위의 예제와 같이 2보다 큰 값은 1, 나머지 값은 0으로 변환됨을 알 수 있다
평균 제거(Mean Removal)
특징 벡터의 값들이 0을 중심으로 분포하게 만드는 전처리 기법이다
일반적으로 획득한 raw data는 데이터 마다 분포가 제각각 다르다
따라서 이들 분포를 하나의 통일된 규격으로 맞춰줘야 하는데
이때, 데이터의 평균을 0으로, 표준편차를 1로 만드는 표준화 과정(mean removal and variance scaling)을 통해
데이터의 규격을 맞춰준다
위와 같은 수식으로 각 벡터의 요소를 변환해 준다
위의 예제로부터 평균은 0에 가까운 매우 작은 값으로, 표준편차는 1에 수렴한것을 확인할 수 있다
크기 조정(Scaling)
일반적으로 데이터는 요소마다 값의 범위가 다르다
따라서 모든 요소를 동일한 기준으로 분석하기 위해서는 모든 요소를 동일선 상에 올려놓을 필요가 있다1
위 수식을 통해 데이터의 scaling을 할 수 있다
정규화(Normalization)
정규화는 대체로 과적합(Overfitting)을 방지하기 위해 사용된다
과적합은 데이터의 양을 늘림으로써 해결할 수 있으나 모든 경우의 수를 얻는 것이 불가능 하므로
정규화 과정을 통해 어느정도 과적합을 방지하는 것이다
또한 데이터의 증가는 연산량의 증가로 이어지므로 정규화는 연산량의 감소로 이어진다고 봐도 무방하다
L1 정규화는 가중치 행렬의 모든 항의 절대값의 합이다
새로운 가중치는 위와같이 결정할 수 있으며 기존 가중치에 w의 부호에 따라 0에 가까워 지도록 상수값을 더하게 된다
L2 정규화는 가중치 행렬의 모든 항의 제곱의 합으로 나타낼 수 있다
L2정규화는 가중치에 비례하여 0에 가까워 지는 값을 더하므로 이상치(outlier)이 과도하게 커지는 것을 방지할 수 있다
L1 정규화가 이상치에 영향을 덜 받기 때문에 L2정규화 보다 안정한 편이지만, 미분이 안되기 때문에 Gradient Descent를 cost로 하는 모델에서는 사용하기 어렵다
또 자신의 모델에 이상치가 중요한 역할을 한다면 L2정규화를 사용해야 한다
- 주로 0과 1사이로 조정함 [본문으로]
'파이썬으로 배우는 인공지능' 카테고리의 다른 글
| K-평균 알고리즘 (1) | 2018.12.19 |
|---|---|
| 의사결정 트리(Decision Trees) (0) | 2018.12.17 |
| 서포트 벡터 머신(Support Vector Machine) (1) | 2018.12.16 |
| 나이브 베이즈 분류기 (1) | 2018.11.29 |
| 로지스틱 회귀 분류기 (0) | 2018.11.24 |
WRITTEN BY
- 텐초
딥러닝 관련 논문들과 코드를 완벽분석 합니다




