DS2 Certi - jjin-choi/study_note GitHub Wiki

§ 데이터의 이해

□ 데이터의 이해

  • 데이터의 유형

    • 정성적 데이터
      . 언어, 문자 등 형태와 형식이 정해져 있지 않아서 저장 검색 분석하는데 많은 비용 기술적 투자 수반
    • 정량적 데이터
      . 수치, 도형, 기호 등 데이터 양이 크게 증가하더라도 이를 관리하는 시스템에 저장 검색 분석 가능
  • 지식의 유형

    • 암묵적 지식
      . 형태와 형식이 정해져 있지 않아 저장 검색 분석하는데 많은 비용, 기술적 투자 수반
      . 사회적으로 중요하지만 다른 사람에게 공유되기 어려움
      . 상호작용 : 공통화 내면화

    • 형식적 지식
      . 문서나 매뉴얼처럼 형상화된 지식
      . 표출화, 연결화

  • DIKW 피라미드

    • 데이터 (가공전 순수한 수치나 기호)
    • 정보 (패턴을 인식하여 그 의미 부여)
    • 지식 (상호 연결된 정보 패턴을 이해하여 예측)
    • 지혜 (창의적 아이디어 도출)

□ 데이터베이스

  • 정의

    • (국내 저작권법) 소재를 체계적으로 배열 또는 구성한 편집물로 개별적으로 그 소재에 접근하거나 검색할 수 있도록 한 것
  • 특징

    • 통합된 데이터 (Integrated data)
      . 동일한 내용의 데이터가 중복되지 않음

    • 저장된 데이터 (Stored data)
      . 컴퓨터가 접근할 수 있는 저장 매체에 저장되는 것

    • 공용 데이터 (Shared data)
      . 여러 사용자가 다른 목적으로 데이터를 공동으로 이용한다는 것 의미

    • 변화하는 데이터 (Changeable data)
      . 데이터 베이스에 저장된 내용은 곧 데이터 베이스의 현 시점에서의 상태 나타냄
      . 이 상태는 새로운 데이터의 삽입, 삭제, 갱신으로 항상 변화하면서도 현재의 정확한 데이터를 유지해야함

  • 활용

    • OLTP (On-Line Transaction Processing) : 호스트 컴퓨터와 온라인으로 접속된 여러 단말 간의 처리 형태의 하나
    • OLAP (On-Line Analytical Processing) : 데이터 조회 위주
    • CRM ERP 등등

□ 빅데이터의 이해

  • Doug Laney's 3V (Volume, Variety, Velocity)

  • 본질적인 변화 4가지

    • 사전 처리 → 사후 처리
      . (사전 처리) 필요한 정보만 수집하고 필요하지 않는 정보는 모으지 않는 방식
      . (사후 처리) 많은 데이터를 모으고 다양한 방식으로 조합해 숨은 정보를 추출
    • 표본 조사 → 전수 조사
      . (표본 조사) 통계 분석에 사용
      . (전수 조사) 데이터 수집 비용 감소 및 클라우드 컴퓨팅 기술 발전으로 샘플링이 주지 못한 패턴 정보 제공
    • 인과 관계 → 상관 관계 . (인과 관계) 회귀 분석을 많이 하였음.
      . (상관 관계) 상관관계를 통해 특정 현상의 발생 가능성이 포착되고, 그에 상응하는 행동을 하도록 추천되는 일 : 상관분석의 패러독스
    • 질 → 양
      . (질) Garbage in, garbage out : 무가치한 데이터를 넣으면 무가치한 결과가 나온다고 생각
      . (양) bias 된 data를 구분해 낼 수 있기 때문에 양적으로 많은 데이터가 더 중요하게 됨
  • 활용 기본 테크닉

    • 연관 규칙 분석, 유형 분석, 유전자 알고리즘, 기계 학습, 회귀 분석, 감정 분석, 소셜네트워크 분석
  • 데이터 사이언스

    • 데이터로부터 의미 있는 정보를 추출해내는 학문
    • 구성 요소 : 분석 (수학, 확률모델, 머신러닝, 분석학 등등) IT (시그널 프로세싱, 프로그래밍, 등등) 비즈니스 분석 . Hard skill : 빅데이터에 대한 이론적 지식 및 분석 기술에 대한 숙련 . Soft skill : 비즈니스 분석 쪽. 통찰력 있는 분석에 상당히 중요

□ 정형 Data

  • 구조

    • Data Warehouse (D.W) 데이터 축적
    • Data Mart 필요한 데이터만 추출
  • ETL (Extraction, Transformation and Load)

    • 다양한 데이터 원천으로부터 데이터를 추출 및 변환하여 필요에 의해 다른 곳으로 이동하는 것
    • 기능 : 추출, 변형 (클렌징, 변환, 표준화 등), 적재
  • CDC (Change Data Capture)

    • 데이터에 대한 변경을 식별해 데이터 전송/ 공유 등의 후속 처리를 자동화 하는 설계 기법
    • push (source 에서 변경을 식별하고 대상 target 에 변경 데이터 적재)
    • pull (target 에서 source 을 정기적으로 살펴보아 필요시 데이터를 다운로드)
  • EAI (Enterprise Application Integration)

    • 기업 정보 시스템들의 데이터를 연계 및 통합하는 S/W 및 System 아키텍쳐
    • 지역적으로 분리된 정보 시스템들 간의 데이터 동기화
    • 협력사, 파트너, 고객과의 상호 협력 프로세스 연계
    • 웹 서비스 등 인터넷 비즈니스를 위한 기본 토대 확립

□ 비정형 Data

  • 처리 프로세스

    • 데이터 소스 → 수집 → 저장 → 분석
  • 대용량 분산 병렬 처리

    • 하둡 (Hadoop) : 분산 병렬 처리의 업계 표준인 맵리듀스 (MapReduce) 시스템과 분산 파일 시스템인 HDFS (Hadoop Distributed File System) 를 핵심 구성 요소로 가지는 플랫폼 기술
  • 데이터 연동

    • 비정형 데이터의 분석을 위해서는 정형 데이터와 비정형 데이터의 연동이 필요
    • 스쿱 (Sqoop) : 하둡 분산 파일 시스템 (HDFS) 과 데이터 베이스 간의 데이터 연동 솔루션

Sqoop

  • 대용량 질의 기술
    • 하둡 (Hadoop)
      . 저비용으로 대용량 데이터를 저장하고 신속하게 처리 가능하지만 코딩이 필요
      . 사용자에게 친숙한 SQL 이라는 query 기술을 이용한 'Hive' 등장 . 실시간 SQL 질의 분석 기술은 SQL on Hadoop (ex. APACHE drill, APACHE Tajo, Shark, Impala, HAWQ, presto ...)

□ 데이터 처리 기술

  • MapReduce

    • 구글에서 분산 병렬 컴퓨팅을 이용하여 대용량 데이터를 처리하기 위한 목적으로 제작한 SW 프레임워크

    • 분할 정복 방식으로 대용량 데이터를 병렬로 처리할 수 있음

    • 구글 MapReduce : 대용량 처리에 대한 복잡성을 추상화하였고 오직 핵심 기능 구현에만 집중하도록 제작 ( 찾아보기) https://static.googleusercontent.com/media/research.google.com/ko//archive/mapreduce-osdi04.pdf

    • 아파치 MapReduce : Java 언어로 구현된 시스템 . 구성 요소 : 네임 노드 / 데이터 노드 / 잡 트래커 / 태스크 트래커로 구성 . 실행 단계 : Split → Map → Combine → Shuffle → Sort → Reduce (분산 병렬 컴퓨팅 실행)

  • 분산 처리 기술

    • 분산 파일 시스템 . Google File System (GFS) 여러개의 클라이언트, 하나의 마스터, 여러 개의 청크 서버로 구성 . Hadoop Distributed File System (HDFS) Block 단위로 나뉘어 여러 데이터 노드에 분산 복제 저장

    • 데이터베이스 클러스터 . 하나의 데이터 베이스를 여러 개의 서버 상에 구축하는 것을 의미 . 파티셔닝 - 데이터 통합 - 클러스터링

    • NoSQL . Google bigtable, Amazon SimpleDB, HBase, Microsoft SSDS

  • 클라우드 인프라 기술

    • 동적으로 확장할 수 있는 가상화 자원들을 인터넷으로 서비스하는 기술 (ex. VMware, Xen, KVM 등 IaaS Infrastructure as a Service)

    • 서버 가상화 . 물리적 서버와 운영체제 사이에 적절한 계층을 추가해서 서비를 사용하는 사용자에게 물리적인 자원은 숨기고 논리적 자원만 보여주는 기술

□ 시각화 디자인

( 여기서부터 듣기 )

§ Python

□ Basic

  • 플랫폼 (OS) 운영 체제에 독립적이다.

  • 컴파일러 (소스코드를 기계어로 먼저 번역. 해당 플랫폼에 최적화되어 프로그램을 실행)

    • 실행 속도가 빠르고 한번의 많은 기억 장소 필요
    • C, C++, 자바
  • 인터프리터 (별도의 번역 과정 없이 소스 코드를 실행시점에 해석하여 컴퓨터가 처리할 수 있도록 함)

    • 간단히 작성, 메모리가 적게 필요, 실행 속도가 느림
    • 파이썬, 스칼라
  • 객체 지향적 동적 타이핑 언어

    • 객체 지향적 : 실행 순서가 아닌 단위 객체 중심
    • 동적 타이핑 언어 : 실행하는 시점에 프로그램이 사용해야할 데이터에 대한 타입이 결정됨

□ String & Object

  • Log 남기기
    • 프로그램 진행 상황에 따라 다른 level 의 log 를 출력함
    • debug > info > warning > error > critical
import logging

logger = logging.getLogger("main")
stream_handler = logging.FileHandler("filename", mode="at", encoding="utf-8")
logger.addHandler(stream_handler)

logging.debug("DEBUG")
logging.info("INFO")
logging.warning("WARNING")
>>> WARNING:root:WARNING
logging.error("ERROR")
>>> ERROR:root:ERROR
logging.critical("CRITICAL")
>>> CRITICAL:root:CRITICAL

□ Data Analysis

  • Data Handling ( Comma Separate Value )

  • ML Overview and Python ecosystem

  • Numpy & Pandas

□ Data Visualization

  • Data Visualization

  • 시계열 데이터 처리

  • 데이터 전처리 실습

§ 수학 & 통계

□ 통계 기초

□ 통계 심화

□ 통계 응용

§ 모델링

□ Machine Learning

□ Deep Learning

□ 선형 대수 / 최적화

⚠️ **GitHub.com Fallback** ⚠️