문득 캐글이나 데이콘의 코드를 보면 로그 변환을 할 때,
np.log가 아닌 np.log1p를 사용하는 모습을 많이 봤다.
왜 그럴까?
로그는 태생적으로 큰 값을 작게 표기하기 위해 고안된 방법이며, 측정단위를 키우는 것만으로는 해결하지 못한 부분을 해결해준다.
변수를 측정하는 단위가 매우 작아서 생기는 문제를 해결하면서 계수 해석에 설득력을 부여하고자 로그변환을 사용한다.
np.log: ln(x)
np.log1p: ln(x+1)
기본적으로 log안의 x값은 아래 그래프처럼 양수만 가능하다.
하지만 0에 가까운 아주 작은 양수의 경우 (ex. 0.0000000001)
음의 무한대에 가까워지게 된다. (너무 작은 값의 경우 프로그램의 계산이 -inf가 나오게됨)
이를 방지하기 위해 1을 더함으로써 0보다 큰 양수의 값을 갖게 된다.