티스토리 뷰

나의 첫 머신러닝/딥러닝(허민석 저) 4.4.2의 SVM 예제 코드 일부 

문제 상황

SVM(서포트 벡터 머신) 알고리즘을 사이킷런을 이용해서 적용하는 코드를 실습하던 중 위 스샷에서처럼 빨간색창에 Warning메시지가 뜬다. 

경고 메시지 내용 : 

/usr/local/lib/python3.7/site-packages/sklearn/model_selection/_search.py:813: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal. DeprecationWarning)

 

해결

사이킷런에 있는 GridSearchCV() 에서 오는 경고 메시지인데,  GridSearchCV() 의 파라메터인 iid의 값의 기본값이 바뀐다는 뜻이다. 

iid라는 파라메터가 현재는 기본값이 True이지만, 0.22 버전에서는 기본값이 False로 바뀔 예정이며, 0.24 버전에서는 결국 없어질것이라는 것이다. 그러나 iid라 어디서 오는 파라메터인지, 그리고 iid가 하는 역할도 무엇인지 모르는 상태였다.

현재는 iid값을 별도로 지정하지 않아서 뜨는 경고문이므로
현재 상태를 유지하면서, 경고가 뜨지 않게 하려면 GridSearchCV() 의 입력 변수로 iid = true를 삽입해주면된다.

그냥 놔둬도 잘 실행된다.

 

추가 내용

iid에 대해서 더 알아본 내용이다. 이 값의 true/false에 따라 가중치를 부여한 평균인지, 그냥 평균인지가 다르다.

이 값이 True 인 경우에는  각 테스트 세트의 샘플 수에 따라 가중치를 부여한 folds에 대한 평균 점수를 반환한다. 
(이 경우 데이터는 폴드에 걸쳐 동일하게 분포 된 것으로 가정되며 최소화 된 손실은 폴드 전체의 평균 손실이 아니라 샘플 당 총 손실이다.) 

False인 경우는 fold에 대한 (샘플 수와 무관하게 동일한 가중치로 계산된) 평균 점수를 반환.

이 내용은 교차 검증의 표준 정의에 따라 바뀐 것이라고 한다. 

더 자세한 내용은 이곳 에서...

반응형
댓글