>  기사  >  백엔드 개발  >  Python의 기계 학습 하이퍼 매개변수 조정 팁

Python의 기계 학습 하이퍼 매개변수 조정 팁

WBOY
WBOY원래의
2023-06-10 16:23:441326검색

머신러닝 애플리케이션이 널리 인기를 끌면서 점점 더 많은 데이터 과학자와 머신러닝 개발자가 모델 성능 최적화에 관심을 갖기 시작했으며, 그 중 하이퍼파라미터 튜닝은 필수적인 부분입니다. 기계 학습에서 하이퍼파라미터는 훈련 데이터에서 학습된 가중치가 아닌 모델의 매개변수를 나타냅니다. 하이퍼파라미터를 잘못 설정하면 학습 및 테스트 중에 모델 성능이 저하될 수 있으므로 하이퍼파라미터 튜닝이 핵심 단계입니다.

Python은 Scikit-learn, TensorFlow 등과 같은 널리 사용되는 다양한 기계 학습 라이브러리를 제공합니다. 이러한 라이브러리는 하이퍼파라미터 튜닝에 도움이 되는 다양한 도구를 제공합니다. 이 기사에서는 Python의 몇 가지 기계 학습 하이퍼 매개 변수 조정 팁에 대해 설명합니다.

  1. 그리드 검색

그리드 검색은 간단하고 효과적인 하이퍼파라미터 튜닝 방법입니다. 핵심 아이디어는 다양한 하이퍼파라미터 조합을 시도하고 각 조합에 대해 교차 검증을 수행하여 가장 성능이 좋은 하이퍼파라미터 조합을 찾는 것입니다. 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. Random search

그리드 검색은 간단하고 안정적입니다. 하지만 하이퍼파라미터의 전체 공간이 커지면 계산량이 엄청나게 커집니다. 무작위 검색 방법은 매개변수 공간에서 매개변수 세트를 무작위로 샘플링하고 성능을 평가함으로써 이러한 상황을 완화합니다. 이 방법은 특히 매개변수의 범위가 넓고 서로 독립적인 경우 더 넓은 매개변수 공간을 탐색합니다. 동일한 컴퓨팅 리소스에서는 무작위 검색이 그리드 검색보다 더 효율적일 수 있습니다.

다음은 무작위 검색의 일반적인 프로세스입니다.

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_)
  1. 베이지안 최적화

베이지안 최적화는 효율적인 하이퍼파라미터 조정 방법입니다. 이 방법은 각 반복에서 성능을 향상시킬 가능성이 가장 높은 하이퍼파라미터 조합을 선택하여 하이퍼파라미터 공간을 검색하고 프로세스에서 점차적으로 수렴됩니다. 이 접근 방식은 다양한 매개변수를 시도할 때 초기 실행 결과를 추론에 사용하며, 사전 확률 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'])
  1. 해석 가능성을 위한 매개변수 검색

보통 슈퍼 매개변수 검색은 하이퍼파라미터 검색 이전에 분류자 개념을 적용하고 가능한 모든 하이퍼파라미터 설정에 대해 일부 인코딩을 수행합니다. 예를 들어 검색 과정에서 각 하이퍼파라미터 설정은 배열 형식으로 배열되고 해당 배열이 입력으로 사용됩니다. 이 접근 방식으로 검색을 수행할 때의 주요 문제점은 하이퍼파라미터가 개별적으로 나타나고 상호 작용 효과에 대한 정보를 잃게 된다는 것입니다. 오히려 이 접근 방식은 간단하고 해석 가능한 통계 모델링에 참여하는 것의 일부입니다. 베이지안 최적화 사용의 또 다른 이점은 확률 모델 추론을 사용할 때 카메라와 제한된 하이퍼파라미터 간의 관계를 검색할 수 있는 기능입니다.

요약하자면 Python은 그리드 검색, 무작위 검색, 베이지안 최적화 및 해석 가능한 매개변수 검색을 포함하여 기계 학습 하이퍼 매개변수 조정을 위한 다양한 기술을 제공합니다. 데이터세트에 적합한 방법을 선택하면 초매개변수 조정에서 더 나은 결과를 얻는 데 도움이 될 수 있습니다.

위 내용은 Python의 기계 학습 하이퍼 매개변수 조정 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.