데이터(Data)란?
: 일상에서 관찰할 수 있는 '모든 것'
데이터 분석(Data Analysis)이란?
: 데이터로부터 유의미한 정보를 도출하여, 이로부터 조직 혹은 개인이 의사결정을 내리는 데 도움을 주는 것
< 데이터 분석의 시작은 Digitization >
즉, 일상에서 관찰할 수 있는 모든 것(여기에는 아날로그, 물리적인 것들이 포함된다)을 데이터화하여 기록하고 수집하는 것이 데이터 분석의 첫 단계이다.
< 데이터 분석의 목적 >
조직과 개인의 가치를 향상시키는 것
✷ 버티컬 검색 엔진
: 특정한 도메인에 최적화된 검색 엔진
✷ 엔젤 투자
: 스타트업의 초기 상태에 자금, 지식, 네트워크 등을 투자하여 기업의 성장을 돕는 것
데이터 문해력(Data Literacy)이란?
: 데이터를 읽고, 쓸 줄 아는 활용 능력
즉, 데이터로부터 유의미한 정보를 도출할 수 있는 능력
데이터 문해력의 시작은 좋은 데이터를 활용하는 것이다!
► ex. [데이터] 도로, 사이렌소리, 많은 사람들 → [유의미한 정보] 도로에서 사고가 발생했을 것이다.
데이터를 활용하는 방법
데이터를 활용하는 방법에는 크게 두 가지가 있다.
1. 데이터를 기반으로 의사결정을 내림 = Decision Science(데이터 분석가가 하는 일)
2. 데이터를 기반으로 서비스 or 제품 개선 = Product Science(데이터 과학자가 하는 일)
빅데이터
< 빅데이터 기술은 어떻게 발전하게 되었을까? >
1. Digitization의 용이함 + 증가
클라우드, 인공지능 등과 같은 기술의 발전에 의해서 점점 더 많은 오프라인 서비스, 제품 등이 온라인화되는 추세가 만들어지고 있다.
오프라인 환경에서 발생하는 자료들도 온라인 환경에서 데이터화 되면서 Digitization이 점점 더 쉬워지고 증가한다는 뜻이다.
2. 방대한 데이터를 처리할 수 있는 인프라가 세워짐
쉬워진 Digitization으로 인해 쉴 새 없이 엄청난 규모와 양의 데이터들이 생겨나게 되었다.
검색엔진 사용자들이 어떠한 검색어로 검색을 하고 어떤 페이지를 클릭하는지 이 흔적들이 또 하나의 데이터가 된다.
모델 학습에 쓰이는 훈련 데이터는 한 사람 혹은 하나의 기업이 만든 것이 아니라, 지구촌 모두가 참여해서 만든 초 거대 데이터이다.
이렇게 거대해진 데이터들을 처리할 수 있는 기반이 만들어졌다.
그렇게 세워진 인프라가 바로 '분산 처리 시스템'이다.
< 분산 처리 시스템 >
: 빅데이터를 처리할 수 있는 시스템
분산처리 시스템이 만들어지기 전에는 각각의 컴퓨터가 개별적으로 작업했다.
이 경우, 하나의 컴퓨터가 처리할 수 있는 데이터의 양은 한정되어있는데 작업해야 할 양이 증가하면 그만큼 들어가는 시간과 노력이 상당해진다.
분산 처리 시스템은 개별 컴퓨터가 부담해야 하는 엄청난 작업량과 시간을 줄여준다.
엄청난 양의 데이터를 수 천대의 컴퓨터에 나누어서 저장하고, 각 컴퓨터가 맡은 작업을 병렬로 처리하면서 필요에 맞게 분배할 수 있는 일들이 가능해졌다.
분산 처리 시스템인 하둡(Hadoop)의 경우, 수 천대의 컴퓨터가 마치 하나의 컴퓨터처럼 행동하게 된다.
클라우드(클라우드 컴퓨팅; Cloud Computing)
사실 이러한 일들을 가능케 하기 위해 수 천대의 컴퓨터 혹은 서버를 설치하는 것은 쉬운 일이 아니다.
여기서 '클라우드(클라우드 컴퓨팅)' 라는 기술이 등장하게 된다.
대용량 데이터 처리 및 연산에 필요한 수 천대의 컴퓨터 혹은 서버를 사용자가 직접 구매, 설치, 운영하는 것이 아니라,
클라우드 업체가 이러한 일련의 작업들을 대행해주는 대신, 사용자는 자신이 사용하는 부분만큼 비용을 지불하는 형태이다.
이러한 클라우드 컴퓨팅 덕분에 '인프라화'가 쉬워졌다.
클라우드가 나오기 이전에 컴퓨터,서버를 사용하고 싶은 경우, 개인이 컴퓨터를 구매한 후 설치해서 그 위에 소프트웨어를 설치한 후 사용할 수 있었다. -> 시간/비용이 굉장히 많이 든다
peak time 기준으로 트래픽이 가장 많이 몰리는 시점을 기준으로 모든 서버들이 준비가 되어야 한다. (예. 연초, 블랙프라이데이)
= 대부분의 시간에는 많은 서버들이 사실상 놀고 있음(비상시를 대비해서 있는 것과 같다)
따라서 피크타임 기준으로 자원 관리가 필요하다.
기회비용 낭비
* 기회비용 : 하루라도 빨리 서버를 up&learning 시킬 수 잇다면 그만큼 더많은 사용자들을 처리하고 새로운 기능을 처리할 수 있는데 이게 밀리면 그만큼 기회비용을 날리는 것과 같음
이러한 과정을 대행해주는 업체
그리고 나는 그 업체를 이용하고 빌린만큼 돈을 지불
데이터 조직
< 데이터 조직의 목표 >
: 신뢰할 수 있는 품질의 데이터를 기반으로 부가 가치 생성
데이터 팀은 기업의 매출에 직접적인 영향을 미치는 조직이 아니라, 기업이 이익을 낼 수 있는 방향성을 갖도록 지원해주는 '서포트 조직'이라고 볼 수 있다.
때문에 데이터 조직은 팀의 존재 가치에 대한 질문을 끊임없이 던져야 하며, 실용적인 사고력이 밑받침 되어야 한다.
< 데이터 조직이 부가 가치를 만드는 방법>
잊지 말아야 할 것은 가치 생성의 기본은 '믿을 수 있는 좋은 품질의 데이터'를 기반으로 하는 것이다!
1. 결정을 과학적으로 내린다. (Decision Science)
데이터 분석가(Data Analyst)의 역할
결정을 과학적으로 내리는 것에는 두 가지 방식이 있는데, 두 방식 모두 '데이터'를 바탕으로 결정하는 것이지만 약간의 차이가 있다.
1) Data Driven Decisions
: 분석가의 생각이 중심이 되기 보다는 데이터가 하라는 대로 행동하는 방식
2) Data Informed Decisions
: 분석가가 나아가고자 하는 방향(가설)이 뚜렷하게 있으며 데이터는 참고용으로만 사용하며 행동하는 방식
Data Driven Decisions vs. Data Informed Decisions
► 데이터는 과거의 기록이다.
데이터를 보고 결정을 내리는 순간에는 이미 그 데이터 조차도 과거의 상황이 되어버린다.
즉, 현재 지금 시점에서도 그 데이터가 유효한지는 아무도 모른다.
그래서 사실 데이터 분석가라면 Data Informed Decisions를 추구하는 것이 효과적일 수 있다.
► 무엇이 좋고 나쁘다 라고 단정지어 말할 수는 없지만, 쓰임에 따라 두 가지 방식을 적절히 적용하면 된다.
- 과거의 기록이 있고 이를 최적화 해서 무엇인가를 개선해나가려 한다면 → Data Driven Decisions
- 새로운 혁신을 만들어내거나 이전에 겪어보지 못했던 새로운 상황에 대처하려 한다면 → Data Informed Decisions
시작은 좋은 지표를 정의하는 것(ex. KPI) -> 대시보드에 시각화 -> 리포트 생성
2. 제품 or 서비스의 기능을 개선한다. (Product Science)
데이터 과학자(Data Scientist)의 역할
- (서비스 개선) 개인화를 바탕으로 하는 '추천' 및 '검색 기능' 등을 제공하여 사용자의 서비스 경험을 개선
- (공정 최적화) 제품을 생산하는데 있어 오류를 최소화하거나 고장을 예측하여 공정 프로세스를 최적화
데이터 흐름(Data Flow)
1. 데이터의 발생
서비스에서 직접 발생되는 데이터와 서드 파티(Third Party)로부터 간접 발생되는 데이터가 있다.
2. 데이터 인프라 구축
데이터 엔지니어(Data Engineer)의 역할
가장 기본은 신뢰할 수 있는 좋은 품질의 데이터를 기반으로 하는 것!
발생한 데이터를 여러 소스에서 수집하여 정제하고 특정 공간에 저장하면서 데이터 인프라가 구성된다.
데이터 인프라를 구성하는 요소는 크게 두 가지가 있다.
< 데이터 인프라를 구성하는 요소 >
1) 데이터 웨어하우스(Data Warehouse)
: 분석을 위한 데이터베이스로, 수집된 데이터들이 저장되는 곳
- 관계형 데이터 베이스(=데이터가 테이블 형태로 적재됨 → 이 데이터를 조작하기 위해서 가장 많이 사용되는 방법이 SQL)형태
2) 데이터 파이프라인(Data Pipeline)
: 다양한 내외부 데이터 소스에서 데이터를 수집 및 정제한 후, 데이터 웨어하우스에 적재시키는 프로세스
ETL (Extract/Transform/Load)
: 어떤 데이터 소스가 있을때 데이터를 추출하고, 추출된 데이터를 원하는 형태로 변환하고, 변환된 데이터를 데이터 웨어하우스에 로드한다.
이러한 일들을 하는 사람이 데이터 엔지니어
데이터 엔지니어는 소프트웨어 엔지니어이기 때문에 코딩 능력이 필수. 가장 많이 사용되는 언어 : python
ETL을 얼마나 빠르게 작성하고 관리하는지가 관건 <- airflow 사용
데이터가 급격하게 늘어나기 때문에 python pandas라이브러리를 통해 transform한다. 데이터가 커지면 pandas는 컴퓨터 한대의 메모리를 기준으로 처리할 수 있는 데이터의 크기의 한계가 정해지기 때문에 처리가 불가능해짐 -> 빅데이터 분산처리 기술(Spark)
** 프로덕션용 데이터 베이스
: 우리 회사가 모바일이나 웹을 통해서 사용되는 온라인 서비스라 할떄, 그때 사용되는 사용자 정보, 상품 정보, 구매 정보 등이 필요한다. 이러한 정보를 Production DB라 한다.
즉, 회사의 서비스를 운영하는데 필요한 최소한의 정보가 기록된 데이터베이스
프로덕션 데이터베이스에 사용되는 옵션 : ricico(?), cost database
** 데이터 레이크 Data Lake
= 훨씬 더 규모가 큰 데이터 웨어하우스 . 하드디스크와 같은 스토리지
보통 데이터 웨어하우스의 데이터들은 데이터 당 비용이 비쌈. 그 중에서도 어떤 데이터들은 어떻게 사용할지 용도는 불분명하지만 데이터의 크기는 매우 큰 것들이 있다.(ex. 이벤트 로그) 이러한 데이터를 모두 데이터 웨어하우스에 넣기엔 돈이 너무 많이 듦 -> 이러한 데이터를 데이터 레이크에 저장. 경제성 측면에서 효율적이다.
3. 데이터 분석
데이터 엔지니어들이 낸 결과물을 바탕으로 데이터 분석가들이 결정과학 팀을 구성하여,
기업의 의사결정권자들이 데이터에 기반해서 결정을 용이하게 할 수 있도록 해준다. => 데이터분석
** 지표정의, 시각화, 리포트 생성이 핵심
데이터 웨어하우스에 ETL로 적재된 테이블들을 사용하기 쉽게 정제된 형태로 조인해서 새로운 테이블을 또 만들고 이 테이블로 반복해서 새로운 테이블을 가지고 데이터 분석을 하는데 이러한과정을 ELT라한다.
ELT를 할 때 가장 많이 사용되는 툴 : DBT
** KPI
회사 입장에서 봤을때 가장 중요한 지표
명확한 정의가 중요함
개수는 적을수록 좋다.(서로 상충하는 KPI가 있다면 잘 선택하는 것이 좋다)
잘 정의된 KPI는 OKR과 같은 목표 설정 프레임워크에서 중요한 포인트가 된다.
OKR : 회사나 조직이 계획을 할떄, 어떤 것을 할 것이고 어떻게 끝내야 성공/실패 여부를 결정지을 수 있을지 쉽고 체계적으로 만들 수 있게 해주는 목표 설정 프레임워크
** 시각화 대시보드
3A가 있어야 좋다(쉽게볼수있느냐/지표를통해우리의상황을판단할수있느냐/거기에맞게취햐애할액션의방향성을정할수잇느냐)
시간의 흐름과 함께 보여준다.
4. 데이터 과학 적용
제품이나 서비스의 품질, 기능을 개선하기 위해서 데이터를 사용한다. 이때 보통 머신러닝과 같은 방법론을 사용하게 된다. => 데이터과학자
데이터를 기반으로한 머신러닝 모델을 만들어서 추천, 검색, 공정과정의 최적화로 비용감축 등의 서비스/제품/시스템 개선을 한다
이러한 과정에서 더많은 데이터가 생성되고 다시 사용되면서 선순환 구조가 만들어진다.
데이터 조직 구성원
1. Data Engineer
ETL을 구현하는데 기본이되는 오픈소스 프레임워크 Airflow
Airflow, data warehouse와 같은 시스템을 관리해야하는데, 이것들이 대부분 클라우드 위에서 운영되기 때문에 클라우드 지식, 클라우드 서버 기능도 알고있어야 한다.
데이터 규모가 커지면 빅데이터 분산 처리 기술에 대해 알고있어야 함
더 커지면 컨테이너 관련 기술에 대해서 알고잇어야 함
2. Data Analyst
데이터 분석가가 사용하는 것들
지표
데이터 크기에 따라서 어떤 2개의 데이터를 비교할때 둘 간으 ㅣ차이가 통계적으로 유의미한지 아닌지 판단 -> 통계지식
(프로덕트 쪽에서 일하는 분석가라면) 가설을 기반으로 새로운 기능을 제안하는 사람들과 일을 해야할 것이고, 이 경우 새로운 기능이 의미잇는 지표에서 의미있는 정도로 계산을 만들어내는지 확인하는 시험 -> A/B test
BI 툴 : 대쉬보드같은 시각화툴
데이터모델링 : 새로운 데이터를 만들어내고 이 데이터에는 어떤 필드가 있는지 정의하는 것
*데이터 리니지 : x라는 테이블이 있을때, x라는 테이블을 만들기 위해서 사용된 다른테이블이 무엇이고 해당 테이블의 어떤 필드가 사용되는지 한눈에 볼 수 있는 것 => 중요한 테이블을 중심으로 분석하는게 중요
** A/B test (온라인 테스트임)
A(control)는 기존 기능만 주고, B(test)에는 기존기능 + 새로운 기능을 추가한 후 각각을 테스트한다음,
실제 사용자들에게 노출시켜서 사용하도록 한 후, 기존 기능보다 좋은 것이 맞는지 아닌지 판단
둘 간의 차이(통계적 차이)를 특정 지표(convergion rate 등등) 기준으로 파악하는 것
3. Data Scientist
머신러닝 전반에 걸친 end-to-end process를 관리해주는 툴 : ML 개발 프레임워크
머신러닝은 기본적으로 블랙박스라서 왜 동작하는지 이해하지 못한채로 동작하는 경우가 많다. 이것은 어떤 응용분야에서는 큰 문제가 되기도 함. 그냥 예측만 할 뿐. -> 의료분야에서는 문제가 될 수도 있음 -> 모델의 동작에 대해서 설명할 줄 알아야 한다.
머신러닝 모델링 사이클도 워터폴이아니라 애자일하게 바뀌고 있음
4. ML engineer
: 데이터 과학자와 데이터 엔지니어의 역할을 동시에 수행
5. MLOps engineer
: 머신러닝 모델을 생성하고, 해당 모델에 대한 테스트를 배포 및 관리하는 역할을 수행
모델의 개발은 시작일뿐 이걸 빠르게 배포하고 운영하는것이 중요 ->MLOPs
6. Analytics Engineer
: ETL로 가져온 데이터들을 모아서 사용하기 쉽게 새로운 테이블을 만드는 ELT를 할때 DBT를 사용하는데 이러한 프로세스를 수행하는 엔지니어
7. Privacy engineer
: 시스템을 디자인할때 처음부터 개인정보와 같은 민감한 정보를 관리할 것인지 초기단계부터 끼어들어서 컨설팅과 같은 역할을 수행하는 엔지니어
- 매우 유망하고 중요한 역할로 대두되고 있으며, 구글에서 처음 나온 직군이다.
SQL : 구조화된 데이터를 다루는것에 있어서 기본이 되는 툴
데이터 관리의 중요성
GDPR을 기점으로 개인에게 어떤 권리를 주고 잇는가
- the right to know : 특정 회사가 나에 대해서 얼마나 알고잇는지 알 권리
- the right to delete : 그런 정보를 삭제해달라 요청
- the right to opt-out : 개인의 정보를 활용하지 않도록 요구
the right to non-discrimination : 내 정보를 이용해서 나를 차별하지 않을 권리
데이터를 제대로 관리하는 프로세스가 필요 -> 데이터 거버넌스
** 데이터거버넌스 : 데이터의 잘못된 사용으로 인한 패널티가 있기 때문에 이를 잘 관리할 수 있는 프로세스가 필요
데이터 일을 할때 데이터의 교훈
클라우드 위에서 구축할건지 직접할건지
보통은 배치형태에서 실시간으로