반응형

여태까지 다루었던 scikit-learn의 퍼셉트론, 로지스틱 회귀, SVM은 경사하강법 알고리즘을 적용한 것입니다.

만약 머신러닝을 수행할 데이터가 대용량이라면 확률적 경사하강법(Stochastic Gradient Descent) 알고리즘을 적용한 버전이 여러모로 효율적일 수 있습니다.


scikit-learn의 SGDClassifier 클래스는 확률적 경사하강법 알고리즘을 적용한 퍼셉트론, 로지스틱 회귀, SVM을 활용할 수 있도록 해줍니다.


확률적 경사하강법을 적용한 퍼셉트론, 로지스틱 회귀, SVM을 이용하려면 아래와 같은 코드를 적용하면 됩니다.



이전 포스팅의 skl_svm.py에서 아래의 모듈을 추가합니다.




scikit-learn의 Perceptron(), LogisticRegression(), SVC() 대신 SGDClassifier()의 loss 인자값을 달리해서 확률적 경사하강법 알고리즘을 적용한 것으로 대체할 수 있습니다.




수정한 코드를 반영하여 skl_sgd.py로 저장합니다. 


skl_sgd.py 



확률적 경사하강법을 적용한 퍼셉트론, 로지스틱 회귀, SVM의 실행 결과는 다음과 같습니다.


확률적 경사하강법 적용 퍼셉트론 실행 결과





확률적 경사하강법 적용 로지스틱 회귀 실행 결과





확률적 경사하강법 SVM 실행 결과 


 




결과를 보면 퍼셉트론을 제외하고 로지스틱 회귀나 SVM은 영역 구분 자체가 완전히 달라졌음을 알 수 있습니다. 참고로 확률적 경사하강법을 적용한 코드는 실행할 때마다 그 결과값이 다르게 나옵니다. 


반응형

+ Recent posts