이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
다항식 모델
다항식 모델 소개
곡선에 대한 다항식 모델은 다음과 같이 지정됩니다.
여기서 n + 1은 다항식의 위수이고 n은 다항식의 차수이며 1 ≤ n ≤ 9입니다. 위수는 피팅할 계수의 개수를 나타내고 차수는 예측 변수의 가장 높은 거듭제곱을 나타냅니다.
본 안내서에서 다항식은 차수를 기준으로 설명합니다. 예를 들어, 3차 다항식은 다음과 같이 지정됩니다.
다항식은 간단한 경험적 모델이 필요할 때 자주 사용됩니다. 다항식 모델은 보간 또는 외삽을 위해 사용하거나 전역 피팅을 사용하여 데이터의 특징을 파악할 때 사용할 수 있습니다. 예를 들어, 0~760o 온도 범위에 있는 J형 열전쌍에 대한 온도-전압 변환은 7차 다항식으로 설명할 수 있습니다.
참고
전역 모수적 피팅이 필요하지 않으며 피팅의 유연성을 최대화하고자 하는 경우에는 조각별 다항식이 최적의 접근 방식이 될 수 있습니다. 자세한 내용은 비모수적 피팅 항목을 참조하십시오.
다항식 피팅의 주요 장점에는 복잡하지 않은 데이터에 대한 적절한 유연성이 있다는 점과 선형이라서 피팅 과정이 간단하다는 점이 있습니다. 주요 단점은 고차 피팅이 불안정해질 수 있다는 점입니다. 또한, 모든 차수의 다항식은 데이터 범위 내에서는 적합한 피팅을 제공할 수 있지만 해당 범위 밖에서는 크게 발산할 수 있습니다. 따라서 다항식을 사용하여 외삽을 수행할 때는 주의를 기울여야 합니다.
고차 다항식으로 피팅할 때는 피팅 절차에서 행렬의 기저로 매우 큰 값의 예측 변수 값을 사용하므로 스케일링 문제가 발생할 수 있습니다. 이 문제를 처리하려면 데이터의 평균값을 0에 두고 단위 표준편차로 스케일링하여 정규화해야 합니다. 곡선 피팅기 앱에서 정규화 체크박스를 선택하여 데이터를 정규화하면 됩니다.
대화형 방식으로 다항식 모델 피팅하기
MATLAB® 명령줄에
curveFitter
를 입력하여 곡선 피팅기 앱을 엽니다. 또는 앱 탭의 수학, 통계학 및 최적화 그룹에서 곡선 피팅기를 클릭합니다.곡선 피팅기 앱에서 곡선 또는 곡면 데이터를 선택합니다. 곡선 피팅기 탭의 데이터 섹션에서 데이터 선택을 클릭합니다. 대화 상자에서 데이터 변수를 선택합니다.
곡선 데이터(X 데이터와 Y 데이터 또는 인덱스에 대한 Y 데이터만)를 선택할 경우 곡선 피팅기 앱은 디폴트 곡선 피팅, 즉 다항식 피팅을 만듭니다.
곡면 데이터(X 데이터, Y 데이터, Z 데이터)를 선택할 경우 곡선 피팅기 앱은 디폴트 곡면 피팅, 즉 보간 피팅을 만듭니다. 피팅 유형 섹션에 있는 화살표를 클릭하여 갤러리를 열고 회귀 모델 그룹에서 다항식을 클릭합니다.
곡선 데이터의 경우 앱은 X에 대한 다항식 피팅을 만듭니다.
곡면 데이터의 경우 앱은 X 및 Y에 대한 다항식 피팅을 만듭니다.
피팅 옵션 창에서 다음 옵션을 지정할 수 있습니다.
X 변수와 Y 변수의 차수:
곡선 데이터의 경우 X의 차수는 최대
9
가 될 수 있습니다.곡면 데이터의 경우 X와 Y의 차수는 최대
5
가 될 수 있습니다. 다항식 피팅의 차수는 X 차수와 Y 차수 중 큰 값입니다. 자세한 내용은 다항식 곡면 피팅을 위해 다항식 항 정의하기 항목을 참조하십시오.
사용할 로버스트 선형 최소제곱 피팅 방법(
Off
,LAR
또는Bisquare
). 자세한 내용은fitoptions
함수의Robust
이름-값 인수를 참조하십시오.한계를 설정하거나 항을 제외합니다. 모든 항은 한계를 0으로 설정하여 제외할 수 있습니다. 결과 창에서 모델 항, 계수의 값, 적합도 통계량을 확인할 수 있습니다.
팁
데이터 변수들의 크기가 서로 매우 다른 경우, 정규화 체크박스를 선택한 경우와 선택 해제한 경우의 피팅에서 차이를 확인해 보십시오. 데이터 스케일링으로 피팅을 개선할 수 있는 경우 결과 창에 메시지가 표시됩니다.
여러 다항식 피팅을 비교하는 예제는 Compare Fits in Curve Fitter App 항목을 참조하십시오.
fit 함수를 사용하여 다항식 피팅하기
이 예제에서는 fit
함수를 사용하여 다항식을 데이터에 피팅하는 방법을 보여줍니다. 예제 단계에서는 다항식 곡선과 곡면을 피팅 및 플로팅하고, 피팅 옵션을 지정하고, 적합도 통계량을 반환하고, 예측값을 계산하고, 신뢰구간을 표시합니다.
다항식 라이브러리 모델은 fit 함수와 fittype 함수의 입력 인수입니다. 모델 유형을 poly
로 지정하고 x의 차수(최대 9) 또는 x와 y의 차수(최대 5)를 지정합니다. 예를 들어, 2차 곡선은 'poly2'
로 지정하고, 3차 곡면은 'poly33'
으로 지정합니다.
2차 다항식 곡선을 만들고 플로팅하기
데이터를 불러와서 2차 다항식을 피팅합니다. 문자열 'poly2'
로 2차 다항식을 지정합니다.
load census; fitpoly2=fit(cdate,pop,'poly2') % Plot the fit with the plot method. plot(fitpoly2,cdate,pop) % Move the legend to the top left corner. legend('Location','NorthWest' );
fitpoly2 = Linear model Poly2: fitpoly2(x) = p1*x^2 + p2*x + p3 Coefficients (with 95% confidence bounds): p1 = 0.006541 (0.006124, 0.006958) p2 = -23.51 (-25.09, -21.93) p3 = 2.113e+04 (1.964e+04, 2.262e+04)
3차 곡선 만들기
3차 다항식 'poly3'
을 피팅합니다.
fitpoly3=fit(cdate,pop,'poly3')
plot(fitpoly3,cdate,pop)
Warning: Equation is badly conditioned. Remove repeated data points or try centering and scaling. fitpoly3 = Linear model Poly3: fitpoly3(x) = p1*x^3 + p2*x^2 + p3*x + p4 Coefficients (with 95% confidence bounds): p1 = 3.855e-06 (-4.078e-06, 1.179e-05) p2 = -0.01532 (-0.06031, 0.02967) p3 = 17.78 (-67.2, 102.8) p4 = -4852 (-5.834e+04, 4.863e+04)
피팅 옵션 지정하기
3차 피팅에서 방정식의 조건이 나쁘다고 경고했으므로 'Normalize'
옵션을 지정하여 정규화를 시도해야 합니다. 정규화 옵션과 로버스트 피팅 옵션을 다 사용하여 3차 다항식을 피팅해 보겠습니다. Robust 'on'
은 로버스트 선형 최소제곱 피팅 방법의 디폴트 방법인 'Bisquare'
와 동일한 간략한 방법입니다.
fit3=fit(cdate, pop,'poly3','Normalize','on','Robust','on') plot(fit3,cdate,pop)
fit3 = Linear model Poly3: fit3(x) = p1*x^3 + p2*x^2 + p3*x + p4 where x is normalized by mean 1890 and std 62.05 Coefficients (with 95% confidence bounds): p1 = -0.4619 (-1.895, 0.9707) p2 = 25.01 (23.79, 26.22) p3 = 77.03 (74.37, 79.7) p4 = 62.81 (61.26, 64.37)
라이브러리 모델 'poly3'
에 대해 설정할 수 있는 파라미터를 확인하려면 fitoptions 함수를 사용하십시오.
fitoptions poly3
ans = llsqoptions with properties: Lower: [] Upper: [] Robust: 'Off' Normalize: 'off' Exclude: [] Weights: [] Method: 'LinearLeastSquares'
적합도 통계량 구하기
'gof'
출력 인수를 지정하여 3차 다항식 피팅에 대한 적합도 통계량을 구합니다.
[fit4, gof]=fit(cdate, pop,'poly3','Normalize','on'); gof
gof = struct with fields: sse: 149.7687 rsquare: 0.9988 dfe: 17 adjrsquare: 0.9986 rmse: 2.9682
잔차를 플로팅하여 피팅 정도 평가하기
잔차를 플로팅하려면 plot 메서드에서 플롯 유형으로 'residuals'
를 지정하십시오.
plot(fit4,cdate, pop,'residuals');
데이터 범위 밖에서의 피팅 살펴보기
피팅은 기본적으로 데이터 범위에 대해 플로팅됩니다. 피팅을 다른 범위에 대해 플로팅하려면 피팅을 플로팅하기 전에 좌표축의 x 제한을 설정하십시오. 예를 들어, 피팅에서 외삽된 값을 보려면 x 상한을 2050으로 설정하십시오.
plot( cdate, pop, 'o' ); xlim( [1900, 2050] ); hold on plot( fit4 ); hold off
예측한계 플로팅하기
예측한계를 플로팅하려면 플롯 유형으로 'predobs'
또는 'predfun'
을 사용하십시오.
plot(fit4,cdate,pop,'predobs')
2050년까지 3차 다항식에 대한 예측한계를 플로팅합니다.
plot( cdate, pop, 'o' ); xlim( [1900, 2050] ) hold on plot( fit4, 'predobs' ); hold off
새 쿼리 점에서 신뢰한계 구하기
새 쿼리 점에 대해 피팅을 평가합니다.
cdateFuture = (2000:10:2020).'; popFuture = fit4( cdateFuture )
popFuture = 276.9632 305.4420 335.5066
predint 메서드를 사용하여 미래의 인구 예측에 대한 95% 신뢰한계를 계산합니다.
ci = predint( fit4, cdateFuture, 0.95, 'observation' )
ci = 267.8589 286.0674 294.3070 316.5770 321.5924 349.4208
피팅 및 데이터에 대해 예측된 미래의 인구를 신뢰구간과 함께 플로팅합니다.
plot(cdate, pop, 'o'); xlim([1900, 2040]) hold on plot(fit4) h = errorbar(cdateFuture,popFuture,popFuture-ci(:,1),ci(:,2)-popFuture,'.'); hold off legend('cdate v pop','poly3','prediction','Location','NorthWest')
다항식 곡면 피팅 및 플로팅하기
곡면 데이터를 불러와서 x와 y에서 4차 다항식을 피팅합니다.
load franke; fitsurface=fit([x,y],z, 'poly44','Normalize','on') plot(fitsurface, [x,y],z)
Linear model Poly44: fitsurface(x,y) = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p30*x^3 + p21*x^2*y + p12*x*y^2 + p03*y^3 + p40*x^4 + p31*x^3*y + p22*x^2*y^2 + p13*x*y^3 + p04*y^4 where x is normalized by mean 1982 and std 868.6 and where y is normalized by mean 0.4972 and std 0.2897 Coefficients (with 95% confidence bounds): p00 = 0.3471 (0.3033, 0.3909) p10 = -0.1502 (-0.1935, -0.107) p01 = -0.4203 (-0.4637, -0.377) p20 = 0.2165 (0.1514, 0.2815) p11 = 0.1717 (0.1175, 0.2259) p02 = 0.03189 (-0.03351, 0.09729) p30 = 0.02778 (0.00749, 0.04806) p21 = 0.01501 (-0.002807, 0.03283) p12 = -0.03659 (-0.05439, -0.01879) p03 = 0.1184 (0.09812, 0.1387) p40 = -0.07661 (-0.09984, -0.05338) p31 = -0.02487 (-0.04512, -0.004624) p22 = 0.0007464 (-0.01948, 0.02098) p13 = -0.02962 (-0.04987, -0.009366) p04 = -0.02399 (-0.0474, -0.0005797)
다항식 모델 피팅 옵션
모든 피팅 방법은 디폴트 속성 Normalize
, Exclude
, Weights
및 Method
를 갖습니다. 예제는 명령줄에서 피팅 옵션 지정하기 항목을 참조하십시오.
다항식 모델은 Method
속성값 LinearLeastSquares
와 다음 표에 나와 있는 추가적인 피팅 옵션 속성을 갖습니다. 모든 피팅 옵션에 대한 자세한 내용은 fitoptions
함수 도움말 페이지를 참조하십시오.
속성 | 설명 |
---|---|
| 사용할 로버스트 선형 최소제곱 피팅 방법을 지정합니다. 값은 |
| 피팅할 계수의 하한으로 구성된 벡터입니다. 디폴트 값은 빈 벡터로, 이는 피팅에 하한이라는 제약 조건이 적용되지 않음을 나타냅니다. 한계가 지정된 경우 벡터 길이는 계수의 개수와 같아야 합니다. 제약 조건이 적용되지 않은 개별 하한은 |
| 피팅할 계수의 상한으로 구성된 벡터입니다. 디폴트 값은 빈 벡터로, 이는 피팅에 상한이라는 제약 조건이 적용되지 않음을 나타냅니다. 한계가 지정된 경우 벡터 길이는 계수의 개수와 같아야 합니다. 제약 조건이 적용되지 않은 개별 상한은 |
다항식 곡면 피팅을 위해 다항식 항 정의하기
x 입력값과 y 입력값의 차수를 지정하여 다항식 곡면 모델에 포함할 항을 제어할 수 있습니다. i가 x의 차수이고 j가 y의 차수이면 다항식의 총 차수는 i와 j 중 큰 값입니다. 각 항에서 x의 차수는 i보다 작거나 같고, 각 항에서 y의 차수는 j보다 작거나 같습니다. i와 j는 모두 최댓값이 5입니다.
예를 들어, 다음과 같이 입력합니다.
poly21 Z = p00 + p10*x + p01*y + p20*x^2 + p11*x*y
poly13 Z = p00 + p10*x + p01*y + p11*x*y + p02*y^2 + p12*x*y^2 + p03*y^3
poly55 Z = p00 + p10*x + p01*y +...+ p14*x*y^4 + p05*y^5
예를 들어, x의 차수를 3
으로 지정하고 y의 차수를 2
로 지정하면 모델 이름은 poly32
입니다. 모델 항은 다음 표의 형식을 따릅니다.
항의 차수 | 0 | 1 | 2 |
---|---|---|---|
0 | 1 | y | y2 |
1 | x | xy | xy2 |
2 | x2 | x2y | N/A |
3 | x3 | N/A | N/A |
다항식의 총 차수는 i와 j 중 큰 값을 초과할 수 없습니다. 이 예제에서 x3y, x2y2과 같은 항은 차수의 합이 3
보다 크므로 제외됩니다. 두 경우 모두 총 차수가 4
이기 때문입니다.
참고 항목
앱
함수
fit
|fittype
|fitoptions