위클리 페이퍼는 현재 훈련받고 있는 코드잇 스프린트 데이터 애널리스트 트랙에서 매주마다 훈련생 스스로 프로그래밍 언어, 데이터분석, 통계, 머신러닝 등 특정 주제에 대하여 심화 학습을 할 수 있도록 제출하는 과제입니다.
(매주 2~3가지 주제를 스스로 알아보고 학습하여 관련된 내용을 정리하여 후에 취업 활동 간에 경험할 수 있는 기술 면접을 대비함)
2주차에 이어서 이번 3주차 위클리 페이퍼의 내용을 소개하려고 합니다.
이번 3주차 위클리 페이퍼 주제는
1. 데이터 전처리 방법들 (ex. 결측값 처리 등) 에 대해 설명해 주세요.
2. t-test에 대해 설명해 주세요.
이번 3주차 위클리 페이퍼의 첫번째 주제 데이터 전처리는 데이터 분석, 기계 학습 모델링, 통계 분석 등을 위해 필수적인 과정입니다.
데이터 전처리는 데이터의 품질을 높이고 분석의 정확성을 보장하기 때문에 데이터를 다루는 모든 활동에서 중요하게 다루어야 하는 작업입니다.
데이터 전처리 과정이 수반되는 일반적인 데이터 분석 과정을 살펴보면,
데이터 분석 과정
- 문제 정의 및 목표 설정
- 분석의 목적과 목표를 명확히 정의합니다.
- 해결하고자 하는 문제를 이해하고, 분석 결과가 어떤 의사 결정을 도울지 결정합니다.
- 데이터 수집
- 분석에 필요한 데이터를 수집합니다.
- 데이터는 데이터베이스나 외부 소스를 통해 얻을 수 있습니다.
- 데이터 탐색(EDA: Exploratory Data Analysis)
- 데이터의 분포, 패턴, 이상치, 결측치 등을 시각화하고 요약 통계를 통해 데이터의 특성을 파악합니다.
- 이 단계에서는 데이터의 품질을 확인하고, 데이터가 분석에 적합한지 평가합니다.
- 데이터 전처리
- 결측치 처리, 이상치 제거, 데이터 정규화/표준화, 범주형 데이터 인코딩 등 데이터를 분석에 적합한 형태로 변환합니다.
- 데이터 정제와 변환을 통해 분석의 정확성을 높입니다.
- 데이터 분석 및 모델링
- 데이터를 바탕으로 통계 분석, 기계 학습 모델링, 시각화 등을 수행합니다.
- 분석 기법이나 알고리즘을 선택하여 데이터를 분석하고, 모델을 구축합니다.
- 모델의 성능을 평가하고, 필요시 모델을 개선합니다.
- 결과 해석 및 시각화
- 분석 결과를 해석하고, 비즈니스 문제에 대한 통찰을 도출합니다.
- 시각화 도구(예: 그래프, 차트)를 사용하여 분석 결과를 이해하기 쉽게 표현합니다.
- 보고서 작성 및 의사결정 지원
- 분석 결과와 통찰을 바탕으로 보고서를 작성합니다.
- 비즈니스 의사 결정에 도움이 되는 추천 사항을 제시합니다.
위 과정을 통해 데이터에서 유의미한 정보를 도출하고, 이를 바탕으로 비즈니스 문제를 해결하거나 의사 결정을 지원할 수 있습니다.
위에서 확인할 수 있듯이 데이터 전처리는 데이터 분석 과정에서 데이터를 탐색한 뒤에 이루어지며,
우선 데이터 전처리의 사전적 정의를 설명하겠습니다.
데이터 전처리의 사전적 정의
데이터 전처리는 '수집한 데이터를 분석 가능한 형태로 가공 및 변환하는 과정' 입니다.
위와 같은 과정은 데이터를 다루는 모든 과정에서 신경 써야 하는 중요한 단계이며, 잘 수행된 데이터 전처리는 분석의 정확성을 높이고, 더 신뢰할 수 있는 결과를 제공합니다.
또한 데이터 전처리동안 일련의 과정을 진행하게 되며, 데이터 전처리에 적용하는 방법들을 단계에 따라 정리해보았습니다.
데이터 전처리의 단계
- 데이터 클렌징
- 결측치 처리 : 데이터에서 누락된 값을 처리한다.(처리 방법 : 삭제, 대체, 예측값 대체)
- 이상치 처리 : 비정상적으로 높은 또는 낮은 값을 식별하고 처리한다.(처리 방법 : 삭제, 대체)
- 중복 제거 : 중복된 데이터를 제거한다.
- 데이터 변환
- 정규화 / 표준화 : 데이터를 동일한 스케일로 변환하여 모델의 성능을 향상시킨다.
- 정규화 : 데이터를 0과 1 사이의 값으로 스케일링한다.
- 표준화 : 데이터를 평균 0, 표준편차 1로 변환한다.
- 형식 변환 : 데이터를 필요한 형식으로 변환한다.(예) 텍스트를 숫자로 변환, 숫자를 텍스트로 변환, 날짜 형식 통일 등)
- 데이터 통합 : 여러 소스에서 데이터를 결합하여 하나의 일관된 데이터 세트를 만든다.(병합 조인)
- 정규화 / 표준화 : 데이터를 동일한 스케일로 변환하여 모델의 성능을 향상시킨다.
- 데이터 축소
- 차원 축소 : 데이터의 차원을 줄여 분석 속도를 높이고 과적합을 방지한다.(PCA, t-SNE)
- 특징 선택 : 모델 성능에 중요한 영향을 미치는 특징만 선택한다.(상관분석, 피처 중요도)
- 데이터 인코딩: 범주형 데이터를 수치형 데이터로 변환한다.(원-핫 인코딩, 라벨 인코딩)
데이터 전처리 방법
데이터 전처리 방법에는 위에서 설명했듯이 결측치/이상치 처리, 중복 제거, 데이터 스케일링, 축소와 인코딩 등이 있으며, 전처리 과정에서 가장 많이 시간을 할애하는 결측치, 이상치, 중복을 중심으로 방법들을 설명하겠습니다.
결측치 처리
결측값 : 데이터셋에 값이 존재하지 않는 경우를 말합니다.
결측치를 처리하는 방법에는 삭제, 대체, 예측값으로 대체가 있으며, 하나씩 자세히 설명하겠습니다.
- 결측치 삭제 : 행 삭제 / 열 삭제
- 행 삭제 : 결측치가 포함된 행 삭제. 데이터가 충분히 많고, 결측치가 적을 때 유용한 방법이다.
- 열 삭제 : 결측치가 많은 열 삭제. 해당 열의 데이터가 분석에 중요한 영향을 미치지 않을 때나 열에 결측치가 많아 모델의 정확성을 떨어뜨릴 수 있을 때 유용한 방법이다.
- 결측치 대체 : 평균, 중앙값, 최빈값으로 대체
- 평균, 중앙값, 최빈값 : 결측치를 해당 열의 평균, 중앙값 또는 최빈값으로 대체하는 방법이 있다.
- 예측 모델 : 회귀분석과 같은 결측치를 예측하는 모델을 활용하여 예측된 값을 대체하는 방법이 있다.
이상치 처리
이상치는 데이터를 구성하는 값에 따라 구해지므로, 이상치를 탐색하고 처리하는 과정이 필요합니다.
- 이상치 탐색
- 상자 그림(Box Plot) : 상자 그림을 통해 이상치를 시각적으로 탐지하는 방법이 있다.
- IQR(Interquartile Range) : 사분위수 범위에서 벗어난 값을 이상치로 간주하여 탐색한다.
- 표준편차 : 평균에서 일정 표준편차 이상 벗어난 값을 이상치로 간주한다.
- 이상치 처리 : 제거 / 대체
- 이상치 제거 : 이상치가 존재하는 행이나 열을 데이터에서 제거한다.
- 이상치 대체 : 이상치를 중앙값이나 다른 값으로 대체한다.
중복 제거
중복값을 처리하지 않으면 분석 결과가 왜곡될 수 있어 제거해야 한다.
- 탐지 및 제거 : 데이터에서 중복된 행을 탐지하고 제거한다.
이 외에도 데이터 전처리를 하기 위해 정규화/표준화가 포함된 데이터 변환 과정, 데이터 축소 과정, 데이터 인코딩 과정을 비롯해 다른 여러 과정들이 존재하며, 이번 글에서는 위 방법들에 대해서만 방법을 설명하려고 합니다.
다른 데이터 전처리 과정들은 추후에 다른 글을 통해 자세히 설명하도록 하겠습니다.
데이터 전처리에 활용할 수 있는 관련 코드 및 함수(Python)
일반적으로 파이썬에서 데이터 전처리를 하는 경우에 활용할 수 있는 라이브러리와 코드등을 몇가지 설명하고자 합니다.
데이터 전처리에 주로 사용하는 라이브러리에는 pandas, numpy, scikit-learn, missingno(결측값 시각화 라이브러리) 등이 있습니다.
- 결측치 탐지 및 제거에 사용되는 코드
# 결측치 탐지
data.isnull().sum()
# 결측치가 있는 행 제거
data = data.dropna()
# 결측치를 평균값으로 대체
data = data.fillna(data.mean())
- 이상치 탐지 및 제거에 사용되는 코드
# IQR 계산
Q1 = data['value'].quantile(0.25)
Q3 = data['value'].quantile(0.75)
IQR = Q3 - Q1
# 이상치 경계 설정
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
# 이상치 탐지 및 제거
data_cleaned = data[(data['value'] >= lower_bound) & (data['value'] <= upper_bound)]
print(data_cleaned)
- 중복 탐지 및 제거 코드
# 중복 행 탐지
duplicates = df.duplicated()
print(duplicates)
# 중복 행 제거
df_cleaned = df.drop_duplicates()
print(df_cleaned)
위와 같은 코드들과 다양한 방법들을 활용하여 데이터 전처리를 순조롭게 할 수 있으며, 데이터 전처리는 시간이 많이 걸리고 반복적인 과정을 통해 이루어지지만, 모델의 성능에 큰 영향을 미치기 때문에 중요한 과정이라는 것을 인식하고, 주의깊게 다룰 필요가 있습니다.
2. t-test에 대해 설명해 주세요.
t-test는 이전 주차 위클리페이퍼에서 다뤘던 추론통계에서 설명하는 통계 기법으로 기초적인 추론 통계 분석 방법입니다.
t-test의 개념부터 설명하면,
t-test(t-검정)의 개념
검정통계량이 귀무가설 하에서 t-분포를 따르는 통계적 가설 검정법으로 두 데이터 세트(집단)의 평균이 서로 유의하게 다른지 여부를 판별하는 방법입니다.
(두 집단(표본)의 평균을 비교하여 두 집단 간의 차이가 모집단에서도 통계적으로 유의미한지를 판단하는 데 사용되는 통계적 기법)
t-test의 적용 범위 및 특성
- 주로 소규모 표본에서 사용된다. (대규모 표본도 OK)
- 비율 차이에 대한 검정에는 사용할 수 없다. (비율 차이에 대한 검정은 z검정)
- 일반적으로 검정통계량이 정규 분포를 따른다.
- 모집단의 표준 편차를 모르는 경우에 사용된다.
- 독립된 또는 종속된(대응된) 두집단의 비교에서 유용하다.
- 일반적인 연구설계나 논문등에서 t-검정은 평균과 같은 비교값이 의미 있게 차이가 나는지를 검사하는 방법으로 많이 사용된다.
t-test를 적용하는 간단한 예시)
- 직업 간의 연봉 차이
- A반과 B반의 평균 차이
- 헬스장에 다니기 전과 후의 사람들의 체중 변화
- 커피를 마시기 전과 후의 사람들의 체내 카페인 수치의 차이
t검정의 유형
t검정의 유형에도 여러가지가 있으며, 기본적인 유형 3가지를 소개하면,
- 독립 표본 t-검정 (독립 비교 t-검정 ; Independent Samples t-test):
- 두 집단이 독립적인(서로 관계가 없는 구분된 두 집단을 비교할) 경우에 평균을 비교하는 검정.
- 두 집단의 모분산이 같다고(등분산성 가정) 가정하는 경우에는 스튜던트 t-검정을 적용
- 두 집단의 모분산이 다르다고 가정하는 경우에는 웰치의 t-검정을 적용
- 예: 유저를 반으로 나누어 A그룹과 B그룹의 평균을 비교
- 두 집단이 독립적인(서로 관계가 없는 구분된 두 집단을 비교할) 경우에 평균을 비교하는 검정.
- 대응 표본 t-검정 (대응 비교 t-검정 ; Paired Samples t-test):
- 두 집단이 밀접한 관련성을 갖는 경우, 동일한 집단에서 두 시점 간(전/후 비교)의 평균을 비교하는 검정.
- 예: 신약 처치를 받기 전과 후의 수치의 평균 비교
- 단일 표본 t-검정 (단일 비교 t-검정; One-Sample t-test):
- 한 집단의 평균이 특정 값과 다른지 비교하는 검정.
- 예: 한 도시의 평균 출근 시간이 30분인지 확인하기 위해 50명의 출근 시간을 측정하여 평균이 30분인지 비교
t-검정의 기본 가정
t-검정 결과의 신뢰성을 확보하고 두 집단의 평균 차이에 대한 통계적 결론을 내릴 수 있도록, 세 가지 가정이 지켜져야 하며, 이에 대한 내용을 설명하겠습니다.
- 정규성 가정: 자료가 정규 분포를 따릅니다.(표본 크기가 작을 경우, 자료가 더욱 정규분포를 따라야한다.)
- 표본 데이터가 정규성을 따르지 않을 경우, 표본 데이터의 평균 차이도 정규성을 따르지 않을 것이다.
- 독립성 가정: 독립 표본 t-검정의 경우, 두 집단은 서로 독립적이어야 한다.(한 집단이 다른 집단에 영향을 미치지 않는다.)
- 등분산성 가정: 독립 표본 t-검정의 경우, 두 집단의 분산이 동일해야 한다.(두 그룹의 데이터가 비슷한 정도로 흩어져 있어야 한다)
t-검정을 수행하는 단계
- 가설을 설정한다.
- 귀무가설 (H0) : 두 집단의 평균에 차이가 없다.
- 대립가설 (H1) : 두 집단의 평균에 차이가 있다.
- 유의수준을 설정한다.
- 일반적으로 0.05로 정하는데 도메인에 따라 다르다.
- 검정 통계량을 계산한다.
- t-test 유형에 따라 검정 통계량을 계산한다.
- p값을 계산한다.
- 검정 통계량에 따라 p값을 계산한다.
- 결론 & 해석
- p값 < 유의수준일 경우, 귀무가설을 기각하고 대립가설을 채택합니다. (두 집단의 평균에 차이가 있다.)
- p값 > 유의수준일 경우, 귀무가설을 채택합니다. (두 집단의 평균에 차이가 없다.)
t-검정의 공식
t-검정은 밑과 같은 공식을 사용하여 이루어집니다.
는 각각 두 집단의 평균을 의미하며, s^2은 각각 두 집단의 분산과 n은 각각 두 집단의 표본 크기를 의미합니다.
공식을 통해 계산된 t-값(검정통계량)을 이용하여 대응되는 자유도(degrees of freedom)와 함께 t-분포표를 참고하여 p-값을 구합니다. p-값이 유의수준(일반적으로 0.05)보다 작으면, 두 집단 간의 평균 차이는 통계적으로 유의미하다고 결론지을 수 있습니다.
독립 표본 t-검정을 사용한 예시
두 개의 다른 학급(A반과 B반)의 수학 시험 점수를 비교하려고 한다.
각 학급의 학생들이 본 시험에서 얻은 점수를 분석하여 두 학급의 평균 점수가 유의미하게 다른지 확인한다.
데이터
- A반: 학생 수 = 10명, 평균 점수 = 85, 표준 편차 = 5
- B반: 학생 수 = 12명, 평균 점수 = 80, 표준 편차 = 6
과정
- 가설 설정 :
- 귀무 가설(H0): A반과 B반의 평균 점수 차이가 없다.
- 대립 가설(H1): A반과 B반의 평균 점수 차이가 있다.
- t-값 계산
독립 표본 t-검정의 t-값은 다음과 같이 계산된다.
- X2
- s1 =
- s2
- n1 =
- n2
이를 계산하면
- 자유도 계산
df = n1 + n2 - 2 = 10 + 12 - 2 = 20 - p-값 계산
계산된 t-값과 자유도를 이용하여 t-분포표를 참고하여 p-값을 구한다.
t-값이 2.13이고 자유도가 20인 경우, 양측 검정에서 p-값은 약 0.045이다. - 결론 도출
일반적인 유의수준(0.05)과 비교했을 때, p-값이 0.045이므로 p-값 < 0.05이다. 따라서 귀무 가설을 기각하고, A반과 B반의 평균 점수가 유의미하게 다르다고 결론지을 수 있다.
요약
- A반: 평균 = 85, 표준 편차 = 5, 표본 크기 = 10
- B반: 평균 = 80, 표준 편차 = 6, 표본 크기 = 12
- t-값: 약 2.13
- 자유도: 20
- p-값: 약 0.045
결론: A반과 B반의 수학 시험 평균 점수 차이는 통계적으로 유의미하다.
'스프린트 > 위클리페이퍼' 카테고리의 다른 글
[#6] 스프린트 DA 트랙 8주차 위클리 페이퍼(차원 축소, 고유값과 고유벡터, 히스토그램의 단점과 그 대안) (0) | 2024.08.08 |
---|---|
[#5] 스프린트 DA 트랙 5주차 위클리 페이퍼(절대 경로와 상대 경로, Git, Branch) (0) | 2024.07.17 |
[#4] 스프린트 DA 트랙 4주차 위클리 페이퍼(클래스와 인스턴스, 정적 메소드) (0) | 2024.07.11 |
[#2] 스프린트 DA 트랙 2주차 위클리 페이퍼(제 1종 오류와 제 2종 오류, p값) (0) | 2024.06.27 |
[#1] 스프린트 DA 트랙 1주차 위클리 페이퍼(사분위수, 기술통계 및 추론통계) (0) | 2024.06.20 |
데이터 분석을 공부하고 카페를 열심히 돌아다니는 이야기
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!