K-Fold Cross Validation
K개의 분할에 대한 모든 성능 추정치 (K = 2 이상의 수)
:모든 데이터가 평가에 1번, 학습에 k-1번 사용된다.
->cross_val_score 함수 사용 결과 얻은 성능의 평균을 곧 모델의 성능으로 본다.
장점 : 반복학습과 평가로 정확도 향상
데이터 과소적합 방지
평가 데이터 편향 해소(모든 데이터를 학습/평가에 사용하기 때문)
비교적 일반화된 모델을 만들 수 있다.
단점 : 반복횟수가 많은 만큼 학습과 평가에 많은 시간이 소요된다.
1. 불러오기
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import cross_val_score
2. 선언하기
model = DecisionTreeClassifier( )
3. 검증하기
cv_result = cross_val_score (model, x_train , y_train , cv=10) #cv : 분할개수K (기본값 = 5)
4. 확인
print(cv_result)
print( cv_result.mean)
Hyperparameter
:모델링시 최적화를 위해 조절할 수 있는 옵션
Ex) KNN의 n_neighbors , Decision Tree
Decision Tree의 max_depth ..
파라미터값 찾는 방법
GridSearch : 1~n 사이의 파라미터값을 주고 각 모델 성능정보 수집
가장 성능이 좋던 때의 파라미터값을 사용
# n까지의 모든 정수를 해보기 때문에 n이 크면 시간이 오래걸림
Random Search : 1~n사이의 정수중 랜덤하게 m개 골라 파라미터값으로 주고 각 모델 성능정보 수집
가장 성능이 좋던 때의 파라미터 값 사용
# 랜덤으로 m개만 보기 때문에 최적의 값인지 확신이 없음
Random Search사용코드(KNN)
#모듈 불러오기
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import RandomizedSearchCV #GridSearch -> GridSearchCV
#파라미터 선언
param = {'n_neighbors': range(1, 500, 10), #파라미터 범위를 딕셔너리 형태로 지정해준다.
'metric': ['euclidean ', 'manhattan']}
#기본모델 선언
knn_model = KNeighborsClassifier()
#Grid Search모델 선언
model = RandomizedSearchCV(knn_model, #위에 선언한 기본 모델
param,
cv=3,
n_iter = 수행횟수(m)) #Gridsearch에서는 사용안함
#학습하기
model.fit(x_train, y_train)
#수행 정보
model.cv_results_
#최적 파라미터
model.best_params_
#최고 성능
model.best_score_
'오늘의 복습 정리' 카테고리의 다른 글
| 앙상블 알고리즘 이론 (0) | 2023.03.14 |
|---|---|
| 머신러닝_기본 알고리즘들 개념 이론공부 (0) | 2023.03.08 |
| 머신러닝_성능평가 (0) | 2023.03.07 |
| 머신러닝_용어/사용법 (0) | 2023.03.06 |
| 데이터 수집(웹 크롤링) (1) | 2023.02.28 |