-
카테고리
-
세부 분야
데이터 분석
-
해결 여부
미해결
로그 스케일에 대한 질문드립니다.
20.09.02 10:15 작성 조회수 4.09k
1
강의 잘 보고 있습니다
로그 스케일에 대한 궁금증이 생겨 질문 드립니다.
1.
np.log는 자연로그 값을 반환한다고 알고 있습니다. 로그 스케일을 취할 때 자연로그를 취하는 것이 일반적인 관습인가요?
2. log(x + 1)을 하게 되면 log 그래프를 좌측으로 1 만큼 평행이동해서 log값이 음의 무한으로 수렴하는 것을 막을 수 있다고 하셨는데, -1 보다 큰 마이너스 값이 있는 경우에는 어떻게 대처해야 하나요?
미리 감사드립니다 ^^
답변을 작성해보세요.
1
1
박조은
지식공유자2020.09.02
안녕하세요. 좋은질문을 주셨네요.
1. 평소에 자연로그를 많이 사용하는 편이라 자연로그를 사용했는데 질문주신것 처럼 자연로그를 취하지 않고 np.log10으로 상용로그를 취해도 되겠다는 생각이 들어요. 다만 두 가지 방법에 대해 스케일이 달라지게 되니 전달하고자 하는 혹은 그래프 안에서 얻고자 하는 내용에 따라 다른 로그기법을 선택하면 될것 같아요.
로그와 관련된 건 아래 문서를 좀 더 참고해 보시면 좋을거 같아요.
[numpy.log — NumPy v1.19 Manual](https://numpy.org/doc/stable/reference/generated/numpy.log.html#numpy.log)
[numpy.log10 — NumPy v1.19 Manual](https://numpy.org/doc/stable/reference/generated/numpy.log10.html)
값의 스케일을 어떻게 줄이느냐에 따라 어떤 로그 방식을 취할지 결정을 하면 될것 같아요.
아래 링크는 "로그 그래프"라는 설명이 있는 위키피디아 로그 설명 링크에요. 이것도 참고해 보세요!
https://ko.wikipedia.org/wiki/%EB%A1%9C%EA%B7%B8
로그 그래프[편집]
로그는 범위를 줄여준다는 점에서 그래프에도 사용한다. 보통 십만이나 백만 단위의 그래프를 알기 쉽게 보여주기 위해 로그 그래프를 사용한다. 보통 수직 축에 로그 단위를 넣으나, 수평 축에만 혹은 둘 다 넣는 경우도 있다. 로그 그래프는 1부터 1000까지 증가하는 모습과 1000부터 백만까지 증가하는 모습을 동일한 거리 내에서 나타낼 수 있다는 점이다. y축이 로그인 수직 평면에서, 지수함수 f(x)= abx는 일반 평면에서의 일차함수와 같이 직선 형태를 나타낸다.
2. 로그는 지수함수의 역함수이기 때문에 음수에는 사용할 수가 없습니다. 그래서 음수에 사용하게 되면 다음과 같이 결측치가 반환되게 됩니다.
하지만 음수 값에 스케일링을 적용하고 싶다면 가장 작은 값을 더해주는 방법이 있습니다.
np.log1p 도 로그가 1 이하의 값에서 -Inf (마이너스 무한대)로 수렴하는 것을 방지해 주게 됩니다.
https://numpy.org/doc/stable/reference/generated/numpy.log1p.html
그래서 가장 작은 마이너스 값이 -13 이라면 모든 데이터에 0 이상의 값이 나오도록 + 14 를 해주는 방법이 있을거 같습니다.
판다스의 Series 데이터에 + 값 을 해주시면 쉽게 더해볼 수 있습니다.
이 외에 오일러의 등식 등을 사용해 볼 수 있습니다. 오일러의 등식은 직접 찾아보시면 좋을 거 같습니다.
3. 그리고 그래프의 스케일을 줄이는 것 외에 보통 Scaling을 할 때 histogram 등의 분포를 그리고 그 분포가 한쪽으로 너무 치우쳐져 있을 때 정규분포를 이루도록 변환을 해줄 때도 log변환을 사용합니다. 이건 왜도, 첨도를 함께 알아보시면 좋을거 같아요.
감사합니다.
0
답변 3