로그 알고리즘

2978 단어 algorithmslogarithm
대수는 지진 측정에서 이자율 계산에 이르기까지 다양한 응용이 가능한 우아한 수학 함수입니다. 그러나 일반 응용 프로그램 개발자를 위한 도구로 과소 평가될 수 있다고 생각합니다.

로그의 주요 대중적인 사용은 인간이 이해할 수 있는 방식으로 지수 함수를 차트로 작성하는 것입니다.

Bitcoin stock-to-flow 가격 모델에서 이것을 볼 수 있습니다.



코로나 사례:



데시벨 척도:



일상적인 개념을 사용자에게 전달할 때 이 강력한 도구를 사용하지 않겠습니까?

예를 들어, 팔로워가 많은 사람은 아무도 없는 사람에 비해 도달 범위가 훨씬 넓기 때문에 절대적 좋아요 수 대신 게시물의 10점 만점을 표시하도록 Twitter를 재설계할 수 있습니다. 즉, 당신이 누구인지에 따라 상대적으로 트윗이 좋아요 한두 개 또는 수만 개를 얻습니다. 경기장을 약간 평준화하는 방법이 있다면 어떨까요?

트윗의 이론적 최대 좋아요 수가 100만이라고 가정해 보겠습니다. 좋아요가 100만 이상인 트윗의 점수는 10입니다. 선형 척도에서 100만 좋아요의 10분의 1이 있어야 1점을 받을 수 있지만 분명히 그렇지 않습니다.

그러나 우리는 공식 log base likes of max score = exponent을 사용하여 로그 스케일로 유사한 숫자를 그릴 수 있습니다. 최대 좋아요 수와 최대 점수를 공식에 대입하면 지수가 1/6이 됩니다. 따라서 주어진 사용자의 점수를 계산하려면 좋아요 수를 1/6의 제곱 또는 const getScore = likes => Math.min(10**6, likes) ** (1/6)으로 올리면 됩니다. 분포는 다음과 같습니다.

1 like = score of 1
10 likes = score of 1.47
100 likes = score of 2.15
1000 likes = score of 3.16
10000 likes = score of 4.64
100000 likes = score of 6.81
1000000 likes = score of 10


이것은 여전히 ​​나에게 약간 무거운 느낌입니다. 약간 미세 조정합시다. 이를 수행하는 한 가지 방법은 더 낮은 값을 추가 점수로 채우는 것입니다.

const getScore = likes =>
  (Math.min(10**5, likes) ** (1/5) + Math.min(10**6, likes) ** (1/6)) / 2


이것은 우리에게 훨씬 좋은 분포를 제공합니다:

1 like = score of 1
10 likes = score of 1.53
100 likes = score of 2.33
1000 likes = score of 3.57
10000 likes = score of 5.48
100000 likes = score of 8.41
1000000 likes = score of 10


Twitter의 UI에 적용하면 다음과 같이 바뀔 수 있습니다.



이것으로:



작은 변화(반드시 개선은 아님)이지만 아이디어를 잘 보여줍니다.

사용자 인터페이스 디자인의 로그에 대한 다른 응용 프로그램에는 다음이 포함될 수 있습니다.
  • 특히 여러 다른 데이터 포인트의 가중 평균을 통합할 때 불투명한 점수를 제공하려는 기타 인스턴스.
  • 분산을 강화하기 위해 DAO의 소액 주주에게 비례적으로 더 많은 의결권을 부여하기 위해 큰 값보다 작은 값에 더 많은 가중치를 부여하려는 경우.

  • 나는 이것이 매우 흥미로운 기술이라고 생각하고 내 디자인 작업에서 더 자주 대수 및 지수 함수에 도달할 것입니다.

    좋은 웹페이지 즐겨찾기