본문 바로가기
공부/정보과학

[예제] 라그랑즈 승수법을 이용한 최대 엔트로피 계산

by 죠옹 2018. 12. 15.

 몇일 전 라그랑즈 승수법과 최대엔트로피가 적절히 접합된 내용에 대해 생각해 볼 기회가 있어, 정리해본다.

 

 각각의 가격이 1, 2, 3, 8인 물건이 있다. 어느 날 팔린 물건의 평균이 m일 때, 최대 엔트로피를 갖는 물건의 비율은 무엇인가?

 

 각각의 물건이 차지하는 비율을 다음과 같이 두자.

 

 그럼 이 때의 비율에 대한 정보 엔트로피는 다음과 같이 표현할 수 있다.

 

 이 때의 제한 조건은 비율의 합이 1, 가격의 기대 값이 m이며, 다음과 같이 나타낼 수 있다. (v는 가격)

 

 이제 최대엔트로피와 제한조건의 극값을 찾는 라그랑즈 미정 승수법을 적용한다.

 

 이제 미분값을 0으로 만드는 확률을 계산하고

 

 위의 식을 p에 대해 전개하면 다음과 같이 표현할 수 있다.

 확률이 가격을 지수로 갖는 함수로 분포함을 알 수 있다.

 

 이 식을 첫번째 제한조건에 대입해보면,

 

 두번째 제한조건에 대입해보면,

 

 위의 두 식으로부터 β값은 다음 방정식을 만족한다.

 

 

 이제, 알고자 하는 m값을 넣고, beta를 구하면, 해당 평균 가격에서 가장 높은 엔트로피를 갖는, 즉, 가장 예측하기 힘든 상태인 물건의 비율을 구할 수 있다.

 

 

 이를 파이썬을 이용해서 풀어보자. 

먼저, 평균 값이 5인 경우 beta값을 먼저 구해보자. 라이브러리는 방정식의 해를 구해주는 sympy를 이용한다.

import numpy as np
from sympy import Symbol, solve, N, plot

""" 평균 값"""
m = 5

""" 방정식 """
beta = Symbol('beta', real=True)
eq = (1-m)*beta + (2-m)*beta**2 + (3-m)*beta**3 + (8-m)*beta**8

""" 가시화 """
plot(eq, (beta, -1, 1.3))

""" 방정식의 해 """
R = solve(eq)
R_value = [N(solution) for solution in R]
print(R_value)

 가시화

 해: [0, 1.19502143072814]

 

 beta값 1.195..를 대입하여 확률을 구해보면

x = R_value[1]
p1 = 1/(x + x**2 + x**3 + x**8) * x**1
p2 = 1/(x + x**2 + x**3 + x**8) * x**2
p3 = 1/(x + x**2 + x**3 + x**8) * x**3
p4 = 1/(x + x**2 + x**3 + x**8) * x**8
p = p1 + p2 + p3 + p4
print(p1, p2, p3, p4, p)

결과 : 

0.140775609992623

0.168229870865011

0.201038300972315

0.489956218170051

 

 결과에서 알 수 있듯이 평균가격 5인 경우, 가격 8인 제품이 거의 반에 가까운 비율을 차지할 때 최대엔트로피를 가진다.

 

 평균가격이 모든 제품들의 평균 값인 3.5 이하일 경우에는 반대로 beta값이 1보다 작아지게 되어, 가격 1인 제품이 가장 큰 비율을 차지하게 된다.

반응형

댓글