-
카테고리
-
세부 분야
딥러닝 · 머신러닝
-
해결 여부
해결됨
logistic regression 에서 convergence warning
20.09.10 09:26 작성 조회수 3.88k
1
답변을 작성해보세요.
1
권 철민
지식공유자2020.09.11
안녕하십니까,
사이킷런이 upgrade되면서 LogisticRegression에서 solver에 따른 warning 메시지가 나오곤 합니다.
이 solver는 Gradient Descent와 같이 weight 값을 최적화 하는 유형들을 구분한 것입니다.
사이킷런 문서에 아래와 같이 solver들의 값과 설명이 나와 있습니다만 결코 이해하기가 쉽지 않습니다.
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html
-
For small datasets, ‘liblinear’ is a good choice, whereas ‘sag’ and ‘saga’ are faster for large ones.
-
For multiclass problems, only ‘newton-cg’, ‘sag’, ‘saga’ and ‘lbfgs’ handle multinomial loss; ‘liblinear’ is limited to one-versus-rest schemes.
-
‘newton-cg’, ‘lbfgs’, ‘sag’ and ‘saga’ handle L2 or no penalty
-
‘liblinear’ and ‘saga’ also handle L1 penalty
-
‘saga’ also supports ‘elasticnet’ penalty
-
‘liblinear’ does not support setting
penalty='none'
저도 세부 구분을 명확하게 드리기에는 무리입니다. 다만 Logistic Regression을 Stochastic Gradient Descent 방식과 유사하게 최적화하는 구분 정도로만 이해하셔도 큰 무리는 없을 것 같습니다.
그리고 전부 다 solver값을 테스트 한건 아니지만 데이터가 스케일이 잘 되어 있다면 어떤것을 적용해도 큰 차이가 없는 것 같습니다. 다만 수행 속도나 규제 적용, multiclass 적용등에는 이들 solver값 적용 차이가 있습니다.(위 영어 설명 참조)
각 solver별로 (데이터에 따라) 최적화 되는 convergence 횟수가 차이가 있을 수 있습니다. 늘려 주셔도 되고 꼭 convergence가 되지 않아도 큰 성능 차이는 없는 것 같습니다. 물론 convergence가 되면 최소 손실이 되는 지점을 찾았으니까, 최적화가 잘 되었다는 의미 입니다.
감사합니다.
답변 1