본문 바로가기
머신러닝,딥러닝/ML 회귀분석(이상엽 교수님)

[로지스틱 회귀] Solver 종류와 장단점

by 코듀킹 2023. 6. 7.
목차
Solver란?
1. newton-cg: 뉴튼랩슨
2. lbfgs
3. liblinear
4. sag
5. saga

 

Solver란?

Solver는 LogisticRegression 모델에서 사용하는 하이퍼 파리미터 중 하나로, 비용함수의 최솟값을 어떠한 방법으로 찾을 것인지를 지정하는 역할을 한다. 방법에 따라 학습 성능이 달라지기 때문에 solver를 잘 선택하는 것도 중요하다. 종류에는 newton-cg, lbfgs, liblinear, sag, saga로 총 5가지가 있다. 이중에 newton-cg, lbfgs은 뉴튼 랩슨 방법을 활용하고, 나머지 3개는 경사하강법을 활용한다.

 

뉴튼 랩슨방법보다는 경사하강법이 학습속도가 더 빠르기 때문에 2차 도함수까지 구해야하는 뉴튼 랩슨 방법은 최근에는 잘 사용하지 않는다. 그러나, 전통적인 통계학에서는 모델이 복잡하지 않아서 계속 사용되고 있다.

 

1. newton-cg

뉴튼-랩슨(Newton-Raphson)방법을 의미한다. 이는 경사하강법과 마찬가지로 여러 번의 업데이트를 통해서 비용함수를 최소화하는 파라미터의 값을 찾는 방법이다. 하지만 2차 도함수를 계산하는 것이 필요하다는 단점이 있다. 사용할 수 있는 규제화 방법에는 l2와 none이 있다.

2. lbfgs

Limited-memory Broyden-Fletcher-Goldfarb-Shnno의 약자이다. 뉴튼-랩슨 방법을 약간 변형한 방법으로, 차이점은 2차 도함수를 정확하게 계산하는 것이 아니라 근사치를 사용하여 속도를 개선했다는 점이다. 사용할 수 있는 규제화 방법에는 l2와 none이 있다.

3. liblinear

경사하강법과 비슷한 방법이다. 경사하강법은 한 번에 여러개의 파라미터를 업데이트하지만, liblinear은 한 번에 하나의 파라미터만 업데이트한다는 점이 다르다. 사용할 수 있는 규제화 방법에는 l1과 l2가 있다.

4. sag

Stochastic Average Gradient descent의 약자이다. 경사하강법과 유사하게 작동하지만, 차이점은 이전 업데이트 단계에서의 경사값을 현재 업데이트에 사용한다는 점이다. 이렇게 하면 학습속도가 더 빨라지는 장점이 있다.(보통 이전 업데이트 단계에서의 경사가 더 가파르기 때문) 사용할 수 있는 규제화 방법에는 l2와 none이 있다.

5. saga

l1, l2, elasticnet, none까지 모두 사용가능하게 지원되는 방식이다. 

 

 

정리

Solver 사용할 수 있는 규제화
newton-cg l2, none
lbfgs l2, none
liblinear l1, l2
sag l2, none
saga l1, l2, elaticnet, none

 

이 다섯가지를 모두 사용해서 가장 성능이 좋게 나오는 solver를 선택해야 한다. 로지스틱 회귀 모형은 아래와 같이 설정할 수 있는 하이퍼 파라미터의 종류가 많은데, penalty는 기본적으로 설정해주여야 하고, 대표적으로 페널티 강도를 나타내는 C(1/람다), solver 종류, 최대 업데이트 정도를 나타내는 max_iter를 설정한다. 이렇게 4가지를 한꺼번에 사용해서 가장 모델의 성능이 가장 좋은 하이퍼파라미터의 값들을 찾아내는 방법이 그리드서치 방법이다.  

 

from sklearn.linear_model import LogisticRegression

model = LogisticRegression(C = 0.1, penalty = 'l1', solver = 'saga', max_iter=1000)

 

다음 시간에는 분류 문제에서 모델의 성능을 평가하는 방법들에 대해서 알아보겠다.

댓글