본문 바로가기
데이터분석과 AI/빅데이터 분석기사

[빅데이터분석기사 실기][작업형1] 왜도와 첨도, np.log1p()

by 우공80 2023. 5. 24.
728x90

왜도와 첨도

왜도 및 첨도는 데이터 세트의 형태 및 분포에 대한 정보를 제공하는 통계값입니다.

  1. 왜도(Skewness): 왜도는 분포의 비대칭성을 측정합니다. 양의 왜도는 분포의 꼬리가 오른쪽으로 치우쳐 있음을 의미하고 음의 왜도는 꼬리가 왼쪽으로 치우쳐 있음을 의미합니다. 왜도 값 0은 완벽하게 대칭적인 분포를 나타냅니다. 

  2. 첨도(Kurtosis): 첨도는 분포의 정점 또는 평탄도를 측정합니다. 정규 분포와 비교하여 데이터에 두꺼운 꼬리(leptokurtic) 또는 가벼운 꼬리(platykurtic)가 있는지 여부를 알려줍니다. 첨도 값 3은 정규 분포를 나타냅니다. 양의 첨도는 꼬리가 두꺼울수록 더 뾰족한 분포를 나타내고, 음의 첨도는 꼬리가 더 가늘고 평평한 분포를 나타냅니다.

데이터 세트의 로그를 취할 때 왜도 값에 영향을 미치고 경우에 따라 0(정규성을 나타냄)에 가깝게 만들 수 있습니다. 이는 대수 변환이 더 큰 값을 압축하고 더 작은 값을 확장하여 왜도를 효과적으로 줄이기 때문에 발생합니다. 그러나 이 변환이 반드시 정규성을 보장하는 것은 아니며 데이터의 특정 특성에 따라 달라집니다. 로그값을 취할 때는 np.log1p()를 사용합니다. 

 

※ np.log()가 아닌 np.log1p()를 사용하는 이유: https://suppppppp.github.io/posts/Why-Series-MDM-1/

 

로그변환과 np.log()가 아닌 np.log1p()를 하는 이유

1.로그변환의 이유

suppppppp.github.io


다음은 왜도에 로그를 취하는 효과를 보여주고 히스토그램을 사용하여 변경 사항을 시각화하는 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

 

Big Data Certification KR

빅데이터 분석기사 실기 (Python, R tutorial code)

www.kaggle.com

 

728x90

댓글