2024. 1. 8. 17:10ㆍTIL
데이터 분석이란?
아마존, 구글, 페이스북, 넷플릭스 등 다양한 기업들은 데이터 분석을 기반한 사업과 의사결정을 통해 큰 성공을 이루었다.
데이터 분석은 데이터를 정리, 변환, 조작, 검사하여 "인사이트"를 만들어내는 작업이다. 데이터 분석을 통해 의사 결정의 판단 기준이 주관적인 직감에서 객관적인 데이터가 되었다. 하지만 데이터가 없는 경우, 데이터가 주어진 문제와 관련이 없는 경우, 그리고 데이터가 주어진 문제를 해결하는데 결국 도움을 주지 못하는 경우가 있을 수 있다. 이러한 경우에서도 주어진 데이터로 문제를 해결할 수 있을지 없을지 가늠하는 것도 데이터 분석이기 때문에 데이터 분석은 필요하다.
데이터 분석 과정
데이터 분석 과정은 1. 문제 정의, 2. 데이터 수집, 3. 데이터 전처리, 4. 데이터 분석, 5. 리포팅/피드백으로 이루어진다.
- 문제 정의
- 큰 문제를 작은 단위의 문제들로 나눈 후 각 작은 문제들에 대해 여러 가설을 세움
- 데이터 분석을 통해 가설을 검증하고 결론을 도출하거나 피드백을 반영
- 궁극적으로 해결하고자 하는 문제(달성하고자 하는 목표)가 무엇인지
- 해당 문제를 일으키는 원인이 무엇인지
- 상황을 판단하는 지표나 기준이 무엇인지
- 데이터 수집
- 검증해보고자 하는 가설을 해결해줄 데이터를 수집
- 가설 검증에 필요한 데이터가 존재하는지
- 정확히 정보를 얻기 위해 어떤 종류의 데이터가 필요한지
- 얻고자 하는 데이터의 지표가 명확한지
- 데이터 전처리
- 데이터 추출, 필터링, 그룹핑, 조인 등 (SQL 및 DB)
- 데이터 분석을 위한 기본적인 테이블을 만드는 단계
- 테이블과 칼럼의 명칭, 처리/집계 기준, 조인 시 데이터 증식 방지
- 이상치 제거, 분포 변환, 표준화, 카테고리화, 차원 축소 등 (Python/R)
- 수집한 데이터를 데이터 분석에 용이한 형태로 만드는 과정
- 데이터 추출, 필터링, 그룹핑, 조인 등 (SQL 및 DB)
- 데이터 분석
- 탐색적 데이터 분석(EDA)
- 그룹별 평균, 합 등 기술적 통계치 확인
- 분포 확인
- 변수 간 관계 및 영향력 파악
- 데이터 시각화
- 모델링(머신러닝, 딥러닝)
- Classification (categorical label)
- Regression (numerical label)
- 클러스터링 (비지도학습)
- 탐색적 데이터 분석(EDA)
- 리포팅/피드백
- 내용의 초점은 데이터 분석가가 아닌 상대방
- 상대가 이해할 수 있는 언어 사용
- 목적을 수시로 상기하고 재확인
- 적절한 시각화 방법 활용
- 항목 간 비교 시 원 그래프는 지양하고 막대그래프 위주
- x, y축 및 단위 주의
- 시계열은 라인이나 실선으로 표현
- 분포는 히스토그램이나 박스플롯
- 변수간 관계는 산점도
- 내용의 초점은 데이터 분석가가 아닌 상대방
데이터 분석 툴(Google colab) 소개
Colab은 클라우드 기반의 Jupyter 노트북 개발 환경로 웹 브라우저에서 텍스트와 프로그램 코드를 자유롭게 작성할 수 있는 일종의 온라인 텍스트 에디터이다. CPU와 램을 제공해 주기 때문에 컴퓨터 성능과 상관없이 프로그램을 실습할 수 있다. Colab 파일을 노트북(.ipynb)이라고 부르며, 코드를 입력하는 곳이 코드 셀이라고 한다. Colab에서 사용할 수 있는 프로그래밍 언어는 ‘파이썬’이다.
Colab은 구글 계정만 존재하면 바로 사용 가능하다. 새 노트를 통해 새로운 파일(노트북) 생성이 가능하고 기본적으로 본인의 구글드라이브에 저장된다. 셀(Cell)은 코드를 실행시키거나 설명 텍스트를 작성하는 블록이다. 코드 셀은 작성된 코드를 실행하는 셀로 Ctrl/Shift/Alt + Enter를 통해서 실행 가능하다. 텍스트 셀은 설명에 필요한 텍스트 입력이 가능하며 입력 문법은 markdown 문법을 따른다. 녹색 체크는 실행이 완료된 셀임을 의미하며, 실행 시간도 확인 가능하다. []는 실행이 아직 되지 않은 코드 셀을 의미하며, [3]과 같이 숫자를 통해 셀들이 실행된 순서를 확인할 수 있다. 코드 셀 마지막에 변수가 존재할 시 변수를 자동적으로 print 해준다. 코드 셀 중간의 변수를 확인하고 싶을 때는 print(a)와 같이 따로 print 작업을 입력해야 한다.
데이터 정규화와 스케일링 기법
데이터에서 하나의 instance(sample)는 그것이 가진 여러 속성값들을 이용해서 표현이 가능하다. 이 속성값들을 feature라고 한다. feature들 간의 크기 및 단위가 들쭉날쭉 하거나 가지는 값의 범위가 크게 다른 경우, 이상치(outlier) 문제가 심각한 경우에 데이터 분석이 어려워지거나 머신러닝, 딥러닝 방법을 적용하기 어려워진다. 특히, 머신 러닝 모델에 feature 값들을 input으로 사용하여 feature의 스케일이 들쭉날쭉하다면 모델이 데이터를 이상하게 해석할 우려가 있다. 이때 정규화와 스케일링을 통해 feature들이 가지는 값의 범위를 일정하게 맞춰주는 과정이 필요하다. Normalization(정규화)는 여러 가지 값(feature)들이 가지는 범위의 차이를 왜곡하지 않으면서 범위를 맞추는 것으로 Min-max normalization, Z-score normalization(Standardization), Log scaling가 있다.
- Min-max normalization
- 모든 feature값이 [0,1] 사이에 위치하도록 scaling 하는 기법
- 분모는 feature가 가질 수 있는 maximum값과 minimum값의 차이로 두고,
분자는 해당 feature 값과 minimum값의 차이로 둔다. - feature들 간의 variance 패턴은 그대로 유지한 채로 feature가 scaling
- 특정 feature만 variance가 매우 큰 경우, 특히 이상치(outlier)가 존재하는 경우에는
여전히 feature 간의 scaling이 데이터 분석에 적절하지 않을 수 있다.
- Z-score normalization(standardization, 표준화)
- Feature 값들이 μ(평균)=0, 𝝈(표준편차)=1 값을 가지는 정규분포를 따르도록 스케일링
- Feature값을 평균값으로 뺀 후 표준편차 값으로 나눈 값(z 값)을 사용한다. 이때 z 값은 표준점수(z-score)라고 한다.
- Outlier 문제에 상대적으로 민감하지 않은 스케일링 방법
- min-max normalization처럼 feature값이 가지는 최솟값-최댓값 범위가 정해지지 않는 단점
- 대부분의 머신러닝 기법(선형회귀, 로지스틱 회귀, SVM, Neural Networks)들을 활용하는 경우, input에 standardization를 적용해야 될 때가 많다.
- Gradient descent를 활용한 학습 과정을 안정시켜 주고 빠른 수렴을 가능케 한다.
- z-score가 ±1.5𝝈, ±2𝝈를 벗어나는 경우 해당 데이터를 이상치로 간주하고 제거할 수 있다.
- Log scaling
- Feature 값들이 exponential 한 분포(positive skewed)를 가지는 경우, feature 값들에 log 연산을 취하여 스케일링할 수 있다.
- square root 연산을 취하거나 반대의 분포를 가지는 경우 power / exponential 연산을 통해 스케일링해 볼 수 있다.
- 다양한 스케일링을 통해 데이터가 좀 더 정규분포에 가까워지도록 스케일링하며 outlier 문제에도 좀 더 적극적으로 대응 가능하다.

공부하며 어려웠던 내용
값들의 속성을 분석해 적절하게 데이터 정규화하여 스케일링하는 방법을 찾는 과정이 어려웠다.
'TIL' 카테고리의 다른 글
| 데이터 분석 과정 학습 및 시각화 실습(3)-1 (1) | 2024.01.10 |
|---|---|
| 데이터 분석 과정 학습 및 시각화 실습(2) (2) | 2024.01.09 |
| Python 프로그래밍 및 Pandas 활용 실습(5)-2 (1) | 2024.01.07 |
| Python 프로그래밍 및 Pandas 활용 실습(5)-1 (1) | 2024.01.06 |
| Python 프로그래밍 및 Pandas 활용 실습(4) (1) | 2024.01.05 |