🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    해결됨

logistic regression 에서 convergence warning

20.09.10 09:26 작성 조회수 3.88k

1

안녕하세요.

logistic regression의 디폴트값으로 학습/예측을 시행하면 항상 convergence warning이 뜨더라구요..! max_iter = 200으로 하면 없어진 적이 많았었는데, 이 케이스는 500으로 해도 안 없어지고,, solver='liblinear'로 하면 warning은 사라지는데 정확도 예측값이 달라지더라구요..! warning이 떠도 정확도예측에 큰 문제가 없는건가요?!
그리고 solver가 달라지면 어떤 차이점이 있는지 궁금합니다...!

vo_clf 분류기 정확도:0.9474 lr_clf 분류기 정확도:0.9386 knn_clf 분류기 정확도:0.9386
C:\Users\hyoeun\anaconda3.1\lib\site-packages\sklearn\linear_model\_logistic.py:940: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
    https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
  extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)
C:\Users\hyoeun\anaconda3.1\lib\site-packages\sklearn\linear_model\_logistic.py:940: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
    https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
  extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)

답변 1

답변을 작성해보세요.

1

안녕하십니까,

사이킷런이 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가 되면 최소 손실이 되는 지점을 찾았으니까, 최적화가 잘 되었다는 의미 입니다.

감사합니다.

채널톡 아이콘