A.I./데이터분석

데이터분석은 탐험과 같은 느낌이다.

콘파냐 2020. 7. 8. 00:20
반응형

개발자로서 데이터분석은 필요성보다는 호기심으로 더 끌린다. 이건 개인적인 생각이겠지만, 비슷한 생각을 가진 분들이 있을 것이다.

2년전 뒤늦게 데이터분석과 머신러닝, 딥러닝에 입문하게 되었다. 물론 생업이 데이터 과학자나 엔지니어가 아니기 때문에 업무적으로 지속적인 사용은 하지 못했기 때문에 아직 기본 수준이라 생각된다.

그래도 대부분은 모델들에 대한 이론은 어느정도 살펴보고, 통계학이나 신경망의 loss fuction의 특성, 역전파 알고리즘을 수학적으로 증명하고 코드로 만들어보기도 했었다. (양질의 교육자료 덕분에 이런 혜택을 얻고 새로운 세상에 눈뜬 것에 항상 감사한다.)

2년전 강화학습까지 공부중이었는데 그 뒤로 손을 놔버렸다. 워낙 개발이라는 것이 방대하고 변화하고 공부할 것이 많기 때문에 잠시 데이터 분석공부를 미뤄두었다. 지금 다시 사이트를 만들면서 특정 기능을 위해서 분석을 시작했다.

실제로 실무에서 어떻게 분석을 하는지 모르겠지만 개인적으로 numpy와 pandas는 데이터 분석을 위한 축복같은 툴이다.

완성도와 사용방식도 워낙 자유롭고 기능도 많기 때문에 익히는데 시간을 걸리지만, 한번 익혀 놓으면 데이터를 자유자제로 주무를수 있게 된다.

내 생각은 pasdas는 정말 잘 만들어진 라이브러리다. 어쩌면 이건 개인적인 생각일 수도 있는데 왜냐면 나의 사고의 흐름과 너무 잘 맞기 때문에 특별히 외우기 보다는 몇번 사용하다보면 직관적이 사용이 가능하기 때문이다.

나는 초반 분석은 pandas로 자유롭게 데이터를 건드려보고 거기에서 insight를 얻게되면 실제 제품에는 performance를 위해 numpy의 array형식으로 사용한다. 물론 python 베이스가 아닌 C++이나 성능높은 언어 베이스 제품으로 포팅할 수도 있을 것이다.

그리고 지금와서 느껴지는 것이 데이터 분석과 기계학습의 주체가 되는 것은 데이터다.

이를 간과하고 기계학습 모델만 많이 공부하고 많이 공부했다고 하면 특정 도메인 데이터를 분석할 때 뭘 어떻게 해야할 감이 안잡힐 수가 있다.

모델은  많이 다루기 보단 하나를 깊게 다루면 다른 모델의 특성 역시 쉽게 파악할 수 있을 거라 생각한다. 예를들어 gradient boost와 random forest가 초창기 모델이어서 식상하다 무시하지말고 모델의 특성과 다루는 데이터의 궁합 등을 실제로 직접 적용해가면서 익히지 않으면 나의 것이 안된다는 것이 나의 결론이다.

2년전 그 당시 캐글에서는 xgboot 가 아주 성능이 높다고 다들 xgboot만 사용했었다. 하지만 경험상 데이터 포인트가 낮은 경우 gradient boost가 내가 분석하는 데이터에는 적합했다.

내가 알던 어떤 분은 데이터 포인트가 1000개도 안되는 데이터에 신경망을 적용했는데.. 물론 신경망의 특성을 잘 몰라서 그런 것이었겠지만.

하나의 기본 모델의 특성을 아주 잘 파악하는 것이 장기적으로는 도움이 된다고 생각한다. 그래서 처음 머신러닝을 공부한다면 블랙박스같은 신경망보단 적어도 통계학적으로 분석하고 파라미터의 의미가 직관적으로 와닿는 기본적인 모델을 공부하는 것을 추천한다.

그리고 더 중요한 것은 어떤 모델을 사용하느냐보단 노이즈가 적고 분포가 정규분포를 갖는 훈련셋이 모델의 성능을 극한으로 끌어올려준다고 생각한다.  이런 생각은 훈련세트에 오류가 있는 데이터 포인트 하나때문에 모델의 예측 proba가 의미있는 수준으로 요동치은 것을 봤기 때문이다.(모델에 특성에 따라서 문서분석처럼 희소행렬특성에 특화된 모델 그렇지 못한 모델 처럼 데이터에 따라서 모델을 선택하기도 한다.)

물론 데이터의 양이 많다면 이런 오류는 파라미터 조정으로 어느정도는 커버할 수 있겠지만, 몇몇 노이즈가 우리가 예측할 수 없는 일을 하기도 한다.

이 말은 모델들은 우리가 생각하는 것보다 디테일하고 아이같기 때문에 양질의 데이터를 먹여줘야한다는 뜻이다.

따라서 최대한 데이터를 잘 다루는 것이 데이터 과학자와 엔지니어 에게는 필수라고 생각들었다.

그래서 한동안은 신경망과 강화학습과 같은 뭔가 있어보이는 것들을 탐구하려하기 보다는 기본적이고 고전적인 모델을 가지고 다양한 데이터를 분석할 생각이다.

반응형