scikit-learn을 이용해 기존에 학습하는 데이터 셋이 작을때는 SVC에서 kernel로 모델을 생성했다. 하지만 샘플의 개수가 늘어남에 따라 문제가 생기기 시작했다. 그 이유는 간단하다. scikit-learn에서 이미 샘플의 수가 많으면 동작이 안된다고 명시하고 있다.
정리하면 SVC kernel은 scalable하지 않기 때문에, training set의 small subset에 적합하고, incremental/online learning을 지원하지 않는다. oneline learning은 간단하게 말하면, 모든 데이터를 한번에 모델을 학습시키는데 사용하지 않고, batch 형태로 데이터를 나누어서 학습시킨다. 기존에는 한번의 batch 작업으로 모델을 생성했다면, 여러번의 batch로 모델을 업데이트한다는 느낌으로 생각하면 된다.
위 이유로 scikit-learn의 online learning은 데이터의 양이 많아지면 사용할 수 없다. 그렇다면 mini batch learning이 가능한 SGD Classifier를 사용을 하면 된다. 역시 안되는건 없구나 SGD Classifier에 대한 reference는 아래와 같다.
http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDClassifier.html#sklearn.linear_model.SGDClassifier
하지만 문제가 있으니 SGD는 linear svm에 대해서서만 support를 해주게 된다. 즉 SVC에서 kernel method를 사용했다면, SGD의 linear로는 구현을 할 수 없다. 그래서 찾아보니 학습하고자 하는 데이터셋을 미리 non-linear에 대해서 처리하기 위해 kernel function을 통해 mapping을 하고 SGD Classifier를 사용하면 non-linear svm이 가능하다. kernel function에 대한 설명은 아래와 같다.
http://scikit-learn.org/stable/modules/kernel_approximation.html
[참고]
https://adventuresindatascience.wordpress.com/2014/12/30/minibatch-learning-for-large-scale-data-using-scikit-learn/https://adventuresindatascience.wordpress.com/2014/12/30/minibatch-learning-for-large-scale-data-using-scikit-learn/
'데이터분석' 카테고리의 다른 글
[부동산 데이터 분석] #1.데이터의 출처 어디일까? 공공데이터 포털의 실체 (feat. Postman) 내집마련이 시급하다! (0) | 2018.12.02 |
---|---|
[xgboost] XGBoost 설치 및 데모 (0) | 2017.02.07 |
데이터 용어 정리 (0) | 2017.02.07 |
[데이터 분석] Python 라이브러리 - Pandas, Matplotlib, Numpy 10분만에 배우기 (0) | 2016.07.07 |
[데이터 분석] Data Exploration Guide - The Art of Feature Engineering(4) (3) | 2016.07.06 |