Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

평활화 스플라인

평활화 스플라인 소개

데이터에 잡음이 있으면 평활화 스플라인을 사용하여 피팅하는 것이 유용할 수 있습니다. 또는 데이터 필터링 및 평활화하기에서 설명하는 평활화 방법 중 하나를 사용할 수 있습니다.

평활화 스플라인 s는 지정된 평활화 파라미터 p와 지정된 가중치 wi에 대해 생성됩니다. 평활화 스플라인은 다음을 최소화합니다.

piwi(yis(xi))2+(1p)(d2sdx2)2dx

가중치는 지정되지 않은 경우 모든 데이터 점에 대해 1인 것으로 간주됩니다.

p는 0과 1 사이의 값으로 정의됩니다. p = 0은 데이터에 대한 최소제곱 직선 피팅을 생성하고, p = 1은 3차 스플라인 보간을 생성합니다. 평활화 파라미터를 지정하지 않을 경우 “관심 범위”에서 평활화 파라미터가 자동으로 선택됩니다. p의 관심 범위는 1/(1+h3/6)인 경우가 많습니다. 여기서 h는 데이터 점들의 평균 간격이며, 일반적으로 파라미터의 허용되는 범위보다 훨씬 작습니다. 평활화 스플라인에는 그와 연관된 평활화 파라미터가 있기 때문에 이러한 맥락에서 이 피팅을 모수적이라고 생각할 수도 있습니다. 그러나 평활화 스플라인은 3차 스플라인 또는 형태 보존 보간과 같은 조각별 다항식이기도 하므로 본 안내서에서는 비모수적 피팅 유형으로 간주합니다.

참고

평활화 스플라인 알고리즘은 csaps 함수를 기반으로 합니다.

아래에는 carbon12alpha.mat 파일의 핵반응 데이터에 세 가지 평활화 스플라인 피팅이 적용된 결과가 표시되어 있습니다. 디폴트 평활화 파라미터(p = 0.99)가 가장 매끄러운 곡선을 생성합니다. 3차 스플라인 곡선(p = 1)은 모든 데이터 점을 통과하지만 매끄러움은 부족합니다. 세 번째 곡선(p = 0.95)은 데이터를 큰 폭으로 놓치고 있으며 p의 “관심 범위”가 얼마나 작을 수 있는지를 보여줍니다.

대화형 방식으로 평활화 스플라인 피팅 선택하기

  1. MATLAB® 명령줄에서 데이터를 불러옵니다.

    load carbon12alpha
  2. 곡선 피팅기 앱을 엽니다.

    curveFitter

    또는 탭의 수학, 통계학 및 최적화 그룹에서 곡선 피팅기를 클릭합니다.

  3. 곡선 피팅기 탭의 데이터 섹션에서 데이터 선택을 클릭합니다. 피팅 데이터 선택 대화 상자에서 X 데이터 값으로 angle를 선택하고 Y 데이터 값으로 counts를 선택합니다. 자세한 내용은 곡선 피팅기 앱에서 피팅할 데이터 선택하기 항목을 참조하십시오.

  4. 곡선 피팅기 탭의 피팅 유형 섹션에서 화살표를 클릭하여 갤러리를 연 다음 평활화 그룹에서 평활화 스플라인을 클릭합니다.

  5. 피팅 옵션 창에서 평활화 파라미터 값을 지정할 수 있습니다.

    Fit Options pane for smoothing spline fit

    디폴트 평활화 파라미터 값은 1에 가깝습니다. 앱이 데이터에 적합한 디폴트 값을 선택하려고 시도합니다. 다음 중 하나를 수행하여 평활화 파라미터 값을 변경할 수 있습니다.

    • 데이터에서 더 멀리 떨어진 보다 매끄러운 피팅을 만들려면 플롯이 원하는 만큼 매끄러워질 때까지 < 매끄럽게 버튼을 반복적으로 클릭하십시오.

    • 데이터에 더 가까이 있는 보다 거친 피팅을 만들려면 만족스러운 플롯이 될 때까지 거칠게 > 버튼을 클릭하십시오.

    • 또는 평활화 파라미터에 0과 1 사이의 값을 지정할 수 있습니다. 값이 0이면 선형 다항식 피팅(데이터에 대한 최소제곱 직선 피팅)이 생성되고, 1이면 모든 데이터 점을 통과하는 조각별 3차 다항식 피팅(3차 스플라인 보간)이 생성됩니다. carbon12alpha 데이터 세트에 대해 평활화 파라미터10.95를 시도해 봅니다.

    • 초기값으로 되돌리려면 디폴트 값을 클릭하십시오.

fit 함수를 사용하여 평활화 스플라인 모델 피팅하기

이 예제에서는 fit 함수를 사용하여 평활화 스플라인 모델을 데이터에 피팅하는 방법을 보여줍니다.

평활화 스플라인 모델 피팅하기

데이터를 불러온 후 fit 함수를 호출할 때 'smoothingspline'을 지정하여 평활화 스플라인 모델을 피팅합니다.

load enso
f = fit(month,pressure,'smoothingspline');
plot(f,month,pressure)

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve.

계산된 평활화 파라미터 보기

모델을 다시 만들고, 계산된 평활화 파라미터를 세 번째 출력 인수를 사용하여 확인합니다. 평활화 파라미터는 out 구조체의 p 값입니다. 디폴트 값은 데이터 세트에 따라 달라집니다.

[f,gof,out] = fit(month,pressure,'smoothingspline');

out.p
ans = 0.9000

'SmoothingParam'을 사용하여 평활화 파라미터 지정하기

'SmoothingParam' 옵션을 사용하여 새 피팅에 대한 평활화 파라미터를 지정합니다. 값은 0과 1 사이여야 합니다.

f = fit(month,pressure,'smoothingspline','SmoothingParam',0.07);
plot(f,month,pressure)

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve.

fitoptions를 사용하여 평활화 파라미터 지정하기

또 다른 방법으로서, fitoptions를 사용하여 피팅 전에 평활화 파라미터를 지정합니다.

options = fitoptions('Method','Smooth','SmoothingParam',0.07);
[f,gof,out] = fit(month,pressure,'smooth',options);
out.p
ans = 0.0700

'smoothingspline'에 대한 대안으로, csaps 3차 평활화 스플라인 함수를 사용하거나 더 나은 제어가 가능한 다른 스플라인 함수를 직접 만들어 사용할 수 있습니다. 스플라인 피팅 소개 항목을 참조하십시오.

곡선 피팅기를 사용하여 3차 스플라인 피팅과 평활화 스플라인 피팅 비교하기

이 예제에서는 곡선 피팅기 앱을 사용하여 3차 스플라인 보간 피팅과 평활화 스플라인 피팅을 비교합니다.

  1. 데이터 xy를 만듭니다.

    x = (4*pi)*[0 1 rand(1,25)]; 
    y = sin(x) + .2*(rand(size(x))-.5);
    

  2. 곡선 피팅기 앱을 엽니다.

    curveFitter

    또는 탭의 수학, 통계학 및 최적화 그룹에서 곡선 피팅기를 클릭합니다.

  3. 곡선 피팅기 탭의 데이터 섹션에서 데이터 선택을 클릭합니다. 피팅 데이터 선택 대화 상자에서 X 데이터 값으로 x를 선택하고 Y 데이터 값으로 y를 선택합니다.

  4. 곡선 피팅기 탭의 피팅 유형 섹션에서 화살표를 클릭하여 갤러리를 연 다음 보간 그룹에서 보간을 클릭합니다.

  5. 피팅 옵션 창에서 보간 방법Cubic spline으로 지정합니다. 곡선 피팅기 앱이 3차 스플라인 보간을 피팅하고 플로팅합니다.

    Fit Options pane for cubic spline interpolant fit

  6. 피팅 이름을 바꿉니다. 피팅 테이블 창에서 피팅 이름 값을 더블 클릭한 다음 CubicSplineFit을 입력합니다.

  7. 결과 창을 봅니다. RMSE와 같은 일부 적합도 통계량은 보간 피팅에 대해 정의되지 않으며 그 값은 NaN입니다.

    Results pane for cubic spline interpolant fit

    3차 스플라인 보간은 계수로 구성된 구조체(p)를 생성하는 조각별 다항식으로 정의됩니다. 구조체에 있는 “조각”의 개수는 피팅된 데이터 점보다 하나 적으며, 다항식 차수가 3이므로 각 조각에 대한 계수의 개수는 4입니다. CubicSplineFit.p를 입력하여 피팅을 작업 공간으로 내보내면 계수 구조체 p를 검토할 수 있습니다. 계수 구조체에 대한 자세한 내용은 Constructing and Working with ppform Splines 항목을 참조하십시오.

  8. 비교를 위해 또 하나의 피팅을 만듭니다. 피팅 테이블 탭에서 기존 피팅 CubicSplineFit을 마우스 오른쪽 버튼으로 클릭하고 "CubicSplineFit" 복제를 선택합니다. 새로운 피팅의 이름을 SmoothingSplineFit으로 바꿉니다.

  9. 곡선 피팅기 탭의 피팅 유형 섹션에서 평활화 스플라인 피팅을 선택합니다.

    Fit Options pane for smoothing spline fit

    피팅 옵션 창에서 평활화 파라미터는 매끄러움의 정도를 정의합니다. 데이터 세트에 따라 평활화 파라미터가 계산됩니다. 이 데이터 세트의 경우, 디폴트 평활화 파라미터는 1에 가까운데 이는 평활화 스플라인이 거의 3차이며 거의 모든 데이터 점을 통과함을 나타냅니다.

    평활화 파라미터를 [0 1] 범위에 있는 음이 아닌 스칼라로 지정하여 매끄러움의 정도를 변경할 수 있습니다. 선형 다항식 피팅을 만들려면 평활화 파라미터를 0으로 지정합니다. 모든 데이터 점을 통과하는 조각별 3차 다항식 피팅을 만들려면 평활화 파라미터를 1로 지정합니다.

  10. 결과 창에서 평활화 스플라인 피팅의 수치 결과를 확인합니다.

    Results pane for smoothing spline fit

  11. 생성된 2개 피팅(3차 스플라인 보간 피팅과 평활화 스플라인 피팅)의 플롯을 비교합니다. 두 피팅은 내점에 대해서는 비슷하지만 끝점에서는 발산합니다.

참고

결과는 임의 시작점에 따라 달라지며 설명된 결과와 다를 수 있습니다.

참고 항목

함수

관련 항목