MPFIT 비선형 최소제곱 피팅 프로그램
초록
MPFIT은 FORTRAN 기반 MINPACK‑1을 IDL 환경에 맞게 포팅한 비선형 최소제곱 피팅 도구이다. 1‑D·2‑D 곡선·이미지 피팅, 피크 탐지, 인터랙티브 피팅 기능을 제공하며, 파라미터 고정·구간 제한·다른 파라미터와 연동(tying) 등 다양한 제약을 지원한다. 데이터 가중치 선택, 공분산 행렬 계산, 콜백을 통한 실시간 진단 기능도 포함한다. C와 Python 버전도 제공된다.
상세 분석
MPFIT은 MINPACK‑1의 핵심 알고리즘인 Levenberg‑Marquardt 방법을 그대로 구현하면서 IDL의 배열 처리와 메모리 관리에 최적화하였다. 기본적인 목적함수는 잔차 제곱합을 최소화하는 형태이며, 사용자는 임의의 모델 함수를 서브루틴 형태로 정의하고 파라미터 초기값과 제한조건을 전달한다. 제한조건은 세 가지 형태로 구분된다. 첫째, 파라미터를 완전히 고정시키는 fixed constraint; 둘째, 상하한값을 지정하는 bounding constraint; 셋째, 한 파라미터를 다른 파라미터의 선형 결합이나 비선형 함수값에 묶는 tying constraint이다. 이러한 제약은 Jacobian 행렬을 구성할 때 자동으로 반영되어 수치적 안정성을 높인다.
데이터 가중치 방식도 다양하게 제공한다. 기본은 등가 가중치이며, 사용자는 각 데이터 포인트에 대한 오류σ를 입력해 가중치를 1/σ² 형태로 지정할 수 있다. 또한, 사용자 정의 가중치 함수를 콜백으로 전달해 복잡한 오류 모델을 적용할 수도 있다. 피팅 과정에서 MPFIT은 파라미터 공분산 행렬을 추정해 불확도와 상관관계를 제공한다. 이는 Jacobian의 전치와 곱을 이용한 근사법이며, 최종 잔차의 자유도에 따라 스케일링된다.
진단 기능은 두 단계에서 활용된다. 피팅 중간에 호출되는 콜백 서브루틴은 현재 파라미터값, 잔차, χ², 반복 횟수 등을 사용자에게 전달한다. 이를 통해 실시간으로 수렴 상태를 모니터링하고, 필요시 파라미터를 조정하거나 중단할 수 있다. 피팅 종료 후에는 최종 χ², 자유도, 파라미터 공분산, 경고 코드 등을 반환한다. 오류 코드 체계는 0(성공)부터 다양한 비정상 종료 상황(예: Jacobian이 특이함, 최대 반복 초과 등)을 상세히 구분한다.
MPFIT은 1‑D 곡선 피팅, 2‑D 이미지 피팅, 피크 검출 전용 함수 등을 별도 래퍼로 제공한다. 예를 들어, gauss2d 함수를 이용하면 2‑D 가우시안 피크를 이미지에 맞춰 빠르게 추정할 수 있다. 인터랙티브 피팅 모드에서는 사용자가 마우스로 데이터 포인트를 선택하고, 실시간으로 파라미터를 조정해 시각적으로 피팅 결과를 확인한다.
패키지는 풍부한 문서화가 특징이다. 튜토리얼, 함수 레퍼런스, FAQ가 포함돼 있어 초보자도 쉽게 접근할 수 있다. 또한, 동일한 알고리즘을 C와 Python으로 포팅한 버전이 제공돼, IDL 외의 환경에서도 동일한 결과를 재현할 수 있다. 전체 소스와 예제 코드는 http://purl.com/net/mpfit 에서 다운로드 가능하다.
댓글 및 학술 토론
Loading comments...
의견 남기기