Skip to content

Latest commit

 

History

History
248 lines (196 loc) · 11.6 KB

데이터과학과 머신러닝 개요.md

File metadata and controls

248 lines (196 loc) · 11.6 KB

데이터 과학이란 무엇인가

  • 다양한 키워드

    • 빅데이터
    • 인공지능
    • 4차 산업혁명
    • 데이터 사이언스
  • ‘데이터 과학’과 ‘인공지능’이 일자리를 위협한다?

    • 데이터 과학을 통해 나의 업무를 변화시키고, 새로운 기회를 찾을 수 있을까?
  • 데이터 과학을 활용한 사례: CT 사진을 이용한 암 진단

    • 인공지능을 활용하지 않고, 진단 전문의가 CT 사진을 통해 암진단을 내림
    • 인공지능이 인간이 제대로 판단하지 못한 암세포를 정확히 판단해냄(CNN 정확도 98%)
    • 기존 진단 방법의 문제 : 전문의 육성에 큰 자원이 들어간다.

데이터 과학의 정의

Data science is an inter-disciplinary field that uses scientific methods, processes, algorithms and systems to extract knowledge and insights from many structural and unstructured data

  • 데이터 과학은 데이터로부터 지식과 인사이트를 찾는 융합 분야다.

    • 이미 데이터 과학이란 용어가 나오기 전부터 데이터로부터 지식과 인사이트를 찾아왔다.
  • 데이터 기반의 의사결정 예시

    • 프로모션 진행 여부 결정하기
      • 경험 : 감 / 데이터 : 매출 기록, 이전 프로모션 결과분석 등
      • 프로모션 진행 결과를 분석해보면 프로모션을 진행하면 판매량이 급증하지만, 점차 판매량이 감소하며, 프로모션을 반복할수록 판매량의 증가분은 감소한다.
  • 데이터 과학이 뜬 이유

    • 새로운 종류의 데이터의 폭발적인 유입
      • 사람의 지적능력으로 판단하기 어려울 만큼 다양한 데이터가 수집된다.
    • 다양한 분야에서 IT 기술과 접목

데이터 과학의 정의 다이어그램

컴퓨터를 활용해서, 데이터를 분석하고, 현실의 문제를 해결하는 활동

  • A : IT 프로그래밍
    • A & B : 머신러닝
    • A & C : 소프트웨어/IT 시스템 개발
  • B : 수학 & 통계학
    • B & C : 전통적 통계분석
  • C : 업무와 산업에 특화된 지식/전문성(도메인 지식)
    • A & B & C : 데이터 과학

데이터 과학의 분석 수준

  1. 설명적 분석(Descriptive Analytics) : What happened?
  2. 예측적 분석(Predictive Analytics) : What will happen?
  3. 처방적 분석(Prescriptive Analytics) : How can we make it happen?

===

머신러닝이란 무엇인가

컴퓨터가 데이터로부터 시행착오를 통해 학습할 수 있도록 프로그래밍을 통하여 패턴을 찾는 활동입니다.

  • 통계분석과 머신러닝은 공통점
    • 입력값 (input value)을 받아 예측값 (output value)과 참값 (true value)을 도출하는 점에서
  • 통계분석과 머신러닝의 차이점 (추론vs예측)
    • 통계분석은 중간과정을 해부하는데 관심을 가진다(추론)
      • 함수 자체의 모양을 정확히 만드는 것
    • 머신러닝은 예측값과 참값의 차이를 줄이는데 관심을 가진다(예측)
      • 예측값을 정확히 만들어내는 것이 중요
      • 예측값과 참값이 다른 훈련의 시행착오를 통해서 정확한 예측값을 도출하는 것

전통적인 접근 방법과 머신러닝 접근 방법의 비교

  • 전통적인 접근 방법

    • 문제 파악, 문제 정의 -> 인간이 규칙 작성 -> 평가 -> 서비스 도입
    • 평가 후 에러 확인/문제에 새로이 반영
  • 전통적 접근 방법의 한계

    • 문제점
        1. “만약에~, 다음과 같이 실행~”이 너무 많다
        1. 이전과 다른 새로운 상황/데이터의 등장
        1. 인간의 지적 능력으로는 파악하기 어려운 상황/데이터의 등장(텍스트, 이미지, 음성, 영상 등)
  • 머신러닝 접근 방법

    • 문제 파악, 문제 정의 -> 머신러닝 모델 학습 -> 평가 -> 서비스 도입 -> 데이터 업데이트 -> 머신러닝 모델 학습 -> ...(자동화)
    • 평가 후 에러 확인/문제에 새로이 반영

===

데이터 과학자란 무엇인가?

데이터 과학 : 컴퓨터를 활용해서, 데이터를 분석하고, 현실의 문제를 해결하는 활동
머신러닝 : 컴퓨터가 데이터로부터 시행착오를 통해 학습할 수 있도록 프로그래밍을 통하여 패턴을 찾는 활동입니다.

  • 컴퓨터 활용(프로그래머) + 데이터 분석(데이터 애널리스트) + 현실의 문제(전문가, 컨설턴트)
    세가지 분야를 모두 활용해서 문제를 해결하는 사람은 데이터 과학자라고 한다.

  • 데이터 과학자에게 요구되는 Skill Set

    • 논리적 사고, 숫자기반 사고능력은 기반이 되어야한다
    • 도메인 지식(업무와 산업에 특화된 전문성) : 문제와 결단을 판단할 지식이 있어야한다.
      • 비즈니스 이해/지식
      • Collaborative
      • 데이터에 대한 호기심
      • 전략적 사고/기획력
      • 문제 해결능력
      • Proactive/Creativity
    • 수학&통계학 지식 : Data Analysis 지식이 있어야 분석이 가능하다
      • 연구 계획(Experiment design)
      • ML
      • Statistical modeling
      • 베이지안 추론
      • 선형대수, 미적분
      • Supervised Learning(지도학습), Unsupervised Learning(비지도학습)
      • Optimization(최적화)
    • 프로그래밍 지식 : 컴퓨터로 이를 구현할 수 있어야한다
      • CS 지식
      • 프로그래밍 언어(Python, R 등)
      • DB (SQL, NoSQL, DBMS 등)
      • Relational Algebra
      • 병렬 처리 컴퓨팅
      • MapReduce 개념
      • Hadoop / Hive / Pig
      • AWS 등 클라우드 컴퓨팅 사용 경험
    • 커뮤니케이션 능력
      • 상급자, 팀원과 원활한 의사소통 능력
      • 스토리텔링 능력
      • 데이터기반 인사이트를 의사결정에 활용하는 능력
      • ppt, doc 등 문서작성 능력
      • 시각화(Visualiztion)
      • 발표/설득력
  • 비전공자를 위한 출발 지점

    • 업무 전문성에서 시작해서 프로그래밍과 수학/통계학을 각각 학습하기보다 머신러닝을 학습하기
      • 프로그래밍 능력은 엔지니어가 해야할 일의 어느정도 수준만 갖추기
    • 프로그래밍을 전공했다면 수학/통계학과 ML을 공부하고 업무 전문성을 갖추기
    • 수학이 너무 두렵다면?
      • 수학은 데이터를 처리하는 방법과 머신러닝을 위해 사용할 알고리즘을 가장 논리적으로, 가장 오류없는 방식으로 소통하기 위한 도구.
      • 예를 들어 평균제곱오차란 참값과 예측값 간의 차이인 오차를 제곱한 것의 평균을 구한 값, 이를 식으로 바꾸면 오류없이 가장 정확한 소통 방법이다.
      • 수학자나 통계학자가 되란 것이 아니다! 지식은 도구일 뿐이다.

비전공자로서의 데이터 과학자 영역의 역할

모든 것을 다 갖춘 데이터 과학자는 유니콘, 상상속의 존재이다.
그래서 팀으로 활동한다.

  • 프로그래밍 스킬도, 수학&통계학 지식도 부족하다면 비즈니스 실무자와 IT 엔지니어 사이의 데이터 과학자가 되면 된다. 비즈니스와 기술의 가교역활 (시각화 등을 통해서)
  • 데이터 과학자에게 도메인 지식의 중요성
    • SNS에 대한 지식 없이, SNS 데이터 분석을 시작할 수 없다. (SNS 마케팅을 위한 분석 요구를 받음)
    • 도메인 지식 없이 데이터 분석 결과를 바탕으로 AB테스트를 계획하고 수행할 수 있을까?
      • 엔지니어와 통계학자를 설득해서 어떻게 테스트를 구성하고 진행할지 역할이 분명히 존재한다.

데이터 분석 업무 프로세스 이해하기

  • 데이터 과학자는 어디에 가장 많은 시간을 사용할까?
    • 데이터 정제 60 %
    • 데이터 셋 수집 19%
    • 패턴탐색 9%

데이터 셋 수집과 정제는 수작업으로 시간이 많이 들어가는 작업이다.

이상적인 데이터 분석 업무 프로세스

  1. 문제파악,문제정의
  2. 데이터 준비
  3. 모델 구축 & 분석 (패턴 찾기)
  4. 결과 공유
  5. 모니터링
    1. 문제파악 및 문제정의
      1. 비즈니스 문제 파악
      1. 머신러닝 문제로 전환
      1. 머신러닝 도입 필요성/가능성 체크(비용 대비 효율, 불가능 여부, 반드시 필요한가)
      1. 도입에 따른 효과검증 설계
    1. 데이터 준비
      1. 가능한 다양하고 많은 데이터 확보
      1. 머신러닝을 도입할 시스템 설계(엔지니어 영역)
      1. 데이터 전처리(정제) (Data Preprocessing)
      1. 탐색적 데이터 분석 (Exploratory Data Analysis) (특징, 패턴)
      1. 피쳐 엔지니어링 (Feature Engineering)
      1. 학습, 검증, 테스트 데이터셋 생성
    1. 머신러닝 모델 구축 & 분석
      1. 사용할 모델/알고리즘 선택
      1. 실무적 제약사항 고려
      1. 하이퍼파라미터 설정
      1. 모델 학습
    1. 결과 공유
    • A. 코드 배포 (Productionize)
    • B. 보고서 작성, 결과정리 및 발표 (커뮤니케이션 영역)
    1. 모니터링
      1. 모델의 성능을 지속적으로 tracking
      1. 효과검증 결과 tracking
      1. 지속적인 유지·보수 계획/실행

현실의 데이터 분석 업무 프로세스

  1. 문제파악,문제정의
  2. 데이터 준비
  3. 모델 구축 & 분석 (패턴 찾기)
  4. 결과 공유
  5. 모니터링
  • 1~5번 사이의 과정이 수없이 되돌아가면서 반복한다. 엄청난 시행착오를 겪는다.
  • 원하는 결과를 얻지 못할 가능성이 50%보다 높다.

데이터 분석을 위한 데이터 과학자의 도구

  1. Excel : MS는 궁극적으로 Excel을 데이터 분석 도구로 만들고자 한다. but 데이터 사이즈가 크면 쓰기 어렵다, 원하는 알고리즘을 사용할 수 있을만큼 유연성이 충분하지 않다.

    1. 쿼리로부터 데이터 가져오기
    2. 데이터 정렬
    3. 데이터 내 중복 제거
    4. 데이터 통합
    5. 가상 분석
    6. 피봇 테이블
  2. Python R

  • Python

    • 목적: 프로그램 개발
    • 주사용자: 프로그램 개발자
    • 컴퓨터 프로그래밍 언어 중에서는 쉬움
    • Python으로 데이터 분석을 사용하기 위해서는 많은 자료를 배워야 함, tools(라이브러리)
    • 데이터 과학과 관련된 코드들이 Python으로 구현된 경우가 많음
  • R

    • 목적: 데이터 분석, 통계 분석
    • 주사용자: 연구자
    • 초기에는 배우는 데에 어려움이 있으나 익숙해지면 쉬움
    • R에는 기본적으로 매트릭스 유형과 기본 그래픽이 내장되어 있음
    • 통계적 정확성에 있어서 월등히 좋고, 시각화에 탁월함
  • WARNING: “Python은 배우기 쉬워요”라는 말에 속으시면 안 됩니다. Python은 C언어나 JavaScript를 배운 경험이 있는 분에게 쉽습니다.

  • 데이터 과학이 컴퓨터 전공자를 위주로 발전해왔다. 따라서 많은 데이터 과학, 머신러닝 관련 자료가 Python을 기반으로 되어있다. 관련 자료의 입지는 Python이 R보다 훨씬 훨등하다.

  • Python 머신러닝 Tool Box

    • IPython
    • Jupyter
    • Numpy(연산)
    • Scipy(복잡한 연산)
    • Pandas(Matrix)
    • Scikit learn(ML)
    • matplotlib(visualiztion)
    • Tensorflow(Deep learning)
    • Pytorch
    • Keras 등