더북(TheBook)

3.4.3 사이킷런의 다른 구현

이전 절에서 보았던 사이킷런의 LogisticRegression 클래스는 solver='liblinear'로 지정하여 LIBLINEAR 라이브러리를 사용할 수 있습니다. 국립 타이완 대학교(National Taiwan University)에서 개발한 것으로 최적화가 매우 잘된 C/C++ 라이브러리입니다(http://www.csie.ntu.edu.tw/~cjlin/liblinear/).

SVM을 훈련하는 SVC 클래스는 LIBSVM 라이브러리를 사용합니다.18 이 라이브러리는 SVM에 특화된 C/C++ 라이브러리입니다(http://www.csie.ntu.edu.tw/~cjlin/libsvm/).

순수한 파이썬 구현에 비해 LIBLINEAR와 LIBSVM은 많은 선형 분류기를 아주 빠르게 훈련할 수 있는 장점이 있습니다. 이따금 데이터셋이 너무 커서 컴퓨터 메모리 용량에 맞지 않는 경우가 있습니다. 사이킷런은 이에 대한 대안으로 SGDClassifier 클래스를 제공합니다. 이 클래스는 partial_fit 메서드를 사용하여 온라인 학습을 지원합니다. SGDClassifier 클래스 이면에 있는 개념은 2장에서 아달린을 위해 구현한 확률적 경사 하강법과 비슷합니다.

퍼셉트론(loss='perceptron'), 로지스틱 회귀(loss='log'), 서포트 벡터 머신(loss='hinge')의 확률적 경사 하강법 버전은 다음과 같습니다.19

>>> from sklearn.linear_model import SGDClassifier
>>> ppn = SGDClassifier(loss='perceptron')
>>> lr = SGDClassifier(loss='log')
>>> svm = SGDClassifier(loss='hinge')
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.