머신러닝 모형 선택관련 간략한 가이드라인

2019-04-19

.

그림, 실습코드 등 학습자료 출처 :

1) https://datascienceschool.net

2) https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html

# 머신러닝 모형 선택관련 간략한 가이드라인

1

  • 데이터 갯수가 50개를 넘지 않으면 분석의 의미가 크게 없다.

  • 우리가 prediction해야 하는 target이 카테고리 값이냐 real number 값이냐에 따라 달라진다. real number 값이면 regression을 푸는 것이고, 카테고리 값을 예측하는 거면 classification을 푸는 것이다.

  • regression에서 데이터가 10만개 보다 적으면 우리가 알고있는 일반적인 방식을 쓰면 된다. 예를 들어 그냥 다항회귀나 SVR(서포트벡터머신에서 썼던 비슷한 로직으로 qp형태로 푸는 회귀)로 회귀도 풀 수 있는데 이런 것들을 말한다. 다항회귀 시 오버피팅을 잡아주는 정규화도 해줄 수 있다.

  • 데이터가 만약에 10만개보다 크다라고 하면 일반적인 방식은 돌릴 수가 없다. 이런경우에는 SGD regressor를 쓸 수 밖에 없다. 그러나 현실적으로 SGD regressor를 통해 돌려서 수렴시키는게 너무 힘들다. 딥러닝보다도 수렴시키기가 어려운 경우가 많다. 아주아주 천천히 진행은 되기는 한다. 그래서 하루나 이틀 심하면 일주일이 걸리는 경우도 있다.

  • classification도 마찬가지로 데이터가 10만개가 넘으면 SGD classifier 말고는 사실상 방법이 별로 없다. 앙상블모델 같은 랜덤포레스트 계열은 데이터가 많은 경우에도 케이스바이 케이스이기는 하지만 잘 작동되는 경우도 있다. 반대로 데이터가 10만개 보다 작은 경우에는 SVC 한번 써보고, 이게 텍스트 데이터라면 나이브베이즈 써보고, 위의 그림과 같은 기본적인 룰이 있기는 하다.

  • regression에서도 decision tree나 random forest 같이 부스팅 모델들도 쓸 수 있다.

  • 사실상 위의 그림은 기본적인 가이드라인 일 뿐이고 실질적으로는 우리가 아는 모델을 다 돌려봐서 가장 좋은 모델을 선택하는 것이 좋고, 데이터가 너무 많아서 돌리기 힘들거 같은 상황등의 경우 최후의 수단으로는 딥러닝을 적용하면 된다.

  • 주의해야할 점은 SGD는 사실상 딥러닝이나 마찬가지이기 때문에 실제로 돌리려면 텐서플로우 같은 툴을 써서 돌려야 한다. 사이킷런으로 그냥 돌리는 것은 너무나도 비효율적이어서 엄청나게 오래 기다려야 할 것이다.