더북(TheBook)

Note ≡


최적화 문제를 풀기 위해 사용할 수 있는 다양한 종류의 최적화 알고리즘이 많이 있습니다. 로지스틱 회귀 손실처럼 볼록한 손실 함수(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'로 바뀌었고 다중 분류에 유연하게 대처할 수 있습니다.12

LogisticRegression 모델을 훈련하는 앞 코드를 보니 이상한 것이 하나 보이네요. “매개변수 C는 도대체 뭘까요?” 다음 절에서 과대적합과 규제 개념을 소개하면서 이 매개변수를 설명하겠습니다. 다음 주제로 넘어가기 전에 클래스 소속 확률 이야기를 마무리해 봅시다.

훈련 샘플이 어떤 클래스에 속할 확률은 predict_proba 메서드를 사용하여 계산합니다. 예를 들어 테스트 데이터셋에 있는 처음 세 개의 샘플 확률을 다음과 같이 예측할 수 있습니다.

>>> lr.predict_proba(X_test_std[:3, :])

 

 


12 역주 LogisticRegressionmulti_class 매개변수 기본값은 'auto'입니다. 'auto'로 설정하면 이진 분류이거나 solver ='liblinear'일 경우에 'ovr'을 선택하고 그 외에는 'multinomial'을 선택합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.