Data Science/Python 기초

Python numpy: np.log1p()란 뭘까?

희스레저 2022. 11. 21. 10:53

포스코 빅데이터 프로젝트의 데이터 전처리 부분을 봤는데,

연속형인 결과변수에 np.log1p() 함수를 취해준 것을 보았다.

 

왜 np.log1p()를 해준 것일까?

 


https://velog.io/@gjtang/np.log1p%EB%A5%BC-%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0

 

np.log1p()를 하는 이유

np.log1p()를 하는 이유

velog.io

※ 참고

 

로그

큰 값을 작은 값으로 표현하기 위해 사용된다.

 

예를 들어, NN이나 logistic regression의 경우, binary classification의 마지막 레이어에서 activation function으로 sigmoid를 활용한다.(softmax는 multinomial classification)

이건 또 이걸 보면 되는데..

 

아무튼 연속형 변수를 예측하기 위해서는 보통 선형함수(y=ax+b)를 쓰면 되지만, binary의 경우 종속변수가 범주형(0, 1)이므로 선형함수를 이용하면 의미가 없다. 그래서 시그모이드 함수를 통해 실수범위로 표현해서 구함 암튼 그럼

https://icim.nims.re.kr/post/easyMath/64

 

활성함수(Activation) 시그모이드(Sigmoid)함수 정의 | 알기 쉬운 산업수학 | 산

 

icim.nims.re.kr

 

 

 

각설하고,

아무튼 로그로 변환을 해주면 > np.log()

0<x<1 범위에서 y의 값이 급격하게 변하며, 특히 x가 0에 가까워질수록 -∞로 수렴하는 것을 볼 수 있다.

그래서 log(x)에 1을 더해주는데, 그걸 컴퓨터가 연산하기 편하도록 만든게 np.log1p()임

 

 

출처: https://data-scientist-jeong.tistory.com/16

 

ax.plot(x, np.log1p(x))
ax.plot(x, np.log(x))

 

 

 

x = 0로 수렴할 때, 원래라면 y는 음의 무한대로 발산하겠지만

np.log1p()에 적용할 경우 x = 1이 되므로 y는 0의 값을 가진다.