선형 모델링에서 많은 변수의 채택은 다중공선성의 문제가 발생할 가능성이 높아지기 때문에 선형 모델을 선택할 때 모델의 복잡도 또한 모델링을 할 때 고려해야한다.
모델이 Train Set을 잘 설명할 수 있으면서 모델에 대한 과적합이 되지 않도록 주의해야한다.
선형 모델링 적합도와 독립 변수(feature)가 필요 이상으로 채택되는 것을 방지하도록 설계된 통계량은 AIC와 BIC가 있다.
통계량(데이터 예측에 적합한 AIC 선택)
KNN, SVM, Decision Tree(의사결정나무) 모델 등 모델링에 사용되는 변수를 직접 통제하는 모델의 성능 튜닝방법
튜닝하는 방법에 왕도나 정답이 없기 때문에 사용자의 많은 지식과 경험, 다양한 시도가 중요하다.
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import GridSearchCV
GridSearch(estimator = KNeighborsClassifier(),
# 하이퍼파라미터 튜닝을 하기 위한 머신러닝 모델 선택
param_grid = {'n_neighbors': range(2, 10, 2),
'metric': ['euclidean', manhattan']},
# 탐색 범위(Scope)와 간격(Step)을 정하는 부분
n_jobs=None
# 멀티 코어 프로세서의 경우 병렬 처리 여부 None = 1개 사용, -1 = 전체 사용
scoring=None,
# 성능 측정 방식, 기본은 estimator의 accuracy_score
cv=None)
# K-fold CV 값
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import RandomizedSearchCV
RandomSearch(estimator = KNeighborsClassifier(),
param_distributions = {'n_neighbors': range(2, 10),
'metric': ['euclidean', manhattan']},
n_iter=10,
# 랜덤 샘플링 횟수
scoring=None,
# 성능 측정방식, 기본 값은 accuracy_score
n_jobs=None,
# 병렬 처리 여부, None = 1, -1 = 모든 코어 사용
cv=None)
# K-fold CV값
참고
[ML]Hyperparameter tuning 기법의 3가지(GridSearch, RandomSearch, Bayesian Optimization)