이번주는 줌강의로는 파이썬을 공부했고, 온라인 강의로는 데이터 사이언스에 대해 깊게 알아보았다.
파이썬 코드는 차차 추가 정리하도록 하고, 데이터 사이언스에 대해 궁금했던걸 정리해본다
데이터 사이언스
1) 기초용어
선형대수학
벡터 : 숫자의 나열. 숫자들의 묶음. x = (1, 2, 3) x = (1, 2, 3) , y = (4, 3, 1) 벡터의 연산 : x + y = (5, 5, 4) // 3 * x = (3, 6, 9) 벡터의 특징 : 원소값, 방향(상대적인 위치) 벡터의 차원 : 원소의 개수 벡터의 크기(norm) : 벡터의 모든 원소를 제곱하고 다 더한 뒤, 루트를 씌워준 값. → 원점과의 거리.(L2 norm) 벡터 공간(Vector Space) : 벡터가 정의되는 집합. 연산, 차원, 기저(basis)(=축), ... |
정보이론 : 정보라는 대상에 대해서 다루는 학문.
Bit : 0 또는 1 Byte : 8bits = 1B KB, MB, GB, TB, PB : 1000B = 1KB, 1000KB = 1MB, 1000MB = 1GB, 1000GB =1TB, 1000TB = 1PB entropy(엔트로피) : 정보의 차이를 나타낸 값. 데이터(data) : 관측된 사실. 정보(information) : 데이터를 가공해서 정형화한 수치값. 양. 사실 |
2) 데이터 분석 레포트
데이터 분석 레포트는 주로 다음과 같은 3가지로 공유된다.
대시보드(주로 웹) - tableau, Wandb 논문 – data Science Journal, AAAI 블로그 – medium의 towards data science, velog, github의 블로그(ratsgo블로그) |
3) 모델링
데이터 사이언스는 주로 예측 모델이 사용됨
예측 모델이란, 주어진 데이터의 패턴을 파악해서 미래의 데이터의 패턴을 예측할 수 있는 시스템을 말한다.
모델링에는 통계적인 모델링과 머신러닝(Machine Learning) 방법이 주로 사용됨
Statistical Modeling : 데이터가 정의되는 공간(S, sample space)와 그 공간에서의 확률 분포(P, probability distribution on S)가 있다고 할 때, 어떤 데이터는 S에서의 P를 통해서 만들어졌다고 가정하고 데이터를 잘 기술하는 P를 찾는 과정. - from Wiki
보통 P는 parameter들에 대해서 정의된다. parameter란 어떤 통계 집단을 기술하는 측정된 값이다. e.g. 평균(mean, ), 표준편차(standard deviation, ) ... 적절한 parameter를 찾게 되면 잘 기술하는 P를 찾을 수 있다. 이러한 parameter를 찾아가는 과정이라고 볼 수 있다. |
Machine Learning Modeling : 주어진 학습 데이터로 얻은 정보로 학습하지 않은 데이터에 대해서 예측(또는 추론)을 하는 과정.
머신러닝 모델은 여러가지 종류가 있다. 어떤 task를 수행하느냐에 따라서 적합한 모델들이 있다. e.g. 분류 - Logistic Regression, Naive Bayes, ... 회귀 - Linear Regression, Random Forest, ... 통계적인 모델링처럼 적절한 Parameter(또는 weight)를 찾는 과정이라고 볼 수 있다. 학습 방법을 결정하는 parameter인 hyper-parameter의 영향을 받는다. |
통계적 모델링은 데이터를 해석할 수 있는 확률 분포를 찾아가는 과정이다. 그 확률분포를 parameter를 통해 결정된다.
머신러닝 모델링은 주어진 학습 데이터로 정보를 학습해서 학습하지 않은 데이터를 판단하는 기준을 설정하는 과정이다. 그 판단하는 기준은 parameter를 통해 결정된다.
결국 모델링이라는 것은 어떠한 parameter를 찾아가는 과정이다.
데이터 엔지니어
1) 기본 개념
Data Engineering : 빅데이터를 수집, 가공, 저장하는 모든 시스템을 구축/관리하는 과정
요구 역량
Hadoop Ecosystem Spark / Hive 대용량 데이터 처리 경험 데이터 파이프라인 설계 Python / C++ / Java / Scala 대용량 데이터 전처리 CS 지식 (자료구조, 알고리즘, 운영체제, 데이터베이스, 네트워크, 컴퓨터구조, 오토마타/프로그래밍 언어론/컴파일러) |
2) 기초 용어
Computing Resource : 데이터를 처리하기 위해서 필요한 리소스.(=능력)
CPU(Central Processing Unit) : 연산 능력(= 계산량) e.g. # of cores 메인 메모리(main memory) : 데이터를 임시 저장할 수 있는 공간의 크기 (= 단기 기억 능력) 스토리지(storage) : 데이터를 저장할 수 있는 크기 (= 장기 기억 능력) |
Network : 컴퓨터가 특정 시스템을 통해서 연결되어 있는 구조. 이 구조에서는 컴퓨터들이 서로 통신을 해서 데이터를 주고받을 수 있다
network model : Computer Network를 이해하는 방식. ( OSI 7 layer VS TCP/IP layer ) Client : end-user. 실제 사용자. 서비스 사용자. 작업을 요청하는 사람.(또는 프로그램/컴퓨터) Server : 요청을 받는 대상. 서비스를 운영해주는 컴퓨터. Web : WWW(World Wide Web)와 같은 단어. hypertext와 media로 구성된 페이지들을 연결한 구조 또는 시스템. |
데이터베이스 : 데이터를 효율적으로 운영/관리/저장하는 시스템.
RDB : Relational DataBase. 관계형 데이터베이스. 테이블 형태로 데이터를 관리하는 체계. table : row와 column으로 구성된 2차원 데이터. RDB의 구성 요소. table 단위로 데이터를 관리. schema : 어떤 테이블에 대한 정의. 테이블에 대한 metadata. column에 대한 정의, row에 대한 정의. SQL : Structured Query Language. 데이터베이스를 다루기 위한 언어. NoSQL : Not only SQL. SQL 그 이상. SQL로 지원되지 않는 데이터베이스들을 포함한 모든 시스템. e.g. MongoDB, ElasticSearch, Hive, HBase, ... Data Warehouse : 분석을 목적으로 만들어진 대용량 데이터 처리가 가능한 관계형 데이터베이스. Data Lake : 수집을 목적으로 만들어진 대용량 데이터 처리가 가능한 NoSQL (Warehouse -> Lake로 관심사가 바뀌는 중) |
3) Data Pipeline
데이터 분석가들이 분석에 사용할 데이터를 정의하게 되면, 데이터 엔지니어에게 요청을 해서 해당 데이터를 처리해주길 원한다.
대용량 데이터(e.g. 10,000,000 rows)를 한번에 처리하는걸 데이터베이스 요청을 했다면 어떻게 처리해야 될까?
만약에 데이터 분석가가 Pandas(Python에서 정형데이터를 다루는 오픈소스 라이브러리)를 이용해서 데이터를 처리하기로 정했다. Pandas에서 데이터를 처리할 수 있게 요청을 했다면 어떻게 처리해야 할까?
Extract(추출) 데이터를 원본 소스로부터 가져오는 작업. SQL의 SELECT와 같다. (아직, SQL을 모르신다면 Excel의 VLOOKUP과 같다.) 원본 소스가 꼭 RDB일 필요는 없음 (RDB가 효율은 가장 좋다.) 분석가가 정의한 모든 데이터를 다 가져온다. Transform(변환) 추출한 데이터를 분석에 필요한 형태로 변환한다. 데이터의 포맷을 통일시켜주는 작업이다. 분석 요청 사항에 맞는 형태로 저장된다. (Data Warehouse의 schema 정의) Load(적재) 변환된 데이터를 Data Warehouse에 저장한다. 저장된 데이터를 분석가가 편의에 따라 자유롭게 사용할 수 있다. (주로 application 형태로 제공됨) 원본 데이터에 정보를 모두 나타내고 있어야 한다. |
ETL : Extract, Transform, Load의 약자로 다양한 데이터 소스로부터 데이터를 수집 및 처리하는데 사용되는 파이프라인
ETL은 데이터 엔지니어의 손을 많이 탐 데이터 엔지니어가 직접 각 프로세스마다 처리 방식을 모두 구현해주어야 함 명세사항이 변경되는 경우엔, 그에 맞춰서 다시 처리 단계(특히 Transform)을 맞춰줘야 함 대신에 솔루션 사용자 입장에서는 맞춰진 프로세스에 따라 편하게 데이터를 처리 및 사용이 가능 |
ELT : Extract, Load, Transform의 약자로 Transform이 일어나는 위치만 ETL과 다른 데이터 파이프라인
ELT는 ETL과 각 단계의 정의는 같다. (Extract, Load, Transform) ELT는 ETL과 달리, 데이터를 일단 적재한 다음에 변환을 수행한다. 일단 데이터를 먼저 올려놓기 때문에, Data Warehouse보다는 Data Lake가 적합하다. Data Lake는 정형/비정형/반정형 데이터 모두 자유롭게 적재가 가능하기 때문에 저장 효율성이 좋다. 단, 처리 속도가 ETL에 비해 느리다. (왜냐면 저장된 이후에 Transform을 제일 마지막에 하기 때문에) 대신에 저장의 유연성과 명세사항에 없던 추후에 사용될지도 모르는 데이터까지 모두 수집이 가능하다. |
ETL에서 ELT로 가는 중이다.
ETL에서는 Data Warehouse를 구성하고, ELT에서는 Data Lake를 구성한다.
이번주부터 파이썬을 활용한 팀프로젝트에 들어가게 되었다.
사실 팀 프로젝트는 학부생 때 많이 해봐서 익숙할 줄 알았는데, 전공이 다른 분들과 하니까 생각지못한 어려움이 많은 것 같다.
이럴 때는 어떻게 대처해야 하는지 아직 잘 모르겠다. 팀플도 계속 해봐야 답이 나오려나..
'패스트캠퍼스 학습일지' 카테고리의 다른 글
[패스트캠퍼스 DA 부트캠프 11기]7주차 학습 (0) | 2023.12.07 |
---|---|
[패스트캠퍼스 DA 부트캠프 11기]6주차 학습 (1) | 2023.11.30 |
[패스트캠퍼스 DA 부트캠프 11기]3주차 학습 (3) | 2023.11.09 |
[패스트캠퍼스 DA 부트캠프 11기]2주차 학습 (1) | 2023.11.03 |
[패스트캠퍼스 DA 부트캠프 11기]1주차 학습 (1) | 2023.10.26 |