3.4.3 사이킷런의 다른 구현
이전 절에서 보았던 사이킷런의 LogisticRegression 클래스는 LIBLINEAR 라이브러리를 사용합니다. 국립 타이완 대학교(National Taiwan University)에서 개발한 것으로 최적화가 매우 잘된 C/C++ 라이브러리입니다(http://www.csie.ntu.edu.tw/~cjlin/liblinear/).
SVM을 훈련하는 SVC 클래스는 LIBSVM 라이브러리를 사용합니다.23 이 라이브러리는 SVM에 특화된 C/C++ 라이브러리입니다(http://www.csie.ntu.edu.tw/~cjlin/libsvm/).
순수한 파이썬 구현에 비해 LIBLINEAR와 LIBSVM은 많은 선형 분류기를 아주 빠르게 훈련할 수 있는 장점이 있습니다. 이따금 데이터셋이 너무 커서 컴퓨터 메모리 용량에 맞지 않는 경우가 있습니다. 사이킷런은 이에 대한 대안으로 SGDClassifier 클래스를 제공합니다. 이 클래스는 partial_fit 메서드를 사용하여 온라인 학습을 지원합니다. SGDClassifier 클래스 이면에 있는 개념은 2장에서 아달린을 위해 구현한 확률적 경사 하강법과 비슷합니다. 기본 매개변수를 사용한 퍼셉트론, 로지스틱 회귀, 서포트 벡터 머신의 확률적 경사 하강법 버전은 다음과 같습니다.24
>>> from sklearn.linear_model import SGDClassifier
>>> ppn = SGDClassifier(loss='perceptron')
>>> lr = SGDClassifier(loss='log')
>>> svm = SGDClassifier(loss='hinge')
23 역주 사이킷런에서는 선형 SVM 모델을 위해 분류를 위한 LinearSVC와 회귀를 위한 LinearSVR 클래스를 제공합니다. 이 클래스들은 모두 LIBLINEAR 라이브러리를 사용합니다. 선형 SVM 문제에서는 'linear' 커널을 사용하는 SVC, SVR보다 빠릅니다.
24 역주 SGDClassifier의 주요 매개변수로는 penalty(규제, 기본값 'l2'), max_iter(에포크 횟수, 기본값 5), n_jobs(병렬로 사용할 코어 개수, 기본값 1) 등이 있습니다.