2017-04-24 2 views
0

method='L-BFGS-B과 함께 scipy.optimize.minimize (https://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html) 함수를 사용합니다.scipy.optimize의 매개 변수에 맞지 않는 오류

 fun: 32.372210618549758 
hess_inv: <6x6 LbfgsInvHessProduct with dtype=float64> 
    jac: array([ -2.14583906e-04, 4.09272616e-04, -2.55795385e-05, 
     3.76587650e-05, 1.49213975e-04, -8.38440428e-05]) 
    message: 'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH' 
    nfev: 420 
     nit: 51 
    status: 0 
    success: True 
     x: array([ 0.75739412, -0.0927572 , 0.11986434, 1.19911266, 0.27866406, 
     -0.03825225]) 

x 값이 올바르게 장착 매개 변수를 포함합니다 :

가 반환 무엇의 예는 위에 여기에있다. 이러한 매개 변수와 관련된 오류는 어떻게 계산합니까?

답변

1

"오류"로 인해 실제로 의미가 달라집니다. 귀하의 질문에 대한 일반적인 대답은 없습니다. 왜냐하면 그것은 귀하가 적합하다고 생각하는 것과 귀하가 가정하고있는 가정에 달려 있기 때문입니다.

가장 쉬운 경우는 최소화하는 기능이 음수 대립 가능성 일 때 가장 일반적인 경우입니다. 이 경우 적합에 의해 반환 된 헤 시안 행렬은 최대 우도에 대한 가우스 근사를 설명하는 공분산이며 우도 최대화시 오류를 추정하는 표준 방법입니다.

다른 종류의 함수를 피팅하거나 다른 가정을하고있는 경우에는 적용되지 않습니다.

1

이 일반적인 문제에 대한 한 가지 접근 방법은 minimize을 'L-BFGS-B'와 함께 사용 된 솔루션에서 시작하여 'L-BFGS-B'와 함께 사용 한 후 scipy.optimize.leastsq을 사용하는 것입니다. 즉, leastsq은 (일반적으로) 솔루션뿐만 아니라 1- 시그마 오류를 포함하고 추정합니다.

물론이 접근법은 leastsq을 사용할 수 있다는 것을 포함하여 몇 가지 가정을하며 문제를 해결하는 데 적절할 수 있습니다. 실용적인 관점에서, 이것은 목적 함수가 적어도 비용 함수가 아닌 변수만큼의 요소를 가진 잔여 값의 배열을 반환 할 것을 요구합니다.

여기서는 lmfit (https://lmfit.github.io/lmfit-py/)을 유용하게 사용할 수 있습니다. 'L-BFGS-B'와 'leastsq'를 모두 지원하고 이러한 최소화 방법과 다른 최소화 방법에 대해 동일한 래퍼를 제공하므로 다음과 같은 목적 함수를 사용할 수 있습니다. 두 가지 방법 (그리고 나머지 배열을 비용 함수로 변환하는 방법을 지정). 또한 두 메소드 모두에 매개 변수 경계를 사용할 수 있습니다. 이렇게하면 'L-BFGS-B'값을 시작 값으로 사용하여 'L-BFGS-B'와 'leastsq'를 먼저 적용하는 것이 매우 쉽습니다.

Lmfit은 leastsq에 의해 사용 된 간단하지만 빠른 접근 방법이 불충분 할 수 있다고 생각되는 경우에 대비하여 매개 변수 값에 대한 신뢰 한계를보다 자세하게 조사하는 방법을 제공합니다.