인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

헬로월드님의 프로필 이미지

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

텍스트 분류 - 20 Newsgroup 분류 실습 - 01

로지스틱 회귀에서 max_iter의 의미가 무엇일까요?

해결된 질문

작성

·

5K

0

안녕하세요.

08-04 텍스트 분석에서 20 뉴스그룹 분류를 공부중에 있습니다.

도중에 위와 같은 warning이 나와서 디폴트인 100을 넘는 max_iter로 조절해 주었습니다.

단순히 감으로 500,1000,2000으로 넣어봤습니다.

max_iter를 각각 500,1000,2000으로 설정한 결과 모두 0.597로 동일하게 나왔습니다.

여기서 로지스틱회귀에서 max_iter가 의미하는 것이 무엇이며, 어떻게 최적으로 조절을 할 수 있을까요? 한번씩 돌려보는 수밖에 없나요?

그리고 아무래도 일정 수준의 iter를 넘어가면 결과가 동일하게 나오는 것으로 생각되는데 (앞서 max_iter= 500에서 0.597, 1000에서 0.597이 나온 상황에서) 그렇다면 굳이 max_iter=2000을 돌려 볼 필요는 없는게 맞는것인지요

감사합니다.

--------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------

그리고 실행 속도에 대해서 추가적인 질문사항이 있습니다.

아래는 철민님이 올려주신 소스코드입니다.

15개 돌리는데 4.2분이 걸렸다고 나와있습니다.

아래는 제 노트북으로 실행한 모습입니다.

 차이는 저는 max_iter=500으로 설정했고 파라미터중에 하나를 빼고 12개를 돌렸는데도 60.4분이나 걸렸습니다...

사이킷런은 GPU로 돌리는 것이 아니라고 알고 있는데 차이가 너무 많이 나서요

제 노트북 사양은 이정도인데 많이 부족한가요?

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

사이킷런이 upgrade되면서 LogisticRegression에서 solver에 따른 warning 메시지가 나오곤 합니다.

이 solver는  Gradient Descent와 같이 weight 값을 최적화 하는 유형들을 구분한 것입니다. max_iter는 Gradient Descent 방식을 반복해서 몇번 수행할 것인가 인데, 이게 일단 수렴(Convergence)하게 되면 횟수를 늘려도 성능이 거의 달라지지 않습니다.  따라서 500, 1000, 2000을 넣어도 일단 수렴이 된 후에 반복은 성능이 달라지지 않았기 때문에 같은 결과를 나타낸걸로 보시면 될 것 같습니다.

그리고 노트북성능은 실습 코드를 돌린 제 노트북은 2.5GHZ 이며 Memory는 8G입니다.

수행 속도가 느린것은 저도 원인을 모르겠습니다. 일단 max_iter가 5배 정도 증가했으니, 최대 5배 시간이 걸릴텐데, 한 12배 이상 시간이 걸리신것 같습니다. 혹 CPU 병렬이 차이가 있을 수도 있습니다.

제 노트북은 Physical 2 Core, 4 Thread입니다.  command 창에서 msinfo32 로 확인해 보실 수 있습니다.

감사합니다.