Data Science 이야기 - 임백준님 한빛미디어 세미나 참가 후기

Data Science 이야기 - 임백준님 한빛미디어 세미나 참가 후기

http://www.hanbit.co.kr/store/education/edu_view.html?p_code=S2703738600

세미나가서 들으면서 정리한 노트. 누구에게든 도움이 많이 될 것 같은 내용이라 공유. 모르는 내용이 많아서 잘못 받아적은 내용이 있을 수 있겠지만, 용어는 찾아가면서 정확하게 적으려 노력함.

서론

  • 임백준 소개
  • 본인은 데이터 관련해서 hands on 하다고 이야기 하기에는 힘들다.
  • tensorflow, keras 사용자는 아니다. 그걸 사용하는 사람들과 같이 일하는 중.
  • 나무에 대한 이야기 보다는 숲에대한 이야기.
  • 스피커 질문
    • 데이터 관련된 일을 학교나 회사에서 하고 있는분? -> 1/60 (손든사람/청중수)
    • 데이터에 관심이 있으신 분? -> 20/60
    • 딥러닝을 스스로 돌려보신분? -> 3/60
    • 데이터에 관심이 있으신 분들과 하고싶은 이야기가 많다.
  • 오늘 하는 이야기는 기술적으로 큰 의미는 있지 않을거다. 전체적으로 숲을 보는데 의미가 있지 않을까 한다.

본론 - 1부

데이터 과학자란 누구인가?

설명하기 쉽지않다.

  • 데이터 분석가
    • 데이터분석가 -> BA
      • sql 로 데이터를 꺼내서 차트나 그래프를 만드는 그런 사람들…
      • 말은 단순한데 도메인 지식과 데이터에대한 이해가 필요함
      • 단순하다고 말하고 싶진 않다.
    • 데이터분석가가 데이터 과학자인 것은 아니다.
  • 데이터 엔지니어
    • 웬만한 회사들은 데이터 사이언스 팀 인력들이 데이터 엔지니어링을 많이 한다.
      • 데이터 엔지니어링은 데이터를 A 라는 지점에서 B 라는 지점으로 옮기는 사람들.
      • 요즘은 데이터 규모가 크고, 빠르기 때문에 옮기는 것이 단순하지 않기 때문에 하나의 직업군으로 분류 될 수 있다
      • Hadoop, Spark, Kafka 등등
    • 이것도 데이터 사이언스는 아니다.
  • 통계학자
    • 통계지식으로 데이터에 대한 예측.
    • 데이터 과학자와 비슷하지만 데이터 과학자는 아님.
  • 머신러닝 엔지니어
    • 머신러닝 수행하는 사람.
    • 데이터 과학자라고 하면 머신러닝 하는 사람이라고 생각하는 경우도 많지만 그건 아님.
  • 데이터 과학자란?
    • 위 직업들의 교집합 또는 합집합을 이루는 사람들.
    • 데이터 과학자에 대한 스피커 주관적 생각.
      • 위 직업들의 특성을 고루 가지고 있으면서 데이터와 관련된 문제가 있을때, 이 데이터셋으로 해결할 수 있는 문제, 그 문제를 해결하려면 어떤 방법론으로 접근해야 한다는 것을 아는 사람. 그런 능력이 있는 사람.
      • 어떻게 문제를 해결해야할지 어떻게 데이터를 다뤄야 할지 머리속에 방법들이 파노라마처럼 펼쳐지는 사람. 잘 정제된 정의는 아니다.

데이터 과학은 왜 필요한가?

  • 왜 이렇게 이슈가 되는 걸까요?
    • 데이터는 쌓여있고 분석을 해야하기 때문에 (청중 답변)
  • 왜 분석을 해야하나요?
    • 의사결정을 위해 (청중)
    • 데이터에서 가치를 뽑아내기 위해. 추상적인 표현이다.
    • 무슨가치가 숨어 있는지 모르기 때문에 분석을 해보아야 한다.
  • 아무도 건드리지 않은 데이터가 이세상의 90%라고 말한다. 하지만 데이터는 부족하다.

데이터 분석에서의 문제들

  • Data Scarcity
    • 막상 분석하는 사람들은 쓸만한 데이터가 없다고 말한다.
    • 데이터를 쌓을 때 맹목적으로 쌓았거나, 쌓을 당시의 목적과 분석의 목적이 일치하는 경우가 거의 없기 때문에.
      • 머신러닝의 관점에서는 “쌓여있는 데이터에 쓸만한 feature 가 없다”
      • 데이터 분석에서는 이게 제일 큰 문제다.
  • Cold Start Problem
    • 아마존, 넷플릭스 처럼 상품에 대한 추천 시스템을 만드는 경우,
    • 사용자가 처음 가입했다면, 새 유저와 유사한 사용자를 찾기 어렵고,
    • 새로운 상품이 생긴다면, 같은 문제.
    • 히스토리 데이터가 없는 문제. 피할 수 없는 문제.
    • 데이터 분석과 관련된 큰 문제로 여겨짐.
  • 비정형 데이터
    • 수리기사들이 가전제품 수리한 후 고객에게 질문하고 받은 답변을 기사가 시스템에 입력함.
    • 데이터베이스에 쌓임.
    • 시간이 지나면 굉장히 소중한 데이터.
    • 근데 이게 자연어로 입력이 되어 있음. 손글씨.
    • 그때 그때 임의의 기사들이 자기 생각하는 방식대로 입력해둠.
    • 수집은 했으나 구조가 없고 분석을 하기 힘든 구조.

이런 문제들이 있기 때문에 막연히 분석하자고 달려들었을 때 풀어야 할 문제들이 너무 많다. 데이터 과학은 단순히 머신러닝 돌리는 것이 아니라 이런 문제들을 해결해 나가는 것.

데이터 과학자

  • 돈 잘번다
  • 실제로 하는 일은 지저분하고 머리아프다.
  • 코딩 하는 것 처럼 깔끔하지 않다.
  • 데이터를 주려고 하지도 않고 받아도 엉망이다.
  • 이런 지저분한 것을 처리하는 것이 데이터 과학자들이 할 일.
  • 이렇게 데이터를 받으면 머신러닝 등 돌리는 것은 순식간임.

Ad Tech 스타트업 회사에 있었다 (여담)

  • 광고회사는 분석할 데이터가 많다.
  • 모델이 자동적으로 행동하게 코딩했을 때 회사 revenue 가 팍팍 달라지는 것을 경험함. - 어떤사례가 있었는지 청중이 Q&A 시간에 물었으나 상세한 답변은 하지않음.
  • 스타트업 회사에서 데이터분석가로 자원을 키우면 IT 공룡 회사로 다 간다. 아마존, 구글, 페이스북.
  • 아무튼 데이터 과학은 핫하다.
  • 하지만 실제로 하는 일은 그렇게 매력적이지 않다.

Tech Stack 정리

python, tensorflow, keras, spark 이정도로 정리

  • 데이터 분석 쪽에서는 툴이나 프레임웍의 중요성이 일반 프로그래밍 보다 덜하다.
  • 툴은 그냥 툴이다. 그래야 된다.
  • 기술스택에 대해서는 스피커 본인이 정리하는 내용이 자기 생각과 다르다고 속상해 하지 마시길
    • “이 바닥에서 언어는 Python 이다. 다른 언어는 기웃거릴 필요가 없다.”
    • tensorflow, pytorch, caffe, mxnet, theano
    • 해외 협력 프로젝트에서도 전부 tensor flow 로 정리하고 요청하는 분위기다.
    • tensor flow api 를 직접 쓰기 보다는 keras 를 많이 쓴다.
    • 더 편하고 더 새로운게 나오면 빨리빨리 갈아타는게 상책이다. 핵심원리는 따라가되 지엽적인 api에는 목숨걸지 말자.
    • 하다못해 spark 도 python api 지원하니까..
    • shallow learning - 전통적인 머신러닝
    • cuda - compute unified device architecture
    • 텐서플로우가 엔비디아 gpu만 지원을 한다.
      • 그래서 맥에서 윈도우로 갈아타는 사람도 생긴다.
  • 에디터
    • pycharm 이 괜찮다.
  • 데이터 엔지니어링 (빅데이터 파이프라인)
    • apache-spark

통계지식 정리

  • 편차, 분산, 표준편차, 분포 등등
    • 표준편차 등등 수식이 가지는 의미 정도를 알아줘야한다.
  • headfirst 통계학 - 한빛에서 나온거 정도는 봐줘야 한다.
  • p-value 라는 표현이 자주 등장하는데, 왜 이말을 하는지 정도는 알아야 한다. p-value 는 예전처럼 중요하게 사용되지는 않는다. 하지만 모르면 집에가서 좀 찾아봐라
    • 이쪽 공부안하면 이 의미를 제대로 이해하기는 쉽지않다.
    • p-value 는 통계학 쪽의 monad… 이해는 하는데 설명은 못해주는… 스스로 그 의미를 파악할 수 밖에 없다.
  • precision, recall. 요정도도 알아야 한다.
    • 요정도 알아야 데이터 분석하고 머신러닝 돌리고 딥러닝 돌리고 해서 예측하려고 할 때, 이 예측에 대한 평가를 해야 하는데 (얼마나 정확한 예측인지), 예측과 관련된 evaluation 에 precision, recall 이라는 용어 사용
    • f-score 이런건 볼줄 알아야 한다.
  • 공식을 아는 것이 아니라, 이 숫자가 무엇을 의미하는지. 어느정도 수치가 좋은거고 어느정도 수치가 좋지 않은거고.
  • 책한권들고 따로 공부할 필요가 있지는 않고 따로 개념만 공부해도 된다.
  • regression 에 대한 개념
  • overfitting 에 대한 개념
    • 데이터에는 맞는 모델인데 generalize 가 힘든 모델 (청중답변)
    • 실전에 데이터분석을 할 때 본의아니게 overfitting 하게 되는 경우가 많다.
    • 테스트 데이터에서는 예측력이 뛰어나지만 실제 모델에 적용하면 오차가 커지는 경우.
  • gradient descent 경사하강법
    • 미분에 대한 문제 (청중답변)
    • 기울기가 점점 완만해지는 지점을 찾는게 머신러닝이다(청중답변)
    • cost function의 값은 최소화 시키는
    • 통계적 gradient decent -> stochastic gradient descent.
  • 이런 개념들 코세라 Andrew Ng 강의 들으면 접할 수 있음
  • back propagation (역전파)
  • drop out

본론 - 2부

딥러닝에 대한 오해

딥러닝이 만능열쇠라 생각하는데 사실 상당히 제한적이며, 딥러닝으로 풀 수 없는 문제도 많다. 예상치 못했던 놀라운 결과를 내는 경우도 많지만 실제 딥러닝이 해줄 수 있는 것에 비해 너무 많은 인기를 끌고 있는 것도 사실이다. (오해에 대한 이야기이므로 딥러닝이 필요 없다는 이야기가 아니다.)

딥러닝의 한계들

  • Data Hungry
    • 딥러닝은 데이터를 엄청나게 원한다.
    • 의미있게 사용할 수 있는 데이터가 실제로 그렇게 많지 않다.
    • 딥러닝에게 먹여줄 수 있는 데이터가 풍부하게 있는 경우가 많지 않다.
  • 결과에 대한 설명이 힘들다
    • 내가 암이라는 결과가 나왔다.
    • 그럼 그냥 암이다.
    • 왜 그런 답을 도출했는지 설명이 안된다.
    • 딥러닝이 원래 근본적으로 설명이 안되는건지, 아니면 너무 내부적으로 복잡해서 설명이 안되는건지? (박사들과 논쟁했던 경험)
      • 결론은..
      • 이론적으로는 가능하다. 그래서 설명이 가능하지만 너무 복잡해서 의미가 없다. 사람이 알아들을 수 없다.
      • 당신은 암이에요. 왜요? 걍 암임 ㅋ
  • 불확실성을 제대로 처리할 수 없다
    • uncertainty
    • 한 70% 정도의 가능성으로 암이에요. 라고 하는 것이 아니라 걍 암이에요.
    • 어느정도의 가능성(확신)으로 암이라고 하는지 알 수가 없다.
    • 기면기고 아니면 아니다. 끝.
    • 그렇기 때문에 중요한 일들을 맡기기 어렵다.
  • 위와 같은 문제해결을 위해 여러가지 연구들이 진행되고 있다
    • data hungry 문제 해결
      • one shot learning
      • transfer learning
    • 베이지언 통계 -> Bayesian Probability(베이지언 확률) -> 불확실성을 다루는 것.
      • 데이터 분석과 관련되어 이야기 하려면 공부해야 한다.
      • 베이지언 통계학 + 뉴럴 네트웍
    • incremental learning
      • 딥러닝에서 새로운 데이터를 발견하면 새로 Input 을 집어넣어 학습시키는데 비효율적이다.
      • 새로운 데이터가 발견됐을 때 기존의 모델을 활용해서 빠르게 학습시키는 방법.
    • neural evaluation
      • 딥러닝에서 사용되는 아키텍처는 어디서 나오는거냐?! 라고 딥러닝에 의문을 제기하는 것.
      • 아키텍처도 과학적인 방법으로 접근해야 한다는 것이 neural evaluation.

실전 데이터 분석을 수행할 때 생각해야 하는 문제들

  • Data Curation
    • 실제 분석시에 다양한 부서에서의 다양한 데이터가 존재한다.
    • A라는 부서에서는 미국을 USA 로 데이터에 포함시켜뒀고, B에서는 America, C에서는 나름의 코드로 AA 라고 정의해뒀다면
      • USA, America, AA 가 다 똑같은 데이터다.
      • 이것들은 다 동일한 데이터라고 발견해 내는 것이 data curation.
    • 실제 데이터분석할 때는 이런 것들이 더 문제가 됨.
  • 딥러닝에서 Feature 에 영향을 주는 label 은 무엇인지.. 파악하는 것이…
  • feature generation…
  • -> feature engineering
  • model selection
  • hyper parameter optimization

데이터 과학자가 가져야 하는 기술에 대해 다시한번 정리

1. 프로그래밍 능력

프로그래밍언어, 코딩능력, 소프트웨어 엔지니어링 하는 사람만큼은 아니더라도 프로그래밍 잘할 수록 좋은 데이터과학자가 된다.

2. 기초적인 수준의 통계지식

  • p-value
  • 분포
  • 표준편차 등등
  • 개념에 대한 이해

3. Machine Learning

4. 미적분, 선형대수

  • 행렬의 곱
  • 행렬 inverse (역행렬)
  • 정도 할 줄 알면 된다
  • 본인이 머신러닝 알고리즘 개발할 것이 아니라면 수학적인 공부에 많은 시간을 투자할 필요는 없다.

5. 지저분한 데이터를 정제하는 능력

데이터를 정제할 때 가장 중요한 것은 끈기다! 너무 드러우니까 만지기가 싫지만 이렇게도 만들어 보고 저렇게도 만들어보아야 한다. 이 과정에서 데이터 분석의 품질이 결정된다. 계속 만져보지 않으면 좋은 데이터 모델을 만들 수 없다. 더러운 데이터에서 출발하는 것이 더 의미가 있다. 예쁜데이터만 만지면 현실이 그런 줄 착각하게 된다. https://www.kaggle.com/

6. 데이터 시각화

데이터를 직관적으로 이해할 수 있도록 만드는 능력

7. 커뮤니케이션 능력이 대단히, 굉장히 중요하다.

좋은 분석가는 그 데이터 안에 story, narration, suggestion 이 있고, 리포트의 숫자들이 생생하게 살아있다. 좋지 않은 분석가는 숫자만 나열해놓고 끝이다. 경영진은 그 숫자 들여다 보고 있을 시간이 없고, 많은 판단을 데이터를 분석하는 사람에게 의존할 수 밖에 없다. 이런 모든 것들이 다 커뮤니케이션과 관련된 것. 살아있는 스토리를 만드는 노력을 해야한다. 스토리가 있어야 상대방이 자기 이야기를 소비한다.

데이터과학 공부 자료

Q&A 중 기억에 남았던 답변

처음 데이터분석은 데이터의 형태가 분석에 용이한 모델이 아닐 것이다. 그래도 일단 분석을 해봐야 어떤 모델을 가져야 하는지 알 수 있다. 그리고 모델을 수정하고 데이터 수집하는 방식을 수정한다. 데이터 수집과 분석이 하나가 되어 서로가 서로를 피드백하는 사이클을 형성하는 것이 중요하다.

Comments

Yaboong's Picture

Yaboong

오스카 쉰들러는 흔해빠진 기회주의자요 부패한 사업가였다. 그러나 거대한 악이 세상을 점령하는 것처럼 보일 때 그 악에 대항해서 사람의 생명을 구한 것은 귀족도 지식인도 종교인도 아닌 부패한 기회주의자 오스카 쉰들러였다.

Seoul, South Korea https://github.com/yaboong