Hyperparameter
알고리즘을 사용해 모델링 할 때 모델 성능을 쵲거화하기 위해 조절할 수 있는 매개변수
- KNN 알고리즘의 n_neighbors, Decision Tree 알고리즘의 max_depth 등이 있음
- 튜닝 하는 방법에 정답은 없음(지식과 경험 + 다양한 시도)
- 모델의 성능 향상을 위해 최선의 하이퍼파라미터 값을 찾는 다양한 시도를 해야 함
KNN에서의 Hyperparameter
- k값(n_neighbors)에 따라 성능이 달라짐
- 보통 데이터 건수의 제곱근으로 결정하는 경우가 종종 있음
- k값이 가장 클 때, 즉, k값이 데이터의 개수일 때 가장 단순 모델임
- k값이 작을 수록 복잡한 모델이 됨
Decision Tree에서의 Hyperparameter
- max_depth(트리의 최대 깊이 제한)가 적을 수록 모델이 단순해짐
- min_samples_leaf(leaf가 되기 위한 최소한의 샘플 데이터 수)가 클 수록 모델이 단순해짐
- min_samples_split(노드를 분할하기 위한 최소한의 샘플 데이터 수)가 클 수록 모델이 단순해짐
- 위의 파라미터 값을 조정해 모델을 단순화시켜 과대적합 위험을 줄임
Hyperparameter Optimization
KNN 알고리즘의 경우 이웃 개수인 K값, 즉 n_neighbors 옵션 값을 설정하는 방법
Random Search
파라미터 값의 범위를 지정하고, 범위내의 값을 모두 사용하여 학습
- n 구간의 정수를 n_neighbors 값으로 해서 모델 성능 정보 수집(성능을 테스트할 파라미터 값의 범위를 딕셔너리 형태로 지정)
- 수집된 정보에서 가장 성능이 좋았던 때의 n_neighbors 값을 찾음
- 이 n_neighbors 값을 찾는 KNN 모델을 선언해 학습, 예측 및 평가 과정 진행
- 장점: 충분한 범위 내의 n값(==이웃 개수 K)의 모든 경우의 수를 확인했으니 만족감이 큼
- 단점: n값이 크면 상당히 많은 시간이 소요됨
Grid Search
설정한 파라미터 값 범위 내에서 몇 개의 값을 선택할 선택할지 설정하여 설정된 값을 사용하여 학습
- n 구간의 정수 중 무작위로 m개 골라 n_nieghbors 값으로 설정해 모델 성능 수집(성능을 테스트할 파라미터 값의 범위를 딕셔너리 형태로 지정)
- 수집된 정보에서가장 성능이 좋았던 때의 n_nieghbors 값을 찾음
- 이 n_neighbors 값을 갖는 KNN 모델을 선언해 학습, 예측 및 평가 과정 진행
- 장점: 임의의 m개만 선택해 수행하므로 시간 소모가 적음
- 단점: 선택되지 못한 값 중에서 더 좋은 성능을 보이는 값이 있을 수 있어 만족감이 떨어질 수 있음
Random Search + Grid Search
- 두 개의 방법을 함께 사용할 수 있음
- Random Search를 사용해 최적값을 A를 찾은 후, Grid Search를 사용해 A의 주변 값을 범위로 설정하여 수행
- 최초로 Random Search를 사용하고, 그 후의 최적값을 사용해 Grid Search를 반복
주의할 점
- 파라미터의 세밀한 조정으로 최적화된 성능을 얻었다고 하더라도 운영환경에서의 성능이 보장되는 것은 아님(학습 데이터에 대한 최적의 성능일 뿐임)
- 완벽한 예측을 위한 완벽한 복잡도가 아닌, 적절한 예측을 위한 적절한 복잡도의 모델을 만드는 것을 목표로 잡아야 함