ML 모델의 성능 향상 (계속…)
알고리즘 튜닝을 통한 성능 향상
ML 모델은 특정 문제에 맞게 동작을 조정할 수 있도록 매개 변수화됩니다. 알고리즘 튜닝은 ML 모델의 성능을 향상시킬 수 있도록 이러한 매개 변수의 최상의 조합을 찾는 것을 의미합니다. 이 프로세스를 하이퍼 파라미터 최적화라고하며 알고리즘 자체의 파라미터를 하이퍼 파라미터라고하며 ML 알고리즘에서 찾은 계수를 파라미터라고합니다.
여기에서는 Python Scikit-learn에서 제공하는 알고리즘 매개 변수 조정을위한 몇 가지 방법에 대해 설명합니다.
그리드 검색 매개 변수 조정
매개 변수 조정 접근 방식입니다. 이 방법의 핵심은 그리드에 지정된 알고리즘 매개 변수의 가능한 모든 조합에 대해 모델을 체계적으로 구축하고 평가한다는 것입니다. 따라서 우리는이 알고리즘이 검색 특성을 가지고 있다고 말할 수 있습니다.
Example
다음 Python 레시피에서는 Pima Indians 당뇨병 데이터 세트에서 Ridge Regression 알고리즘의 다양한 알파 값을 평가하기 위해 sklearn의 GridSearchCV 클래스를 사용하여 그리드 검색을 수행합니다.
먼저 다음과 같이 필요한 패키지를 가져옵니다.
import numpy
from pandas import read_csv
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV
이제 이전 예제에서했던 것처럼 Pima 당뇨병 데이터 세트를로드해야합니다.
path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]
다음으로 다양한 알파 값을 다음과 같이 평가합니다.
alphas = numpy.array([1,0.1,0.01,0.001,0.0001,0])
param_grid = dict(alpha=alphas)
이제 모델에 그리드 검색을 적용해야합니다.
model = Ridge()
grid = GridSearchCV(estimator=model, param_grid=param_grid)
grid.fit(X, Y)
다음 스크립트 줄로 결과를 인쇄하십시오-
print(grid.best_score_)
print(grid.best_estimator_.alpha)
Output
0.2796175593129722
1.0
위의 출력은 최적의 점수와 해당 점수를 달성 한 그리드의 매개 변수 집합을 제공합니다. 이 경우 알파 값은 1.0입니다.
임의 검색 매개 변수 조정
매개 변수 조정 접근 방식입니다. 이 방법의 핵심은 고정 된 수의 반복에 대해 무작위 분포에서 알고리즘 매개 변수를 샘플링한다는 것입니다.
Example
다음 Python 레시피에서는 Pima Indians 당뇨병 데이터 세트의 Ridge 회귀 알고리즘에 대해 0과 1 사이의 서로 다른 알파 값을 평가하기 위해 sklearn의 RandomizedSearchCV 클래스를 사용하여 임의 검색을 수행 할 것입니다.
먼저 다음과 같이 필요한 패키지를 가져옵니다.
import numpy
from pandas import read_csv
from scipy.stats import uniform
from sklearn.linear_model import Ridge
from sklearn.model_selection import RandomizedSearchCV
이제 이전 예제에서했던 것처럼 Pima 당뇨병 데이터 세트를로드해야합니다.
path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]
다음으로 Ridge 회귀 알고리즘의 다양한 알파 값을 다음과 같이 평가합니다.
param_grid = {'alpha': uniform()}
model = Ridge()
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_grid, n_iter=50,
random_state=7)
random_search.fit(X, Y)
다음 스크립트 줄로 결과를 인쇄하십시오-
print(random_search.best_score_)
print(random_search.best_estimator_.alpha)
Output
0.27961712703051084
0.9779895119966027
위의 출력은 그리드 검색과 유사한 최적의 점수를 제공합니다.