2013-07-23 4 views
10

먼저 과학적 수학이나 통계에 대한 경험이 부족합니다. 이렇게하면 매우 잘 알려진 문제 일 수 있지만 어디서부터 시작해야할지 모르겠습니다.많은 매개 변수 (파이썬)가있는 함수를 최대화

나는 x'ses를 추측하고 f의 가장 높은 값을 찾을 필요가있는 f(x1, x2, ..., xn) 기능이 있습니다. 이 함수의 속성은 다음과 같습니다.

  • 총 수 또는 매개 변수는 대개 약 40-60이며, 무차별 대입 방식이 불가능합니다.

  • 0.01 각 X 범위의 가능한 값

  • 2.99하는 기능은 더 높은 F 값이 매개 변수의 추측이 더 반대임을 의미 즉, 정상이다.

지금까지 파이썬으로 아주 기본적인 방법을 구현했습니다. 처음에는 모든 매개 변수를 1로 설정하고, 임의로 새 값을 추측하고 f가 이전보다 더 높은지 검사합니다. 그렇지 않은 경우 이전 값으로 롤백하십시오. 반복 횟수가 10,000 회인 루프에서 이것은 어떻게 든 작동하는 것으로 보이지만 그 결과는 완벽한 것으로부터 멀리 떨어져 있습니다.

최적의 매개 변수 검색을 개선하는 방법에 대한 제안 사항을 보내 주시면 감사하겠습니다. 이 문제를 다룰 때 linke MCMC가 등장했지만 매우 진보 된 방법 인 것처럼 보이고 방법을 이해하는 데 많은 시간이 필요할 것입니다. 기본 힌트 또는 개념은 정교한 방법 및 알고리즘 이상을 지원합니다.

+0

SO! 이 문제에 대한 공식적인 해결책은 확실 하겠지만, 첫 번째 추측은 탐욕스러운 알고리즘이 될 것입니다 ... 각'xn'에 대해'f'를 최대화하는'xn'의 값을 찾아서 반복합니까? 이것은'f'의 성격에 달려 있습니다. 생각? –

+0

함수에 최대 값이 거의 없는지 또는 많이있을 것으로 예상되는지 알 수 있습니까? 비교적 적은 수의 최대 값이라면 [gradient descent]를 시도해 볼 수 있습니다. (http://en.wikipedia.org/wiki/Gradient_descent) –

+0

알 수없는 수의 변수를 함수에 보내는 경우, 다음 중 하나에 저장하는 것이 좋습니다. 배열, 목록 또는 사전. 아마도 네 사건의 목록 일거야. – Josh

답변

7

직접하지 마세요. SciPy을 설치하고 해당 optimization 루틴을 사용하십시오. scipy.optimize.minimize은 잘 어울리는 것처럼 보입니다.

+1

감사합니다! 나는 그것을 마침내 시험해 볼 시간이 있었고, 그것은 매력처럼 작동합니다. 이제 어떻게 작동하는지 이해하려면 코드를 살펴보아야한다는 충동과 싸워야합니다. :) – David

0

작업 목록에서 수행 할 수 없다고 표시하지 않는 한 항상 한 매개 변수로 목록을 사용할 수 있습니다. 목록을 작성하면 훨씬 쉽게 될 수 있습니다.