27장 : 회귀와 스플라인 (Regression & Spline)


이번 장에서 배우는 회귀(Regression)과 스플라인(Spline)은 다른 큰 학문 분야의 맛보기로 제시한 것입니다.

회귀는 통계학의 기본이 되는 개념으로, 실제 측정된 데이터로부터 일반화된 수식을 얻어내는 기법을 의미합니다.  측정된 데이터가 많을 수록 더 정확한 수식을 얻어낼 수 있으며, 이 수식을 바탕으로 미래에 일어날 사건을 예측할 수 있다는 점에서 "통계 학습(Statistical Learning)"의 출발점이라 볼 수 있습니다.

통계 학습은 요즘 뜨고 있는 빅데이터 분석과도 밀접한 관계를 가지고 있습니다.

스플라인(Spline)은 몇몇 제어점을 이용하여 부드러운 곡선을 만들어내는 수학적 도구입니다.  회귀와 비슷한 개념을 기하학적으로 바라보는 관점입니다.

스플라인은 컴퓨터 그래픽스에서 매우 중요한 역할을 합니다.  게임이나 3D 애니메이션에서 쓰이는 모델들은 모두 직선과 평면(삼각형 혹은 다각형)으로 모델링 됩니다.  하지만 실제 우리가 보는 3D 캐릭터들은 유려한 곡선을 보여주는데, 이는 모두 스플라인 덕분입니다.  거칠게 칼 자국이 난 조각을 사포로 문질러 부드러운 곡선을 만드는 것처럼, 스플라인을 이용하면 데이터 모델의 크기와 수고를 대폭 줄일 수 있습니다.

통계학이나 그래픽스 전체 분야에 비하면 이 장에서 배우는 것은 매우 미미한 수준입니다만,  알고리즘의 영역이 여러 분야에 걸쳐 연구되고 있다는 것을 느끼고, 다른 분야에 대한 흥미도 가졌으면 하는 바램입니다.

강의 자료



강의 동영상

27.0 회귀와 스플라인 - 시작 : 이번 장에서는 두 개의 다른 주제를 다룹니다. 회귀는 데이터로부터 예측식을 산출하는 통계학의 도구이며, 스플라인은 여러 개의 점으로 제어되는 부드러운 곡선을 구하는 컴퓨터 그래픽스의 도구입니다.  비슷하면서도 다른 두 도구를 통해 새로운 분야의 알고리즘 문제들을 접해 봅니다.



27.1 선형 회귀분석 (Linear Regression) : 선형 회귀분석은 실험으로부터 얻어진 데이터가 선형의 분포를 보일 때 이를 제일 잘 표현하는 1차 함수를 구하는 방법입니다. 문제는 직관적으로 풀이할 수 있는데, 함수 f(x)로 구한 예측치와 실제 데이터의 오차 제곱의 합이 최소가 되는 것을 구하는 것입니다. 편미분을 통해 얻어진 연립방정식을 Cramer의 공식으로 풀면 됩니다.



27.2 회귀분석의 일반화 : 예측 함수가 1차 함수가 아니라면 어떻게 회귀 분석할 수 있을까요? 추정을 통해 여러가지 기저 함수를 구하고 이의 계수를 구하는 문제로 치환하면 회귀 분석을 일반화할 수 있습니다.



27.3 스플라인(Spline)의 개념 : 스플라인은 몇개의 점을 기준으로 부드러운 곡선을 그리는 컴퓨터 그래픽스의 방법입니다.  비트맵 폰트를 부드럽게 만드는 트투타입 폰트, 3D 모델링 등에서 많이 활용되는 유용한 도구입니다.  스플라인은 평면을 자유롭게 그려야 하므로 매개변수 함수로 모델링되며, 제어점을 나타내는 기하행렬, 혼합함수를 나타내는 기저행렬의 곱으로 표현됩니다.  혼합함수의 종류에 따라 여러가지 스플라인 방법이 있습니다.



27.4 허밋 스플라인 (Hermite Spline) : 가장 기본적인 스플라인으로 끝점 두개와 끝점에서의 기울기와 힘(벡터)로 곡선을 그리는 방법입니다. 결국 스플라인 식은 매개변수 함수와 기하행렬의 곱으로 표현됩니다.



27.5 베지어 스플라인 (Bezier Spline) : 베지어 스플라인은 허밋 스플라인을 변형한 것으로 가장 유명한 스플라인입니다.  네개의 제어점으로 곡선을 그리는 방법이며, 양 끝점과는 만나지만 가운데 두 점은 만나지 않습니다.  사실 가운데 두점은 끝점의 벡터를 나타내기 위한 것이기 때문에 허밋 스플라인과 개념이 비슷합니다.



27.6 카스텔죠 (Casteljou) 알고리즘 : 카스텔죠 알고리즘은 기하학적으로 베지어 스플라인과 동일한 곡선을 그리는 방법입니다.  원리는 단순해서 내분을 재귀적으로 수행하는 것으로 베지어 스플라인에 수학적으로 근사시킬 수 있습니다.



27.7 B-스플라인 (B-Spline) : B-스플라인은 가장 실용적인 스플라인으로 제어점을 모두 지나는 곡선을 구하는 방법입니다.  모두 3차 곡선으로 모델링되며, 구간마다 기울기가 연속되는 서로 다른 3차함수를 사용합니다.  B-스플라인은 여러 변형이 있습니다만, 이 중에서 가장 직관적인 것은 허밋 스플라인을 연결시킨 Cardinal Interpolation입니다.



27.9 회귀와 스플라인 - 결론 : 회귀 분석은 실제 데이터들과 그의 경향을 파악하여 함수를 추론하고, 정확한 계수들을 얻어내는 문제로 Least Square Fitting법으로 구할 수 있습니다.  스플라인은 기저행렬과 혼합함수의 조합으로 다양한 변이를 만들어낼 수 있다는 점에서 흥미롭습니다.




관련글 |
  - C++로 배우는 알고리즘
  - 26장 : 수치 미적분
  - 28장 : 알고리즘 개발 방법론 1 (Divide and Conquer, Dynamic Programming)

댓글 없음:

댓글 쓰기

인기글