• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

sklearn 회귀와 keras, tensorflow

20.06.29 20:48 작성 조회수 719

0

퍼펙트 가이드를 마치고 keras, tensorflow를 공부하고 있습니다. 시계열 학습에 좋다고여서..

공부를 하다가 느낀건데 사이킷런 회귀와 케라스의 신경망의 차이가 있을까요?

Dense를 구성하여 결국 fit predict를 하는데 사이킷런에서 회귀계수를 찾는거와 신경망을 통해서 회귀계수를 찾는게 비슷해보여서

알고리즘은 다르겠지면 서비스를 운영하는 입장에서 어디에선 사이킷런을 쓰고 어디에서 케라스와 텐서플로우를 써야할지 아직 감이 안잡히네요

목적은 시계열 데이터를 케라스와 사이킷런을 쓰려고 하고 (딥러닝) 그외 분석은 사이킷런으로 하려고 하는데 이게 맞나요?

물론 여기다 질문하는게 좀 이상하긴 할텐데 아시면 답변 부탁드립니다. (질문할곳이 여기밖에 없네요 ㅠ)

답변 1

답변을 작성해보세요.

1

안녕하십니까,

제 강의에서 회귀 설명드릴 때 Gradient Descent 방식을 설명드린건 사실 딥러닝 이해에 도움이 되시라고 한것입니다. 딥러닝은 심층 신경망 사용시 선형 방식으로 회귀 계수의 최적화가 가능합니다. 이 경우 Deep learning은 선형을 유지하기 위해 Sigmoid와 같은 activation 을 적용하지 않습니다.

일반적으로 사이킷런/xgboost/lightgbm은 엑셀이나 RDBMS의 데이터와 같이 정형적인 행과 열을 가진 데이터에서 딥러닝과 비슷하거나 약간 더 좋은 성능을 가져올 수 있습니다.  반면에 이미지나 언어 처리에서는 딥러닝이 상대적으로 매우 뛰어난 성능을 나타내고 있습니다.

딥러닝의 문제(?)라고 꼽자면 학습에 너무 많은 시간이 소모된다는 것입니다. 반드시 GPU가 필요하며, GPU로 하더라도 일반적으로 사이킷런/xgboost/lightgbm 보다 느립니다.  또한 Inference(predict)의 경우도 CPU기반에서는 상대적으로 사이킷런/xgboost/lightgbm 보다 느리기 때문에 GPU가 필요합니다.

시계열 데이터의 경우 이전 데이터를 유추하는 알고리즘인 딥러닝 RNN기법을 적용하면 약간 성능이 좋아 집니다. 때문에 요새 시계열 데이터에 RNN을 적용하는 경우가 많습니다. 캐글 등에서 조금의 성능 향상이라도 순위가 크게 바뀌는 경우라면 RNN을 적용하는 것이 좋습니다.

하지만 일반 서비스에 적용하는 경우라면 학습/Inference 시간등을 고려하여, 선택하는 것이 좋습니다.

요약드리자면, 생각하신 대로 시계열 데이터는 딥러닝으로, 그외 정형 데이터는 사이킷런/xgboost/lightgbm를 적용하시는 것이 좋아 보입니다. 하지만 무조건 시계열 데이터를 딥러닝으로 적용하시더라도 시스템 구축 비용 대비 예측 성능 효과가 xgboost/lightgbm 대비 우월하게 향상하지는 않습니다.

감사합니다.