작성
·
552
0
안녕하세요.
현재 선생님의 머신러닝 강의를 수강하고 있는 학생입니다
Section2의 교차검증 성능평가라는 강의를 듣다 궁금한 점이 있어 질문을 올립니다
1. 강의중 하이퍼 파라미터라는 말씀을 하시는데 혹시 하이퍼파라미터라는게 '함수의 계수'라고 생각하면 될까요? 혹시 하이퍼파라미터와 일반적으로 사용하는 파라미터와의 차이점이 있을까요?
2. cross_val_score 메소드와 GridSearchCV메소드의 사용점의 대한 명확한 차이가 궁금합니다.
제가 강의를 듣어 어림잡아 이해한것은 cross_val_score는 메소드 내에서 임의로 파라미터를 설정해 모델을 평가하는 방법이고, GridSearchCV의 경우 사용자가 사용하고 싶은 파라미터 리스트가 존재한다면 해당 리스트 중에서 가장 적합한 파라미터를 추출하는 방법이라고 이해했습니다.
그럼 제가 이해한것이 맞다면, 사용자가 파라미터 리스트가 존재하지 않는다면 cross_val_score 메소드를 사용하는 것이 맞는지요?
1번과 2번의 대한 질문의 답변 부탁드리겠습니다
소중한 강의 정말 감사합니다
답변 1
1
안녕하십니까,
1. 이게 작명 센스와 관련있는 것 같습니다. 처음에 머신러닝 선구자들이 '파라미터' 정의를 할때 머신러닝이란 최적의 파라미터값을 스스로 학습해서 찾아주는 것이라고 공감대(?)를 이룰 만한 정의를 널리 했습니다. 그러니까 머신러닝에서 피처들에게 할당될 가중치 또는 회귀 계수값, 또는 분류를 위한 최적의 평면식 구성 요소들, 이런 것들을 파라미터로 먼저 정의해 버렸습니다. 그리고 머신러닝은 데이터를 학습하면서 이 최적의 파라미터를 찾아주는 것이라고도 볼 수 있습니다.
먼저 파라미터를 이렇게 정의해 버리니, 학습을 할때 이들 최적 파라미터를 보다 효과적으로 찾아 줄 수 있는 머신러닝 모델의 환경적인 셋팅, 예를 들어 규제 계수, 규칙 트리의 깊이와 같은 것들은 하이퍼 파라미터라고 명명하게 되었습니다.
프로그램 개념적으로 보면, 하이퍼 파라미터 보다는 파라미터가 더 와닿는 단어 이지만 , 파라미터라는 것이 머신러닝에서는 찾아야할 최적 값으로 먼저 선점하다 보니까 하이퍼 파라미터라는 명칭이 나오게 되었습니다.
2. cross_val_score()는 StratifiedFold 방식으로 validation 데이터 세트를 분할 해서 학습하여 예측 한 뒤 evaluation 값만 반환합니다. 때문에 evaluation값만 반환하여 아주 간편하게 사용될 수 있습니다. 다만 반환하는 것이 학습된 모델이 아니라 evaluation값 뿐이기 때문에 추가적인 활용이 어려울 수는 있습니다.
GridSearchCV는 다양한 하이퍼 파라미터 값을 입력해서 최적의 학습 모델을 찾아 줍니다. 최적의 하이퍼 파라미터 뿐만 아니라 최적 학습 모델도 반환 할 수 있습니다.
사용자가 (하이퍼)파라미터 리스트가 존재하지 않는 경우는 정의하기 애매합니다. Defalut 하이퍼 파라미터가 기본으로 있으며, Estimator 정의시 얼마든지 하이퍼 파라미터를 입력해서 정의 할 수 있습니다. 예를 들어 clf = DecisionTreeClassifier(max_depth=12)와 같이 정의 한 뒤 이를 cross_val_score() 인자로 입력할 수 있습니다.
제 생각엔 cross_val_score()는 앞에서 말씀드린 대로 간단하게 validation 데이터 세트들의 평균 evaluation 결과값만 간단하게 받아 볼 필요가 있을 때만 활용하면 좋을 것 같습니다.
감사합니다.