해결된 질문
작성
·
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 로 확인해 보실 수 있습니다.
감사합니다.