1주차
: 총 2시간
데이터 과학의 언어
수업 서론
데이터 과학자는 데이터를 변환하고 시각화하는 능력이 필요하다. 이를 위해서는 관련 프로그래밍 능력과 프레임워크에 대한 이해가 필요하다. 클라우드에 대한 이해도 필요하다.
데이터 과학의 언어
파이썬, R, SQL 은 기본적인 언어이다. 이외에 Scala, Java, C++, Julia 도 유명하다. JS, php, Go, Ruby 도 특별한 능력이 있다. 본인이 풀고자 하는 문제에 따라서 필요한 프로그래밍 언어가 달라진다.
파이썬 서론
파이썬은 매우 유명합니다. 배우기 쉽고, 다큐멘트가 많으며, AI, ML , web 개발 등 여러 기능을 가지고 있으며, 여러 조직에서 사용하고 있습니다. 또한 라이버리가 다양합니다. 데이터 과학자에게는 특히 Pandas, NumPy, SciPy 와 Matplotlib 이 자주 사용됩니다. AI 에 사용되는 라이브러리로는 PyTorch, TensorFlow, Keras 와 Scikit-learn 등이 있습니다. 또한 NLTK 라이브러리를 통해 NLP 작업을 수행할 수 있습니다.
R 언어 서론
오픈 소스인 파이썬과 달리 R 은 오픈 소프트웨어입니다. R 은 통계학자, 수학자, 통계적인 소프트웨어를 만들기 위한 작업 등에 자주 사용됩니다. R 은 학계에서 유명하나 회사에서도 사용합니다. 다수의 패키지가 있고, C++, Java, C, .Net 과 Python 등과 잘 통합됩니다.
SQL 서론
관계형 데이터베이스를 다루기 위한 목적으로 만들어졌습니다. SQL 을 이해하면 db 에서 바로 데이터를 찾아올 수 있습니다.
기타 (프로그래밍) 언어
Scala, Java, C++, Julia 는 전통적인 언어
JS, php, go, rubi, visual basic 는 새로운 언어
Java: object oriented 언어. 빠르고 확장성이 있다. Weka, Java-ML (ml library), Apache MLlib (scalable ml), 과 Deeplearning4j 가 있다. JVM 에서 실행된다.
- ApacheHadoop 도 java 로 만들어진 애플리케이션이다. 클러스터 시스템에서 빅 데이터 애플리케이션을 저장하고 프로세스 할 수 있게 해준다.
Scala: Java 의 단점을 보와주기 위한 목적으로 만들어졌다. JVM 에서 실행된다.
- ApacheSpark. Parallel 업무를 가능하게 해준다. Shark, Mlib, GraphX, and Spark Streaming 등이 있다. Hadoop 보다 속도가 빠르다.
C++: 프로섹스 속도를 높입니다. 고객의 즉각적인 반응을 처리해야 하는 경우에 장점이 있습니다.
- TensorFlow 도 C++ 로 만들어졌는데 파이썬에서 작동하기 때문에 C++ 을 알아야할 필요는 없습니다.
- MongoDB 도 C++ 로 만들어졌습니다.
JavaScript: web development. Node.js 와 기타 서버 사이드의 일들을 처리해줍니다.
- TensorFlow.js: ML 과 딥러닝이 Node.js 에서 작동합니다. brain.js 와 machinelearn.js 라이브러리에 적용되었습니다.
- R-js 는 타입스크립트에서 선형대수가 작동하도록 합니다.
Julia: 수치 계산을 위해 개발되었습니다. C 나 포트란만큼 빠릅니다. 최근에 나왔습니다.
내가 새로 배운 점: 데이터 과학과 관련된 프로그래밍 언어가 다양한데, 어떠한 목적으로 사용되는지 분류를 해서 도움이 되었다.
데이터 과학의 도구(툴)
데이터 과학 도구의 종류
++ Fully Integrated Visual Tools
+ Execution Environments
+ Data Asset Management
Data Management -> Data Integration & Transformation -> Data Visualization -> Model Building (e.g. ML) -> Model Deployment -> Model Monitoring and Assessment
+ Code Asset Management
+ Development Environments
(각각에 대해 하나씩 설명을 해주는데, 나는 내가 보라색으로 하이라이트 해둔 흐름이 도움이 되었다.)
데이터 과학을 위한 오픈 소스 도구 (파트 1)
Data Management: MySQL, PostgreSQL / MongoDB, CouchDB, Cassandra / Hadoop HDFS, CEPH, ElasticSearch
Data Integration & Transformation
- ETL: Extract, Transform, Load
- ELT: Extract, Load, Transform
Transform&Load: ApacheAirflow (AirBnB), Kubeflo, ApacheKafka(LinkedIn, ApachSpark SQL (to compute in clusters), Node-RED
Data Visualization (다음 강의에서 세세하게 다룸)
Model Deployment: (ApacheSpark) PredictionIO, SELDON (including Tensorflow etc.), mleap (spark ML), TensorFlow Service, TensorFlow.Lite, TensorFlow.js
Model Monitoring and Assessment: 새로운 데이터가 들어왔을 때 업데이트 해준다. e.g. ModelDB (support ML Spark)
IBM 관련: AI Fairness 360 Open Source Toolkit (그룹 간 fairness), Adversarial Robustness 360 Toolbox (보안), AI Explainability 360 (블랙박스 설명)
Code Asset Management: git, GitHub, GitLab, Bitbucket
Data Asset Management: Apache Atlas, ODPi Egeria (based on Linux), Kylo
데이터 과학을 위한 오픈 소스 도구 (파트 2)
Development Environments
주피터 (Jupyter): 주피터 노트북은 코드, 코드의 결과, 시각화를 하나의 문서로 문서화한다.
Jupyter lab, Apache Zeppelin, R Studio, Spyder.
Execution Environments
ApacheSpark: 클러스터 컴퓨팅.
ApachFlink: real-time data streams.
Fully Integrated Visual Tools
Data Integratation & Transformation -> Data Visualization -> Model Building 프로세스 전체를 말하는듯하다.
e.g. KNIME (시각화. R/python -> ApacheApark). Orange.
데이터 과학자를 위한 Commercial Tools
Data Management 예: Oracle DB, MS SQL Server, IBM DB2.
Data Integration and Transformation: Informatica, IBM InfoSphere DataStage, IBM Watson Studio Desktop, etc.
Data Visualization (e.g. Dashboard): tableau, etc.
Model Building: SPSS modeler(?), etc.
Model Deployment: IBM SPSS.
Model Monitoring and Assessment: commercial tool (x)
Code Asset Management: commercial tool (x)
Data Asset Management: Informatica, IBM InfoSphere Information Governance Catalog, etc.
Development Environments: e.g. IBM Watson Studio Desktop (combine with Jupyter).
데이터 과학자를 위한 클라우드 기반 도구
전체 사이클을 통합하는 플랫폼.
예: IBM Watson Studio, Azure Machine Learning, etc.
Data Management: AWS Amazon Dynamo DB
Data Integration & Transformation: ETL or ELT. (e.g. Informatica, IBM Data Refinery). Raw data -> transform
Data Visualization: Datameer (cloud-based data visualization), etc.
Model Building: IBM Watson ML, Google Cloud, etc.
Model Deployment: Model building process 와 통합되어 있는 편이다. (e.g. AWS Amazon SageMaker Model Monitor)
내가 새로 배운 점: 데이터 과학자와 관련된 업무 흐름을 이해할 수 있었고, 이러한 통합된 흐름과 관련된 AWS Amazon SageMaker 의 역할을 이해할 수 있었다.
패키지, API, 데이터셋과 모델
데이터 과학을 위한 라이브러리
파이썬 라이브러리는 계산, 시각화, ML/딥러닝 등의 라이브러리가 있다. 계산 라이브러리의 예시는 Pandas 와 NumPy 가 있다. Pandas는 행/열 형태에서 계산해준다. NumPy 는 arrays & matrices. 시각화 라이브러리의 예는 Matplotlib 와 Seaborn 이 있다. ML 라이브러리의 예는 Scikit-learn 와 Keras 가 있다. 딥러닝 라이브러리의 예는 TensorFlow 와 PyTorch 가 있다. ApacheSpark 는 Pandas, NumPy, Scikit-learn 과 유사한 기능이 parallel computing 환경에서 가능하도록 한다. Scala 는 데이터 엔지니어링 뿐만 아니라 데이터 과학에서 사용된다. R 에서도 ggplot2 뿐만 아니라 Keras 와 TensorFlow 의 라이브러리를 사용할 수 있다.
API (Application Programming Interfaces)
API 를 이용해서 다른 소프트웨어 컴포넌트와 상호작용할 수 있다. 예를 들어, python, JS, C++, Java, Go 등의 API를 이용해서 TensorFlow 소프트웨어가 데이터에 적용될 수 있도록 한다. REST API 에서 프로그램은 Client 라 하고, web service 와의 커뮤니케이션을 돕도록 한다. Client 는 HTTP 형태를 통해 request 한다. 이에 웹서비스는 작동하고 이와 관련된 결과를 client 에게 전달한다. 이 과정에서 JSON 형태가 사용된다. Request 의 예로 POST, GET request 가 있다.
데이터셋 - 데이터 과학에 힘을 북돋다.
데이터셋이란 구조화된 데이터의 모음이다. 예를 들어, 관계형 데이터에서 각 행은 관측치를 나타내고 열은 변수를 나타낸다. 이외에도 네트워크형 형태, 이미지나 오디오 같은 데이터 형태도 있습니다. 기존의 데이터는 개인정보와 같은 기밀의 데이터입니다. 최근에 들어 공개된 데이터들이 많아지고 있습니다. Community Data License Agreement 는 데이터 공유를 쉽게 합니다.
기업 데이터의 공유 - 데이터 자산
Data Asset eXchange 는 IBM 이 만든 데이터셋 큐레이션입니다.
머신 러닝 모델
머신러닝은 데이터의 패턴을 찾아 모델을 만들고, 이를 바탕으로 예측합니다. 머신 러닝의 종류로는 supervised learning, unsupervised learning 과 reinforcement learning 이 있습니다. Supervised learning 은 회귀식이나 분류(classification) 이 있습니다. Unsupervised learning 은 사람의 개입 없이 패턴을 파악하는데 있습니다. 예를 들어, clustering 이나 anomaly detection 이 있습니다. Reinforcement learning 은 인간의 배우는 과정과 유사합니다. Trial-error 의 과정을 통해서 배웁니다. 딥러닝은 특별한 머신 러닝으로 인간의 뇌가 작동하는 방법을 따라합니다. NLP, 이미지/비디오 분석 등이 있습니다. TensorFlow, PyTorch 나 Keras 의 프로그래밍을 이용합니다. 유명한 모델을 따라할 수 있습니다.
레이블된 데이터를 준비합니다 -> 모델을 선택합니다 -> 모델을 훈련합니다 (이를 반복합니다) -> 모델을 deploy 합니다 -> 모델을 사용합니다.
The Model Asset Exchange
IBM. Pre-trained model.
Explore Data Sets and Models
IBM Developer.
Exercise 1. Run datasets in notebook -> GitHub 링크로 이동한다.
Exercise 2. Codepan 에서 실행하라고 설명에는 되어 있는데, 링크를 타고 들어가면 나오지 않는다.
내가 새로 배운 점: 데이터 과학의 라이브러리를 분류하는 것이 도움이 되었다. 평소에 Job Description 에 나오는 키워드 들인데, 어떤 목적으로 사용하는지 크게 생각해보지는 않았었는데 이번 기회에 개념 정리를 했다. API 개념이 소프트웨어 개발 뿐만 아니라 데이터 과학에서도 적용될 수 있구나 싶다. 그리고, 이렇게 Coursera 같은 강좌가 잘 되어 있으면, 데이터 과학에 필요한 스킬을 갖춘 사람들이 많아지겠다는 생각도 들었다.
'머신 러닝' 카테고리의 다른 글
[데이터과학 코세라 강의] 데이터 과학 방법론 (0) | 2022.05.19 |
---|---|
[데이터과학 코세라 강의] (2주차) 데이터 과학을 위한 툴(장비) (0) | 2022.05.17 |
[데이터과학 코세라 강의] (2주차) 데이터 과학이란 무엇인가? (0) | 2022.05.16 |
[데이터과학 코세라 강의] (1주차) 데이터 과학이란 무엇인가? (0) | 2022.05.16 |
[머신러닝 강의] 코세라 강의 로드맵 (0) | 2022.05.15 |