Note ≡ 볼록 최적화(convex optimization) 문제를 위한 알고리즘
최적화 문제를 풀기 위해 사용할 수 있는 다양한 종류의 알고리즘이 많이 있습니다. 로지스틱 회귀 손실처럼 볼록한 손실 함수(convex loss function)를 최소화하는 데는 확률적 경사 하강법(SGD) 대신에 더 고급 방법을 사용하는 것이 좋습니다. 실제 사이킷런은 다양한 최적화 알고리즘을 제공하며 solver 매개변수에 'newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga'를 지정할 수 있습니다.
로지스틱 회귀 손실이 볼록하므로 대부분의 최적화 알고리즘이 전역 손실 최솟값에 쉽게 수렴합니다. 하지만 알고리즘마다 특징적인 장점이 있습니다. 예를 들어 사이킷런 0.21 버전에서는 'liblinear'를 기본으로 사용합니다. 이 알고리즘은 다항 로지스틱 회귀 손실을 다룰 수 없고 다중 클래스 분류를 위해 OvR 방법을 사용해야 합니다. 하지만 사이킷런 0.22 버전에서 기본 solver 매개변수가 BFGS(limited-memory Broyden-Fletcher-Goldfarb-Shanno) 알고리즘(https://en.wikipedia.org/wiki/Limited-memory_BFGS)을 나타내는 'lbfgs'로 바뀌었고 다중 분류에 유연하게 대처할 수 있습니다.11
LogisticRegression 모델을 훈련하는 앞 코드를 보니 이상한 것이 하나 보이네요. “C 매개변수는 도대체 뭘까요?” 다음 절에서 과대적합과 규제 개념을 소개하면서 이 매개변수를 설명하겠습니다. 다음 주제로 넘어가기 전에 클래스 소속 확률 이야기를 마무리해 봅시다.