< 7주차 데이터 분석 과정 학습 및 시각화 실습 (1) >
1. 데이터 분석을 해야하는 이유
FAANG(Facebook, Apple, Amazon, Netflix, Google) 중 애플을 제외한 모든 기업은 제조업이 아닌 서비스 기업임
-> 이들은 도대체 무엇을 판매하여서 돈을 벌었을까?
==> 데이터를 이용한 가치!
* 아마존: 데이터 분석을 이용한 예측배송 서비스
구글, 페이스북: 데이터 분석을 이용한 온라인 광고 서비스
넷플릭스: 데이터 분석을 이용한 콘텐츠 추천 서비스
데이터 분석이란?
- 데이터를 정리, 변환, 조작, 검사를 하여 인사이트를 만들어내는 작업
- 데이터 분석으로 무엇을 할 수 있는가? 왜 해야하는가?
- 의사결정의 판단 기준이 주관적인 직감에서 객관적인 데이터로!
=> 주어진 데이터로 문제를 해결할 수 있을지 없을지 가늠하는 것도 데이터 분석이다!
==> 단순한 분석보다는 어떻게 문제를 해결할지에 대한 고민이 중요
2. 데이터 분석 프로세스
1) 문제 정의
: 풀고자하는 문제가 명확하지 않으면 데이터 분석은 무용지물이 된다.
- 큰 문제를 작은 단위의 문제들로 나눈 후
각각의 작은 문제들에 대해서 여러 가설을 세운 후
데이터 분석을 통해 가설을 검증하고 결론을 도출하거나 피드백을 반영함.
# 궁극적으로 해결하고자 하는 문제가 무엇인가
# 해당 문제를 일으키는 원인이 무엇인가
# 상황을 판단하는 지표나 기준이 무엇인가
2) 데이터 수집
: 검증해보고자 하는 가설을 해결해줄 데이터를 수집
a) 가설검증에 필요한 데이터가 존재하는가?
b) 어떤 종류의 데이터가 필요한가?
-> 데이터로부터 얻도자 하는 정보가 무엇인지 명확하게 해야 필요한 데이터만 모을 수 있음
c) 얻고자 하는 데이터의 지표가 명확한가?
-> 적절해보이는 데이터라도 지표가 부적절하면 가설 검증 및 결론 도출 시 오류를 범할 수 있음
3) 데이터 전처리
- 데이터 추출, 필터링, 그룹핑, 조인 등(SQL 및 DB)
: 데이터 분석을 위한 기본적인 테이블을 만드는 단계
테이블과 칼럼의 명칭, 처리/집계 기준, 조인시 데이터 증식 방지
- 이상치 제거, 분포 변환, 표준화, 카테고리화, 차원 축소 등(Python, R)
: 수집한 데이터를 데이터 분석에 용이한 형태로 만드는 과정
4) 데이터 분석
- 탐색적 데이터 분석(EDA)
: 그룹별 평균, 합 등 기술적 통계치 확인
: 분포 확인
: 변수 간 관계 및 영향력 파악
: 데이터 시각화
- 모델링(머신러닝, 딥러닝)
: Classification (categorical label)
: Regression (numerical label)
: 클러스터링 (비지도학습)
5) 리포팅 / 피드백
- 내용의 초점은 데이터 분석가가 아닌 상대방
: 상대가 이해할 수 있는 언어 사용, 목적 상기 및 재확인
- 적절한 시각화 방법 활용
: 원그래프보다는 막대 그래프
: x, y축 및 단위 주의
: 시계열은 라인이나 실선으로 표현
: 분포는 히스토그램이나 박스플롯
: 변수간 관계는 산점도
3. 데이터 분석 툴 소개 (Google Colab)
: 클라우드 기반의 Jupyter 노트북 개발 환경
- 웹에서 텍스트와 프로그램 코드를 자유롭게 작성할 수 있는 온라인 텍스트 에디터
- CPU와 램을 제공해주기 때문에 컴퓨터 성능과 상관없이 프로그래밍 가능
- 파일을 노트북(.ipynb)이라고 부르며, 코드를 입력하는 곳은 코드 셀이라고 한다.
4. 정규화와 데이터 스케일링
정규화가 필요한 이유
- 데이터에서 하나의 instance(sample)는 그것이 가진 여러 속성값(feature)들을 이용해 표현 가능
* feature들간의 크기 및 단위가 들쭉날쭉 하거나 가지는 값의 범위가 크게 다른 경우
or 이상치 문제가 심각한 경우
데이터 분석이 이상해질 수 있음(모델이 데이터를 이상하게 해석할 우려 발생)
-> 정규화와 스케일링을 통해 feature 들이 가지는 값의 범위를 일정하게 맞춰주는 과정 필요
정규화(Normalization)
: 여러가지 값들(feature)이 가지는 범위의 차이를 왜곡하지 않으면서도 범위를 맞추는 것
1) Min-Max normalization
: 모든 feature값이 [0,1] 사이에 위치하도록 scaling하는 기법
분모는 feature가 가질 수 있는 maximum값과 minimum값의 차이로 두고,
분자는 해당 feature 값과 minimum값의 차이로 둔다.
- feature들간의 variance 패턴은 그대로 유지한 채로 feature가 scaling됨.
-> 특정 feature만 variance가 매우 큰 경우, 특히 이상치(outlier)가 존재하는 경우
여전히 feature간의 scaling이 데이터 분석에 적절하지 않을 수 있다.
2) Z-score normalization(Standardization) - 표준화
: Feature 값들이 μ(평균)=0, 𝝈(표준편차)=1 값을 가지는 정규분포를 따르도록 스케일링
즉, Feature값을 평균값으로 뺀 후 표준편차값으로 나눈 값을 사용, 이때 z 값이 표준점수(z-score)
-> Outlier 문제에 상대적으로 robust한 스케일링 방법
다만, min-max normalization처럼 feature값이 가지는 최소값-최대값 범위가 정해지지 않는 단점
- 대부분의 머신러닝 기법(선형회귀, 로지스틱 회귀, SVM, Neural Networks)들을 활용하는 경우
input에 standardization를 적용해야하는 경우가 많다.
특히, Gradient descent를 활용한 학습 과정을 안정시켜주고 빠른 수렴을 가능하게 함.
- z-score가 ±1.5𝝈, ±2𝝈를 벗어나는 경우 해당 데이터를 이상치로 간주하고 제거할 수 있음.
3) Log scaling
: Feature 값들이 exponential 한 분포(positive skewed)를 가지는 경우
feature 값들에 log 연산을 취하여 스케일링할 수 있.
e.g. 대한민국 국민 연봉의 분포
- 비슷하게 square root 연산을 취하거나
- 반대의 분포(negative skewed)를 가지는 경우 power / exponential 연산을 통해 스케일링 가능
- 다양한 스케일링을 통해 데이터가 좀더 정규분포에 가까워지도록 스케일링하며 outlier 문제에도 좀 더 적극적으로 대응
'STUDY > DevCourse' 카테고리의 다른 글
[데브코스][데이터 분석] 통계적 분석 기초 (2) - 기술통계, 가설검정 (0) | 2024.04.02 |
---|---|
[데브코스][데이터 분석] 통계적 분석 기초 (1) - 확률, 확률분포 (0) | 2024.04.01 |
[데브코스][데이터 분석] Colab에서 Pandas 기초 (0) | 2024.03.25 |
[데브코스][데이터 분석] SQL 심화 (JOIN) (0) | 2024.03.22 |
[데브코스][데이터 분석] SQL 심화 (GROUP BY와 CTAS) (0) | 2024.03.21 |