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의 “관심 범위”가 얼마나 작을 수 있는지를 보여줍니다.

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

곡선 피팅 앱의 모델 유형 목록에서 평활화 스플라인을 선택합니다.

다음 옵션을 지정할 수 있습니다.

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

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

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

  • 초기값으로 되돌리려면 디폴트 값을 클릭하십시오. 툴박스가 데이터에 적합한 디폴트 값을 선택하려고 시도합니다. 평활화 스플라인 소개 항목을 참조하십시오.

예를 들어, 다음과 같이 입력합니다.

  1. 다음을 입력하여 평활화 스플라인 소개의 데이터를 불러옵니다.

    load carbon12alpha

  2. 곡선 피팅 앱에서 X 데이터에 대해 angle을 선택하고 Y 데이터에 대해 counts를 선택합니다.

  3. 평활화 스플라인 피팅 유형을 선택합니다.

  4. 평활화 파라미터 값 1, 0.95 및 디폴트 값(0.99)을 시도해 봅니다.

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

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

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

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

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

Figure contains an axes object. The axes object contains 2 objects of type line. 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 contains 2 objects of type line. 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차 평활화 스플라인 함수를 사용하거나 더 나은 제어가 가능한 다른 스플라인 함수를 직접 만들어 사용할 수 있습니다. Curve Fitting Toolbox의 스플라인 소개 항목을 참조하십시오.

예: 3차 스플라인과 평활화 스플라인을 사용한 비모수적 피팅

이 예제에서는 3차 스플라인 보간과 여러 평활화 스플라인을 사용하여 데이터를 피팅합니다.

  1. 작업 공간에서 변수를 만듭니다.

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

  2. 다음을 입력하여 곡선 피팅 앱을 엽니다.

    cftool

  3. X 데이터Y 데이터 목록에서 xy를 선택합니다.

    곡선 피팅 앱이 데이터를 피팅하고 플로팅합니다.

  4. 보간 피팅 유형과 방법 3차를 선택하여 3차 스플라인 보간으로 데이터를 피팅합니다.

    곡선 피팅 앱이 3차 스플라인 보간을 피팅하고 플로팅합니다.

  5. 피팅 이름 cubicsp를 입력합니다.

  6. 결과 창을 봅니다. RMSE와 같은 적합도 통계량은 보간에 대해 정의되지 않습니다(NaN으로 표시됨).

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

  7. 비교를 위해 또 하나의 피팅을 만듭니다. 피팅 테이블에서 피팅을 마우스 오른쪽 버튼으로 클릭하고 ‘cubicsp’ 복제를 선택합니다.

  8. 평활화 스플라인을 선택하여 평활화 스플라인으로 데이터를 피팅합니다.

    매끄러움의 정도는 평활화 파라미터로 지정됩니다. 디폴트 평활화 파라미터 값은 데이터 세트에 따라 달라지며, 툴박스가 자동으로 계산합니다.

    이 데이터 세트의 경우, 디폴트 평활화 파라미터는 1에 가까운데 이는 평활화 스플라인이 거의 3차이며 거의 모든 데이터 점을 통과함을 나타냅니다.

  9. 디폴트 평활화 파라미터 피팅의 이름을 Smooth1로 지정합니다. 디폴트 평활화 파라미터로 생성된 매끄러움의 정도가 마음에 들지 않는다면 0부터 1 사이의 값을 지정할 수 있습니다. 0은 1차 다항식 피팅을 생성하고, 1은 모든 데이터 점을 통과하는 조각별 3차 다항식 피팅을 생성합니다.

    평활화 스플라인 피팅의 수치 결과는 다음과 같습니다.

  10. 비교를 위해 평활화 스플라인 피팅을 또 하나 만듭니다. 피팅 테이블에서 피팅을 마우스 오른쪽 버튼으로 클릭하고 ‘smooth1’ 복제를 선택합니다. 평활화 파라미터를 0.5로 변경하고 피팅의 이름을 Smooth2로 지정합니다.

  11. 세 가지 피팅에 대한 플롯을 비교합니다. 디폴트 가로 좌표값 척도를 늘려서 데이터 제한 밖의 피팅 동작을 검토합니다. 좌표축 제한은 > 좌표축 제한 제어 메뉴 항목을 사용하여 변경할 수 있습니다.

참고

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

디폴트 평활화 파라미터는 보간보다 매끄러운 곡선을 생성하지만, 데이터에 대한 좋은 피팅입니다. 여기서는 평활화 파라미터를 디폴트 값보다 낮추면 한층 더 매끄러운 곡선이 생성되지만 이는 데이터에 대한 좋은 피팅이 아닙니다. 평활화 파라미터가 디폴트 값보다 높아지면 해당 곡선이 3차 스플라인 보간에 접근합니다. 3차 스플라인과 디폴트 평활화 스플라인은 내점에 대해서는 비슷하지만 끝점에서는 발산합니다.

참고 항목

관련 항목