공공 빅데이터 청년 인턴십/Python

판다스로 배우는 데이터 분석 입문

연디연디 2021. 6. 25. 07:05
728x90

1. 데이터 사이언스 소개 & Python 기초
- 데이터 사이언스 관련 직군
◆ Data Scientist : 데이터에 대한 가설을 설정하고, 데이터를 분석하고, 분석한 데이터로 파악한 특징을 시각화해서 다른 사람들과 공유
요구 능력 - 비즈니스에 대한 이해력(도메인 지식), 데이터 분석 능력, 데이터 시각화 능력
◆ Data Engineer : Data Science 프로젝트 진행을 위한 데이터 수집 및 전처리, 학습된 모델의 안정적인 배포를 위한 인프라 등을 개발
요구 능력 - 데이터 크롤링 및 정제를 위한 프로그래밍 능력, 모델 배포 및 API 구축을 위한 인프라 구성을 위한 엔지니어링 능력, Database 및 SQL 할용능력
◆ Machine Learning Engineer : Data Science 프로젝트를 위한 새로운 머신러닝 모델을 개발
요구 능력 - 최신 논문을 읽을 수 있는 능력, 머신러닝 프레임워크를 이용한 모델 구현을 위한 프로그래밍 능력, 모델 성능 측정 및 개선 능력

- 데이터 분석에서 가장 많이 사용되는 프로그래밍 언어 : Python, R

- 프로그래밍을 하기 위해서 학습해야 하는 부분
1. 프로그래밍 언어에 대한 문법
2. 자료구조/알고리즘
3. 로직 작성 능력(내가 원하는 기능을 코드로 작성하는 능력)

- 데이터 분석을 위한 대표 라이브러리들
◆ Pandas, Numpy, Scikit-learn, Matplotlib, Seaboarn

 

2. 데이터 분석을 위한 Python & 넘파이(Numpy)
- 파이썬 vs 엑셀
: 파이썬은 대용량 처리 가능, 복잡한 기능을 쉽게, 다른 용도(웹,통계,머신러닝,서버개발,엑셀연동,기계학습,이미지)로 확장 용이 장점 있음

 

3. 판다스(Pandas)
판다스 : series(1차원), dataframe(2차원) 행과 열을 가진 데이터

 

4. 데이터 시각화를 위한 Matplotlib, Seaborn
- 다양한 Python 시각화 관련 자료가 정리되어 있는 사이트
http://python-graph-gallery.com/
◆ Matplotlib
- 그래프를 그리거나, 분포를 보여주는 등 시각화를 위한 파이썬 패키지
- 연구용으로 많이 쓰인 MATLAB의 코드 스타일을 모방
- 스위스 맥가이버 칼과 같이 다재다능하나, 사용하기는 약간 불편함

◆ Seaborn
- matplotlib을 감싸서 만든, 보다 쉬운 파이썬 시각화 패키지
- 다양하고 화려한 그래프를, matplotlib보다 더 쉬운 코드로 그릴 수 있음
- matplotlib의 명령어를 사용할 수 있음

 

5. Kaggle Titanic 사고 데이터로 시작하는 데이터 분석
◆ Kaggle 소개 : "세계 최대의 데이터 과학자 커뮤니티“
- Data Scientist를 위한 데이터 분석 및 예측 경진대회 플랫폼
- 기업 및 단체에서 데이터와 해결 과제를 등록하면, Kaggle의 Data Scientist들이 문제를 해결하는 데이터 분석 및 모델을 개발하고 경쟁

◆ 데이터 분석 프로세스
수집(Obtain) > 정제(Scrub) > 탐색(Explore) > 모델(Model) > 해석(Interpret)

◆ 데이터 탐색하기 : EDA(Exploratory Data Analysis)
- EDA(탐색적 데이터 분석)은 본격적인 데이터 분석의 첫 번째 단계로, 데이터의 모양과 크기, 분포, 빈 값 등 데이터가 어떠한 형태인지 관찰하고 파악하는 단계
- 데이터로 실험을 하기 전, 데이터를 보다 잘 이해하기 위한 단계


◆ 1912년 타이타닉 사고 데이터
- 타이타닉 사고의 사망자, 생존자를 예측하는 Competiton으로, 탐승객의 정보를 이용하여 예측
- 891명의 승객에 대한 데이터. 생존여부, 좌석 등급, 성별, 나이, 일행, 자녀, 운임 등의 feature
- EDA 목표
1. 주어진 각 feature들의 분포 살펴보기, 생존자/사망자 별로 데이터 분리하여 살펴보기
2. 어떤 정보를 통해 생존율을 예측할 수 있을지, 가설을 세우고 실제 그래프로 검증

 

6. 예측 모델링을 위한 scikit-learn & 머신러닝 기초
◆ 머신러닝
- 머신러닝이란 명시적인 프로그래밍 없이 데이터를 이용해서 예측 또는 분류를 수행하는 알고리즘을 구현하는 기법

(=기계학습)
- 데이터 > 머신러닝 모델 > 예측 or 분류
◆ 머신러닝이 필요한 이유
- 인간이 정확히 하나하나 로직을 지정해주기 어려운 복잡한 문제를 데이터에 기반한 학습을 통해서 해결 가능
- ex) 어떤 사용자에게 어떤 광고를 보여주는 것이 최적의 광고 배분 전략일까?
- 머신러닝 알고리즘을 사용할 때 가장 중요한 부분은 머신러닝 모델이 잘 학습할 수 있도록 적절한 특징을 설정해주는 것
◆ 예측 모델의 필요성
- 데이터 분석을 통한 정교한 예측 모델을 갖고 있을 경우, 중요한 비즈니스적 의사결정을 안정적이고 계획적으로 수행 가능
- ex1) 다음 달에 휴대폰 판매량은 얼마나 될까? -> 생산계획 및 재고관리 전략을 수립 가능
- ex2) 광고비를 100만원 더 집행하면 얼마나 많은 유저를 추가적으로 획득할 수 있을까>? -> 목표로 하는 유저 획득 수에 따른 광고비 집행 전략을 세울 수 있음
◆ 지도 학습(Supervised Learning)
- 머신러닝 모델은 일반적으로 지도학습이라는 방법론 사용
- 지도 학습 방법론을 사용하기 위해서는 트레이닝 데이터의 구성이 (인풋 데이터, 데이터에 대한 정답) 쌍으로 구성되어 있어야만 함. 즉, 지도 학습은 정답을 보여주면서 학습시키는 머신러닝 방법론
- 이때 보통 인풋 데이터를 x, 데이터에 대한 정답을 y라고 부름
- 즉, 데이터는 (x,y) 쌍으로 구성
- 예를 들어, 우리가 키를 기반으로 몸무게를 예측하는 모델을 만드는 경우를 생각해보면 트레이닝 데이터는 여러 사람에게서 수집한 키와 몸무게 데이터가 됨
◆ Training Data, Test data
- 이런식으로 (x,y)로 구성된 데이터를 학습용 데이터(Training Data)라고 부름. 머신러닝 모델을 사용하는 경우 다음의 2가지 과정을 거침
1. 학습용 데이터로 머신러닝 모델을 학습시킴
2. 학습된 머신러닝 모델의 성능을 트레이닝 데이터에 포함되어 있지 않고 따로 빼놓은 테스트 데이터(Test Data)로 측정
(175,73)
(163,51) => 머신러닝 모델 학습
(179,82)
(152,46)
여러 사람의 키와 몸무게 데이터(x,y)
178 => 학습된 머신러닝 모델에 의한 예측 => 76 (실제 정답 y = 78)
◆ 트레이닝 데이터, 테스트 데이터 나누기 (split)
- 일반적으로 데이터의 80% 정도는 트레이닝 데이터, 20% 정도는 테스트 데이터로 나눠서 사용
◆ Validation Data(검증용 데이터)
- 더 나아가서 전체 데이터를 트레이닝, 검증용, 테스트 데이터로 나누기도 함
- 검증용 데이터는 트레이닝 과정에서 학습에 사용하지는 않지만 중간중간 테스트 하는데 사용해서 학습하고 있는 모델이 오버피팅에 빠지지 않았는지 체크하는데 사용
- 즉, 직관적으로 설명하면 검증용 데이터는 트레이닝 과정 중간에 사용하는 테스트 데이터로 볼 수 있음
◆ Overfitting, Underfitting
- 처음에는 트레이닝 에러와 검증 에러가 모두 작아지지만 일정 횟수 이상 반복할 경우 트레이닝 에러는 작아지지만 검증 에러는 커지는 오버피팅에 빠지게 됨
- 따라서 트레이닝 에러는 작아지지만 검증 에러는 커지는 지점에서 업데이터를 중지하면 최적의 파라미터를 얻을 수 있음

 

728x90