일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- sql연습문제
- 행렬
- 데이터분석
- matplotlib
- 영국석사
- 코드잇
- 결정트리
- 런던
- 코딩
- 다항회귀
- 윈도우함수
- 코딩공부
- 나혼자코딩
- Seaborn
- 판다스
- 경사하강법
- for반복문
- CSS
- 파이썬
- HTML
- 코딩독학
- 오늘도코드잇
- 유학생
- 머신러닝
- SQL
- numpy
- 코드잇TIL
- 선형회귀
- 로지스틱회귀
- 코드잇 TIL
- Today
- Total
영국 척척석사 유학생 일기장👩🏻🎓
(Machine Learning) 하이퍼 파라미터(Hyperparameter) 그리드 서치 본문
(Machine Learning) 하이퍼 파라미터(Hyperparameter) 그리드 서치
life-of-nomad 2023. 9. 22. 10:14
1. 하이퍼 파라미터 (Hyperparameter)
많은 머신 러닝 알고리즘은 학습을 하기 전에 미리 정해 주어야 하는 변수 또는 파라미터들이 있습니다. Losso회귀에 대해 생각해봅시다. Lasso는 L1 정규화를 해주는 회귀 모델 입니다. scikit-learn에서 Lasso 모델을 만들 때 alpha와 max_iter 라는 옵셔널 파라미터를 지정해 줬습니다.
model = Lasso(alpha=0.001, max_iter=1000)
alpha는 손실 함수의 정규화 항에 곱해지는 상수를 뜻하는데 보통은 그리스 문자 람다를 씁니다.
그리고 max_iter 는 경사 하강을 최대한 몇 번 할지를 정하는 값입니다. 이 두값은 모델이 직접 학습해서 배우는게 아니라 모델을 만드는 사람이 정해줘야 합니다.
이처럼 머신 러닝 모델을 학습시키기 전에 사람이 미리 정해줘야 되는 변수를 하이퍼 파라미터라고 합니다.
scikit-learn 에서는 보통 모델을 만들 때 옵셔널 파라미터로 정해주는 변수들입니다.
하이퍼 파라미터에 어떤 값을 넣느냐에 따라 모델의 성능에 큰 차이가 있을 수 있기 때문에 모델의 성능을 최대한 높여주는 하이퍼 파라미터를 고르는 게 굉장히 중요합니다. 좋은 하이퍼 파라미터를 고르는 방법 중 하나는 그리드서치라는 방법입니다.
2. 그리드 서치 (Grid Search)
그리드 서치는 굉장히 직관적입니다. 우선 정해줘야 하는 각 하이퍼 파라미터에 넣어보고 싶은 후보 값을 몇 개씩 정합니다. 그리고 모든 후보 값의 조합으로 모델을 학습시켰을 때 성능이 가장 좋았떤 하이퍼 파라미터 조합을 고르는 것입니다.
계속 Lasso 회귀 모델을 예시로 보겠습니다. 우리는 이 모델의 성능을 최대한 높여주는 alpha의 max_iter 값을 찾아야 합니다. 우선 아래와 같은 표를 만들어 줍니다. 표의 행은 max_iter 에 넣어 볼 후보 값들, 그리고 열은 alpha에 넣어 볼 후보 값들로 채워줍니다.
이 표의 원소들을 해당 행과 열에 있는 하이퍼 파라미터 조합으로 모델을 학습시켰을 때의 성능으로 채워줍니다.
그리고 각 성능은 k-겹 교차 검증을 사용해서 조금 더 정확하고 공평하게 계산합니다. 성능을 모두 계산해서 아래와 같은 표가 완성되었다고 해봅시다.
여기서 성능이 가장 좋게 나오는 칸이 있습니다. (평균 제곱근 오차가 낮을 수록 성능이 좋습니다.) 그럼 이 행과 열에 해당하는 하이퍼 파라미터 값들을 선택하면 됩니다. 이런 식으로 표로 grid(격자 모양)를 만들고, 여기서 성능이 가장 좋은 하이퍼 파라미터를 찾는 방법이기 때문에 grid search 라고 부릅니다.
하이퍼 파라미터가 두 개 이상일때도 똑같습니다. 선택한 후보 값들의 모든 조합을 써서 학습을 시키고, 그 중 성능이 가장 좋게 나오는 하이퍼 파라미터 조합을 고르면 됩니다.
'코딩공부 > Machine Learning' 카테고리의 다른 글
(Machine Learning) 결정트리, 지니 불순도 (gini impurity) (1) | 2023.10.05 |
---|---|
(Machine Learning) 결정 트리, if-else문으로 구현하기 (1) | 2023.10.04 |
(Machine Learning) k-겹 교차 검증 (0) | 2023.09.21 |
(Machine Learning) L1, L2 정규화 (Regularization) (0) | 2023.09.20 |
(Machine Learning) 편향(Bias)과 분산(Variance) 트레이드 오프(Tradeoff) (0) | 2023.09.18 |