2016-10-08 4 views
2

나는 형태최소 평균 제곱 오차 2 차 상한을 찾는 방법은 무엇입니까?

x1[i], x2[i], x3[i], z[i]의 일부 데이터를 가지고 z[i]x1[i], x2[i], and x3[i]의 알 수없는 결정적 기능입니다

. 두 번째 함수 u(x1, x2, x3)= a11*x1^2 + a22*x2^2 + a33*x3^2 + a12*x1*x2 + ... + a0이 데이터를 초과하여 즉 u(x1[i], x2[i], x3[i]) >= z[i]에 대해 i을 찾고 제약 조건에 따라 제곱 된 오류의 합계를 최소화하려고합니다.

파이썬이나 Matlab에서 계산 효율적인 효율적인 방법이 있습니까?

답변

1

아주 간단한 해결책이 있습니다. Mathlab (http://www.matrixlab-examples.com/polynomial-regression.html)에서 다항식 회귀를 사용하면됩니다. 특정 함수 P (x1 [i], x2 [i], x3 [i])를 얻을 수 있습니다. 1. 각 i에 대해 Diff [i] = P (x1 [i], x2 [i], x3 [i]) - z [i]를 계산합니다. 일부 배열은 다릅니다. 2. 모든 음수 값을 선택하십시오. 3. Diff : M = Min (Diff)에서 최소값을 찾습니다. x2 [i], x2 [i], x3 [i]) + Abs (M) 여기서 Abs (x1 [i], x2 [ (M) - M의 부호를 제외한 값입니다.

그러나 2 차 함수에만 국한되지 않으면 다항식의 차수를 다양하게 할 수 있으며 결국보다 정확한 해답을 얻을 수 있습니다.

+3

이 접근법이 제약 조건에 대한 제곱 오차의 합을 최소화한다는 것을 보여줄 수 있습니까? – Arpi

+0

Hello Andrey, 응답 해 주셔서 감사합니다. 그러나이 방법은 작동하지 않습니다. 다음 IPython 세션은 간단한 반대 예제를 보여줍니다. [1] : x = array ([0, 1, 2, 3, 4]) In [2] : y = array ([0, 0, 1 , 0, 0]) [3]에서 : polyval (polyfit (X, Y, 2), X) 아웃 [3] : 배열 ([- 0.08571429, 0.34285714, 0.48571429, 0.34285714, -0.08571429]) 중심점은 가장 큰 보정이 필요한 점입니다 (1-0.4857 = 0.5143). 이 양만큼 전체 곡선을 위로 이동하면 이차 곡선은 종점보다 훨씬 위에있게됩니다. –

2

문제가 선형 제약이있는 quadratic programming problem처럼 들립니다. 이를 해결하는 효율적인 알고리즘이 있으며 Matlab과 Python에서도 구현됩니다. quadprogCVXOPT을 각각 참조하십시오.

+0

제약 조건은 실제로 매개 변수에서 선형입니다. 나는 처음에 이것을 깨닫지 못했습니다. –

관련 문제