데이터 과학의 로드맵은 다음과 같다.
사업 면에서 어떤 문제가 있는지 파악하고, 어떻게 공학적으로 풀 수 있는지에 대해 정의한다.
규모가 큰 프로젝트라면 요구사항과 목표를 문서화해야 한다!
요구사항 문서에 들어가야 할 내용
해결해야 할 문제들이 모호한 경우가 있다
- 어떤 문제가 있고
- 여러 문제 중 어떤것이 가장 중요하며
- 실제로 어느정도 해결이 가능한지
차후에 문서화한 프로젝트 요구사항을 수정하기도 한다.
실제로 데이터를 들여다 보며 문제 해결에 필요한 정보가 있는지, 어떻게 활용할지 알아낸다.
데이터 종류와 관계 없이 확인해야 하는 보편적 질문
1. 데이터 셋의 크기는?
2. 주어진 데이터가 일부인지, 전체인지
3. 이 데이터가 모집단을 잘 대표하는지?
4. 이상치나 잡음이 심하지 않은가?
5. 원본 데이터가 아닌 임의 가공 데이터가 포함되어 있는가?
6. 데이터별 식별자가 존재하는가?
7. 식별자가 잘 설정되어 있는가? (중복이 있는가?)
8. 두 데이터를 합쳐야 하는 경우 같은 종류의 데이터 셋인가?
9. 누락된 데이터 표본이 있다면 왜 누락되었는가?
여기서 가장 중요한 문제는 "이 데이터로 주어진 문제를 풀 수 있는가?"
처음부터 주어진 적절한 데이터가 있는지를 찾아봐야 한다.
원본 데이터를 분석에 사용하기 좋은 형태로 바꾸자!
-> 데이터 전처리는 통계학자와 구별되는 데이터 사이언티스트의 고유 업무!
전용 데이터베이스를 사용해 필요한 값을 저장한다.
데이터의 규모가 크고 복잡할수록 전처리 과정도 복잡해진다.
-> 따라서 깔끔하고 효율적인 프로그램을 구현하는 능력이 중요하다!
- 문자열 데이터는 편집기를 써서 직접 살펴본다
- 특정 도구를 사용하는 경우 잘 작동하는지 확인한다 (csv파일이 잘 열리는지, 누락은 없는지)
- 히스토그램이나 산포도를 그려서 정말 말이 되는 분포인지 확인한다
- 이미 정답을 알고있는 문제를 푸는 코드를 짜서 그 결과가 정답과 일치하는지 확인한다.
시각화, 다양한 변환을 통해 데이터를 확인한다.
특징값을 추출하는 과정은 날것 그대로의 데이터를 가공해 그 값을 표에 저장하는 일
각 행이 각 데이터 표본 하나, 열마다 다른 종류의 데이터 저장
예를 들어 이미지, 웹페이지, 음성은 각기 다른 특성을 가지고 있어 특징값의 의미와 추출 방법이 다르다.
또는 스스로 특징값을 만들어야 하는 경우도 있다.
머신러닝 모델을 사용해 분석하자!
고객이 사람이라면 -> 슬라이드, 보고서
고객이 컴퓨터라면 -> 코드, 보고서
코드 배포 시 필요한 결과물
1. 결과 코드
2. 코드 실행 시 필요한 도움말 문서 (readme/주석)
3. 결과 코드 검증 위한 시험 코드
- 데이터에 대한 직관이 생길때까지 산포도, 히스토그램을 그려보고 간단한 특징값을 사용해 작동하는지 확인한다.
- 현 데이터로는 애초에 풀 수 없는 문제일수도 있다
- 모든 실험을 명령어 하나로 실행할 수 있도록 분석을 자동화하는 스크립트 만들기
- 단계별로 코드를 나누고 내부 단계에서도 여러 기능을 모듈화하라