Python numpy: np.log1p()란 뭘까?
포스코 빅데이터 프로젝트의 데이터 전처리 부분을 봤는데,
연속형인 결과변수에 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
※ 참고
로그
큰 값을 작은 값으로 표현하기 위해 사용된다.
예를 들어, 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
각설하고,
아무튼 로그로 변환을 해주면 > np.log()
0<x<1 범위에서 y의 값이 급격하게 변하며, 특히 x가 0에 가까워질수록 -∞로 수렴하는 것을 볼 수 있다.
그래서 log(x)에 1을 더해주는데, 그걸 컴퓨터가 연산하기 편하도록 만든게 np.log1p()임
ax.plot(x, np.log1p(x))
ax.plot(x, np.log(x))
x = 0로 수렴할 때, 원래라면 y는 음의 무한대로 발산하겠지만
np.log1p()에 적용할 경우 x = 1이 되므로 y는 0의 값을 가진다.