Notice
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 금융소득
- kubectl
- 임업후계자
- 외국납부세액공제
- Resolver
- Filter
- 경매
- S3
- 신탁공매
- 농지연금
- Endpoint
- 인덱싱
- 산지연금
- lambda
- 공매
- VPC
- 정책자금
- 2025
- route53
- 성능개선
- Kubernetes
- log1p
- AWS
- 매입불공제
- python
- boto3
- node
- OpenSearch
- routing table
- serverless
Archives
- Today
- Total
진지한 개발자
Python 의 log1p 의 의미 본문
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