잡학사전/머신러닝

[머신러닝] 그리드 서치(grid search)

슬기나무 2022. 4. 12. 21:48
반응형

이번 포스팅에서는 그리드 서치(grid search)에 대해 알아보겠습니다.

(출처: 선형대수와 통계학으로 배우는 머신러닝 with 파이썬, 장철원 지음)

 

 그리드 서치(grid search)

그리드 서치는 관심있는 매개변수들을 순차적으로 입력한 후에

 

가장 높은 성능을 보이는 하이퍼파라미터를 탐색하는 방법입니다.

 

쉽게 말해 가능한 모든 경우의 수를 따져서 맘에 드는 하이퍼파라미터를 고르는거죠.

 

예를 들어 k-최근접 이웃 알고리즘에 사용할 수 있는 k 값에는

 

여러 후보가 존재하고, 어떤 하이퍼파라미터 k가 높은 성능을 보일지는

 

직접 해보기 전엔 알 수가 없습니다.

 

모두 해보고 모형의 성능을 비교한 후 최적의 k를 선정해야하죠.

 

 k-최근접 이웃 알고리즘 (Python)

파이썬 예제를 통해 k-최근접 이웃 알고리즘을 적용해봅시다.

 

from sklearn import datasets
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split

from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report

# 꽃 데이터 불러오기
raw_iris = datasets.load_iris()

X = raw_iris.data
y = raw_iris.target

# 데이터 분할
X_tn, X_te, y_tn, y_te = train_test_split(X,y,random_state=0)

# 표준화 스케일
std_scale = StandardScaler()
std_scale.fit(X_tn)
X_tn_std = std_scale.transform(X_tn)
X_te_std = std_scale.transform(X_te)

best_accuracy = 0

for k in [1,2,3,4,5,6,7,8,9,10]:
    clf_knn = KNeighborsClassifier(n_neighbors=k)
    clf_knn.fit(X_tn_std,y_tn)
    knn_pred = clf_knn.predict(X_te_std)
    accuracy = accuracy_score(y_te, knn_pred)
    if accuracy > best_accuracy:
        best_accuracy = accuracy
        final_k = {"k":k}

print(final_k)
print(accuracy)

위 코드를 사용하여 k-최근접 이웃 알고리즘을 통해

 

최적의 k를 선정한 결과 3이 나왔고,

 

모형의 정확도는 약 97%수준임을 확인할 수 있었습니다.

 

 

여기까지 그리드 서치에 대해 알아보았고,

 

그리드 서치의 방법 중 하나인 k-최근접 이웃 알고리즘의 예제를 학습해보았습니다.

반응형