2011-10-19 4 views
3

저는이 일에 대해 며칠 동안 고생했습니다 .... 그러나 아무 소용이 없습니다. 나는 어려움의 수준의 혼자서 곤란한 수학에 아주 좋지 않다.라그랑지안 승수 추정을 사용한 파이썬 비선형 방정식

저는 졸업식을 위해 파이썬에서 복권에 대한 최대 엔트로피 응용 프로그램을 구현하려고했는데,이 프로젝트의 초점은 많은 데이터 마이닝 기술 (Decision trees, Apriori, kmeans)을 구현하는 것이었지만, 나는 좀 더 진보 된 일을 할 수있는 기회를 놓치지 못했습니다. 그러나 이것은 나에게 너무 진보 된 것 같습니다.

그래서, 내 상담자 다음 용지의 비선형 방정식 (8)을 해결할 수있는 방법이다

reference1 : http://eprints.ecs.soton.ac.uk/901/01/paper05.pdf 방법은 다음 용지

REFERENCE2에 기반

: http://www.stanford.edu/~cover/papers/paper91.pdf

모든 도움 (이론 또는 기타)을 깊이 감사드립니다. 감사합니다.

+2

식 (8)은 없습니다. ref1에는 네 개의 번호가 매겨진 방정식 만 있습니다. –

+0

내 잘못, 내가 틀린 링크를 제공했습니다. – ArChiBald

답변

4

방정식 7 ~ 9를 조합하여 사용해야합니다. 방정식에서 알 수없는 유일한 것들은 라그랑 지 승수, 람다입니다. 그 밖의 모든 것은 이용 가능한 경험적 자료에 달려 있으며 따라서 숫자 일뿐입니다.

람다에 대한 값 집합이 주어지면 G (j, r)와 Jacobian J (j, i, r, s)를 계산할 수 있습니다. 차례로, 잔차와 야 코비 행렬을 안다면, 방정식 9에서 주어진 Newton의 방법을 사용하여 방정식 시스템의 근원, 즉 G (j, r) = 0과 같은 람다 값을 찾을 수 있습니다.

따라서 람다 값의 초기 추측을 사용하여 다른 용어를 계산 한 다음 해당 용어를 사용하여 추측을 업데이트하십시오. 방정식 7과 8을 사용하는 것에는 개념적으로 도전 할 가치가 없습니다. 단지 값을 연결하는 것뿐입니다.하지만 숫자가 많아 지므로 약간의주의가 필요합니다.

식 9는 매우 명확하지 않으므로 약간 까다 롭습니다. , G는

J * d_lambda = -G 
d_lambda는 추측 변화 벡터는

함수 값의 벡터이고, J : 용지 방정식들의 시스템을 개시하므로, 일반적으로 선형 방정식을 해결 기대 Jacobian 값의 행렬입니다. 이 논문의 표기법은 아주 혼란스럽고 단순한 표현이 무엇인지 모호하게 만든다. 통합 인덱스 인 is으로 바꾸려면을 도입하여 더 명확한 형식으로 만들 수 있습니다.

    : 저자는 (통합 색인을 사용하여), 프로 시저가된다 4.

    전체 페이지의 두 번째 단락에 결합 지수를 계산하는 식을주는 방법의 논의에서 단지 변경 언급

  1. 초기 추측으로 작용할 람다를 선택하십시오. 어쩌면 0 또는 임의의 숫자.
  2. G (a)와 J (a, b)를 평가하십시오.
  3. 추측에 대한 업데이트를 얻기 위해 선형 방정식 시스템을 풀어 라.
  4. 추측에 비해 업데이트가 적다면 그만하십시오. 그렇지 않으면 새로운 추측을 결정하고 2 단계로 돌아가십시오.

Numpy를 사용하면 상당히 유용합니다. 이 논문은 병렬 컴퓨팅 전략을 사용하는 것에 대해 이야기했으나 10 년 전이었습니다. 그것은 오늘날 훨씬 작은 문제처럼 보입니다.

+0

먼저 답장을 보내 주셔서 감사합니다. 나는 알고리즘의 절차를 이해했다. 무엇이 나를 혼란스럽게 하는가? indices.t는 memmory에 저장된 14mil 가능한 티켓의 인덱스이고, r은 승자 클래스의 인덱스이며, j는 그려진 숫자의 인덱스이다. (8) 그러나 그들은 또한 색인 i와 s를 사용하는데, 나는 그들이 어디에서 참조하고 있는지 이해할 수 없기 때문에 제안 된 통합 색인을 사용할 수 없다. – ArChiBald

+0

인덱스 i와 s는 특정 편미분을 계산할 때 사용 된 람다에서 나온 것입니다. 그것들은 j와 r 지수와 정확히 같은 의미를 갖는다 (식 4는 이것을 분명히해야한다). 따라서 i와 s에 대한 결합 된 인덱스 b를 j 및 r 인덱스에 대해 생성하는 것과 동일한 방식으로 생성합니다. 4 페이지의 두 번째 단락에서는 람다를 변경하기위한 명시적인 수식을 제공합니다. 야 코비 행렬의 두 지수 모두에 대해 동일한 작업을 수행하십시오. –

+0

용지의 표기법을 사용하여 결합 된 인덱스는 1W에서 3W까지 실행됩니다. 이를 합치면 3W 람다의 관점에서 3W 방정식을 얻을 수 있습니다. Jacobian J는 3W x 3W의 편미분 행렬입니다. 다른 용어 인 d_lambda와 G는 길이가 3W 인 벡터입니다. –