728x90
왜도 및 첨도는 데이터 세트의 형태 및 분포에 대한 정보를 제공하는 통계값입니다.
- 왜도(Skewness): 왜도는 분포의 비대칭성을 측정합니다. 양의 왜도는 분포의 꼬리가 오른쪽으로 치우쳐 있음을 의미하고 음의 왜도는 꼬리가 왼쪽으로 치우쳐 있음을 의미합니다. 왜도 값 0은 완벽하게 대칭적인 분포를 나타냅니다.
- 첨도(Kurtosis): 첨도는 분포의 정점 또는 평탄도를 측정합니다. 정규 분포와 비교하여 데이터에 두꺼운 꼬리(leptokurtic) 또는 가벼운 꼬리(platykurtic)가 있는지 여부를 알려줍니다. 첨도 값 3은 정규 분포를 나타냅니다. 양의 첨도는 꼬리가 두꺼울수록 더 뾰족한 분포를 나타내고, 음의 첨도는 꼬리가 더 가늘고 평평한 분포를 나타냅니다.
데이터 세트의 로그를 취할 때 왜도 값에 영향을 미치고 경우에 따라 0(정규성을 나타냄)에 가깝게 만들 수 있습니다. 이는 대수 변환이 더 큰 값을 압축하고 더 작은 값을 확장하여 왜도를 효과적으로 줄이기 때문에 발생합니다. 그러나 이 변환이 반드시 정규성을 보장하는 것은 아니며 데이터의 특정 특성에 따라 달라집니다. 로그값을 취할 때는 np.log1p()를 사용합니다.
※ np.log()가 아닌 np.log1p()를 사용하는 이유: https://suppppppp.github.io/posts/Why-Series-MDM-1/
다음은 왜도에 로그를 취하는 효과를 보여주고 히스토그램을 사용하여 변경 사항을 시각화하는 Python 코드의 예입니다.
로그를 취함에 따라 왜도가 0에 가까워져서 좌우 대칭이 되는 것을 볼 수 있습니다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 왜곡된 데이터셋 생성
data_skewed = pd.Series(np.random.exponential(scale=5, size=1000))
# 왜도와 첨도의 계산
skewness_original = data_skewed.skew()
kurtosis_original = data_skewed.kurtosis()
# 로그스케일 적용
data_transformed = np.log1p(data_skewed)
# 로그를 적용한 데이터의 왜도와 첨도 계산
skewness_transformed = data_transformed.skew()
kurtosis_transformed = data_transformed.kurtosis()
# 변환 전후 시각화
plt.figure(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.hist(data_skewed, bins=30, alpha=0.7)
plt.title("Original Dataset\nSkewness: {:.2f}, Kurtosis: {:.2f}".format(skewness_original, kurtosis_original))
plt.subplot(1, 2, 2)
plt.hist(data_transformed, bins=30, alpha=0.7)
plt.title("Transformed Dataset\nSkewness: {:.2f}, Kurtosis: {:.2f}".format(skewness_transformed, kurtosis_transformed))
plt.tight_layout()
plt.show()
Output:
※ 위 내용은 "빅데이터 분석기사 실기 준비를 위한 캐글 놀이터"를 따라가며 공부한 내용입니다.
https://www.kaggle.com/datasets/agileteam/bigdatacertificationkr
728x90
'데이터분석과 AI > 빅데이터 분석기사' 카테고리의 다른 글
[빅데이터분석기사 실기][작업형1] 분위수 구하고 값을 대체하기 (np.quantile(), np.clip()) (0) | 2023.05.26 |
---|---|
[빅데이터분석기사 실기][작업형1] 결측치 제거 및 그룹화 (0) | 2023.05.24 |
[빅데이터분석기사 실기][작업형1] map()을 이용하여 결측치 처리하기 (0) | 2023.05.24 |
[빅데이터분석기사 실기][작업형1] 반올림, 올림, 내림, 버림의 차이 (1) | 2023.05.23 |
[빅데이터분석기사 실기][작업형1] IQR을 이용한 이상값 탐지 (1) | 2023.05.23 |
댓글