진지한 개발자

Python 의 log1p 의 의미 본문

IT/ML

Python 의 log1p 의 의미

제이_엔 2026. 3. 12. 16:30
728x90

Python의 log1p 함수(주로 math.log1p 또는 numpy.log1p)는 1+x의 자연로그(ln(1+x))를 계산하는 함수입니다.

여기서 '1p'는 'plus 1'을 의미합니다.

  • 수식: f(x) = ln(1+x)
  • 사용 이유 (정확도): 가 0에 매우 가까운 작은 실수일 때, log(1+x)를 직접 계산하면 수치적 정밀도 문제(반올림 오차)가 발생할 수 있습니다. log1p(x)는 이러한 작은 x값에 대해 훨씬 더 정확한 값을 제공합니다.
  • 0 데이터 처리: 데이터셋에 0이 포함되어 있을 때, 일반적인 로그 함수인 log(0)은 -inf(무한대)를 반환하여 데이터 전처리에 문제를 일으킵니다. log1p(0)은 ln(1+0) = ln(1) = 0 이 되어 0에 가까운 값을 0으로 안전하게 변환할 수 있습니다.
  • 머신러닝 활용: 데이터가 정규 분포를 따르지 않을 때, np.log1p()를 사용하여 데이터의 왜곡을 줄이고 정규 분포 형태로 변환하는 전처리 과정에 주로 사용됩니다.
    요약하자면, log1p는 작은 x값에 대한 정확도 향상과 0 데이터 처리(오류 방지)를 위해 사용하는 log(1+x) 함수입니다.

1. 주요 특징 및 의미

  • 수학적 정의: ln(1+x)를 계산하며, 여기서 ln은 밑이 e인 자연로그입니다.
  • 수치적 안정성: x가 0에 매우 가까운 아주 작은 값일 때, 단순히 1+x를 먼저 계산하면 부동 소수점 오차로 인해 1로 취급될 수 있습니다. log1p는 이를 방지하여 정밀한 계산 결과를 제공합니다.
  • 0 방지: 데이터 분석 시 값이 0인 경우 log(0)은 음의 무한대가 되어 오류가 발생합니다. log1p를 사용하면 log(1+0)=0 이 되어 안전하게 변환할 수 있습니다.

2. 사용 사례

  • 데이터 스큐(Skewness) 제거: 머신러닝에서 데이터 분포가 한쪽으로 치우쳐 있을 때, 이를 정규 분포에 가깝게 만들기 위해 로그 변환을 수행하며 이때 log1p가 자주 쓰입니다.
  • 역함수: log1p로 변환된 값은 다시 원래 단위로 되돌릴 때 expm1(e^x -1) 함수를 사용합니다.

머신러닝에서 log1p를 자주 사용하는 이유

1. 로그의 '마법': 큰 수 억제와 분포 개선

  • 많은 데이터(연봉, 조회수, 가격 등)는 적은 값은 많고 큰 값은 아주 적은 오른쪽으로 꼬리가 긴(Right-skewed) 형태를 띱니다.
  • 스케일 조정: 로그를 취하면 큰 값들이 확 줄어들면서 데이터가 정규 분포에 가까워집니다.
  • 예측 성능 향상: 선형 회귀나 신경망 같은 알고리즘은 데이터가 정규 분포일 때 훨씬 더 잘 학습합니다.

2. '0' 문제 해결 (Safety)

수학적으로 log(0)은 음의 무한대로 발산하여 에러를 일으킵니다.

  • 데이터에 0이 포함된 경우, log1p(x)를 쓰면 자동으로 log(1+0)이 되어 결과값이 0이 됩니다. 즉, 계산 오류 없이 안전하게 로그 변환을 할 수 있습니다.

3. 정밀도 유지 (Numerical Stability)

  • 컴퓨터는 0.0000001처럼 아주 작은 수에 1을 더할 때 뒷자리를 버리는 오류가 발생할 수 있습니다. log1p는 내부적으로 이를 방지하도록 설계되어 있어, 매우 작은 값에 대해서도 정확한 로그값을 계산해 줍니다.
  • Tip: log1p로 변환해서 학습시킨 모델의 예측값을 다시 원래 단위로 바꾸고 싶을 때는 반드시 expm1(e^x -1) 함수를 사용해야 합니다.
728x90