머신러닝 애플리케이션이 널리 인기를 끌면서 점점 더 많은 데이터 과학자와 머신러닝 개발자가 모델 성능 최적화에 관심을 갖기 시작했으며, 그 중 하이퍼파라미터 튜닝은 필수적인 부분입니다. 기계 학습에서 하이퍼파라미터는 훈련 데이터에서 학습된 가중치가 아닌 모델의 매개변수를 나타냅니다. 하이퍼파라미터를 잘못 설정하면 학습 및 테스트 중에 모델 성능이 저하될 수 있으므로 하이퍼파라미터 튜닝이 핵심 단계입니다.
Python은 Scikit-learn, TensorFlow 등과 같은 널리 사용되는 다양한 기계 학습 라이브러리를 제공합니다. 이러한 라이브러리는 하이퍼파라미터 튜닝에 도움이 되는 다양한 도구를 제공합니다. 이 기사에서는 Python의 몇 가지 기계 학습 하이퍼 매개 변수 조정 팁에 대해 설명합니다.
그리드 검색은 간단하고 효과적인 하이퍼파라미터 튜닝 방법입니다. 핵심 아이디어는 다양한 하이퍼파라미터 조합을 시도하고 각 조합에 대해 교차 검증을 수행하여 가장 성능이 좋은 하이퍼파라미터 조합을 찾는 것입니다. Scikit-learn에서는 GridSearchCV 클래스를 사용하여 그리드 검색을 구현할 수 있습니다.
다음은 그리드 검색의 일반적인 프로세스입니다.
1) 조정이 필요한 매개변수 및 매개변수 조합을 정의합니다.
2) GridSearchCV 클래스를 사용하여 교차 검증 및 그리드 검색을 수행합니다.
3) 가장 좋은 결과를 출력합니다. 하이퍼파라미터 조합
예를 들어 분류를 위해 Scikit-learn에서 SVM(Support Vector Machine)을 사용하는 경우 다음 코드를 사용하여 그리드 검색을 수행할 수 있습니다.
from sklearn.model_selection import GridSearchCV from sklearn import svm, datasets iris = datasets.load_iris() X = iris.data[:, :2] y = iris.target parameters = {'kernel':('linear', 'rbf'), 'C':[0.1, 1, 10]} svc = svm.SVC() clf = GridSearchCV(svc, parameters) clf.fit(X, y) print("Best parameters:", clf.best_params_)
그리드 검색은 간단하고 안정적입니다. 하지만 하이퍼파라미터의 전체 공간이 커지면 계산량이 엄청나게 커집니다. 무작위 검색 방법은 매개변수 공간에서 매개변수 세트를 무작위로 샘플링하고 성능을 평가함으로써 이러한 상황을 완화합니다. 이 방법은 특히 매개변수의 범위가 넓고 서로 독립적인 경우 더 넓은 매개변수 공간을 탐색합니다. 동일한 컴퓨팅 리소스에서는 무작위 검색이 그리드 검색보다 더 효율적일 수 있습니다.
다음은 무작위 검색의 일반적인 프로세스입니다.
1) 조정이 필요한 매개변수 및 매개변수 범위를 정의합니다.
2) RandomizedSearchCV 클래스를 사용하여 교차 검증 및 무작위 검색을 수행합니다.
3) 가장 좋은 결과를 출력합니다. 하이퍼파라미터 조합
예를 들어 Random Forest 모델에서는 무작위 검색에 다음 코드를 사용할 수 있습니다.
from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import RandomizedSearchCV import numpy as np # Load data iris = datasets.load_iris() X = iris.data[:, :2] y = iris.target # Define parameter grid param_grid = {'n_estimators': np.arange(10, 200, 10), 'max_features': ['auto', 'sqrt', 'log2'], 'max_depth' : np.arange(1, 10), 'criterion' :['gini', 'entropy'] } # Random search using 10-fold cross validation rf = RandomForestClassifier() rf_random = RandomizedSearchCV(estimator=rf, param_distributions=param_grid, n_iter=100, cv=10, random_state=42) # Fit the model rf_random.fit(X, y) # Print the best parameters print("Best parameters:", rf_random.best_params_)
베이지안 최적화는 효율적인 하이퍼파라미터 조정 방법입니다. 이 방법은 각 반복에서 성능을 향상시킬 가능성이 가장 높은 하이퍼파라미터 조합을 선택하여 하이퍼파라미터 공간을 검색하고 프로세스에서 점차적으로 수렴됩니다. 이 접근 방식은 다양한 매개변수를 시도할 때 초기 실행 결과를 추론에 사용하며, 사전 확률 D를 사용하여 모델 매개변수의 확률 분포를 모델링하므로 소량의 탐색만 수행할 수 있는 상황을 최적화할 수 있습니다. , 잘 작동할 수 있습니다. 이산 또는 연속 매개변수, 다양한 유형의 목적 함수 및 노이즈를 처리할 수 있으며 미리 설정된 검색 규칙을 자동으로 조정할 수 있습니다. 다차원 초공간 최적화에 상당한 이점이 있습니다.
다음은 베이지안 최적화의 일반적인 프로세스입니다.
1) 조정이 필요한 매개변수 및 매개변수 범위를 정의합니다.
2) 최적화를 위해 목적 함수를 정의하고 베이지안 최적화 알고리즘을 사용합니다.
3) 가장 좋은 결과를 출력합니다. 하이퍼파라미터 조합
예를 들어 분류를 위해 Scikit-learn에서 GBM(Gradient Boosting Machine)을 사용하는 경우 베이지안 최적화를 위해 다음 코드를 사용할 수 있습니다.
from sklearn.datasets import load_iris from sklearn.ensemble import GradientBoostingClassifier from sklearn.model_selection import cross_val_score from bayes_opt import BayesianOptimization # Load data iris = load_iris() X = iris.data[:, :2] y = iris.target # Define objective function def gbmler_learning_rate(learning_rate): gb = GradientBoostingClassifier(learning_rate=learning_rate) return cross_val_score(gb, X, y, cv=5).mean() # Define parameter space param_space = {'learning_rate': (0.01, 1.0)} # Initialize optimizer optimizer = BayesianOptimization( f=gbmler_learning_rate, pbounds=param_space, random_state=42 ) # Optimize optimizer.maximize( init_points=5, n_iter=25 ) # Print the best parameters print("Best parameters:", optimizer.max['params'])
보통 슈퍼 매개변수 검색은 하이퍼파라미터 검색 이전에 분류자 개념을 적용하고 가능한 모든 하이퍼파라미터 설정에 대해 일부 인코딩을 수행합니다. 예를 들어 검색 과정에서 각 하이퍼파라미터 설정은 배열 형식으로 배열되고 해당 배열이 입력으로 사용됩니다. 이 접근 방식으로 검색을 수행할 때의 주요 문제점은 하이퍼파라미터가 개별적으로 나타나고 상호 작용 효과에 대한 정보를 잃게 된다는 것입니다. 오히려 이 접근 방식은 간단하고 해석 가능한 통계 모델링에 참여하는 것의 일부입니다. 베이지안 최적화 사용의 또 다른 이점은 확률 모델 추론을 사용할 때 카메라와 제한된 하이퍼파라미터 간의 관계를 검색할 수 있는 기능입니다.
요약하자면 Python은 그리드 검색, 무작위 검색, 베이지안 최적화 및 해석 가능한 매개변수 검색을 포함하여 기계 학습 하이퍼 매개변수 조정을 위한 다양한 기술을 제공합니다. 데이터세트에 적합한 방법을 선택하면 초매개변수 조정에서 더 나은 결과를 얻는 데 도움이 될 수 있습니다.
위 내용은 Python의 기계 학습 하이퍼 매개변수 조정 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!