그리드 서치는 사용자가 지정한 이산적인 옵션만 탐색하므로 탐색 공간이 너무 듬성듬성하면 좋은 하이퍼파라미터 설정을 놓칠 수 있습니다. 관심이 있는 독자는 논문10에서 랜덤 서치에 대한 추가 세부 사항과 경험적 연구를 확인할 수 있습니다.
랜덤 탐색을 사용하여 SVM을 튜닝하는 방법을 살펴보죠. 사이킷런에는 이전 절에서 사용한 GridSearchCV와 유사한 RandomizedSearchCV 클래스가 있습니다. 가장 큰 차이점은 분포를 파라미터 그리드의 일부로 지정하고 평가할 하이퍼파라미터 설정의 총 개수를 지정할 수 있다는 것입니다. 예를 들어 이전 절의 그리드 서치 예제에서 SVM을 튜닝할 때 여러 하이퍼파라미터에 사용한 범위를 고려해 보죠.
>>> import scipy.stats
>>> param_range = [0.0001, 0.001, 0.01, 0.1,
... 1.0, 10.0, 100.0, 1000.0]
RandomizedSearchCV는 범주형 하이퍼파라미터의 경우 파라미터 그리드에 사용한 입력처럼 이산적인 값 리스트를 받을 수 있습니다. 하지만 이런 리스트를 샘플링 분포로 대체할 수 있다는 것이 랜덤 서치의 주요한 이점입니다. 예를 들어 앞의 리스트를 사이파이의 분포로 다음과 같이 바꿀 수 있습니다.
>>> param_range = scipy.stats.loguniform(0.0001, 1000.0)