충분한 데이터와 피쳐가 없다면 아무리 좋은 모델이라고 하더라도 좋은 성능을 낼 수 없다.
머신러닝 문제에서 데이터와 피쳐는 결과에 상한선을 긋는 역할이며, 모델과 알고리즘은 상한선에 다가가기 위한 도구이다.
피쳐 엔지니어링은 최초 데이터의 잡음과 잉여 성분을 제거하고 더 효율적인 피쳐를 얻음으로써 해결하려는 문제와 모델간의 상관관계를 설명하는 것이다.
피쳐 정규화(Feature Normalization)
수치형 데이터에 피쳐 정규화를 하는 이유는 피쳐 간의 차원 영향을 제거하여 모든 특징을 대략적으로 비슷한 수치 구간내로 이동시키기 위해서이다.
예를 들어 키(m)와 몸무게(kg)과 같은 서로 다른 단위의 피쳐가 존재한다면 키는 1.5m~2m 범위이고 몸무게는 40kg~100kg라는 범위에 존재하기 때문에 수치 범위가 비교적 넓은 몸무게 피쳐에 편향(bias)가 걸리게 되어 정확한 결과를 얻을 수 없을 것이다.
1. Min-Max Scaling
데이터의 선형변환을 통해 결과값이 [0, 1]범위가 되도록 만든다.
2. Z-score Normalization
데이터를 평균이 0이고 표준편차가 1인 분포로 만든다.
피쳐 정규화를 해야하는 다른 이유로는 경사 하강법이 더 적은 반복으로 전역 최소값에 도달하기 위해서이다.
다음 J(θ)는 피쳐 x1(키)와 피쳐 x2(몸무게)에 관한 비용함수 그래프이다.
데이터가 정규화되지 않은 경우 등치선도가 왼쪽과 같이 나타난다.
반면 데이터를 정규화한 경우는 오른쪽과 같은 등치선도가 나타난다.
정규화가 되지 않은 경우 비용 함수의 형태가 100(kg 범위) : 2(m 범위)의 비율의 길쭉한 타원 모양이 되기 때문에 전역 최소값에 도달하는데 오랜 시간동안 앞 뒤로 진동하며 이동할 것이다.
따라서 정규화된 데이터가 경사하강법을 이용해 더 빠른 속도로 최적해를 찾을 수 있음을 알 수 있다.
일반적으로 선형회귀, 로지스틱 회귀, SVM, 신경망 등의 모델들은 정규화를 해야한다.
그러나 의사결정트리 계열 모델은 데이터 정규화가 필요없다. 결정 트리 노드의 분열의 기준은 데이터 정규화로는 영향을 미칠 수 없는 information gain ratio이기 때문이다.