데이터과학을 위한 수학 복습(4)

이번에는 미분과 시그마(∑)를 복습하자. 데이터과학에서 미분은 아주 중요하다. 최대값이나 최솟값을 구하는 도구로 사용되기 때문이다. 미분(derivative)이란 어느 순간에 발생하는 변화량이다. 그 변화량이 기울기이다. 미분은 다음과 같이 표시된다.

함수 가 있을 때, 미분의 정의는,

함수 에 대해 미분한다는 의미는, 가 아주 조금 변했을 때 가 얼마나 변했는지를 구한다는 것이다. 1차방정식의 기울기는 다음과 같이 구할 수 있다.

식 (1)과 (2)는 기본적으로 동일한 의미이다. 단지 식 (2)에서 를 0에 가까운 값을 가지게 하면 식(1)과 같이 된다.

과 같이 함수가 상수인 경우, 미분값은 항상 0이다.

그래프로 그려보면, 함수가 상수이면 어느 장소든 기울기가 0이다.

가 상수일 때, 에 대한 간단한 미분 함수는 다음과 같이 정의된다.

예컨대,  를 에 대해 미분하면, 를 에 대해 미분하면, 이다.

함수의 최솟값, 최대값을 찾는 문제에서 미분이 주로 많이 이용된다. 다음과 같은 2차 함수가 있다고하자.

최솟값은 미분함수가 0이 되도록 방정식을 풀면 된다.

그래프에서 보면 함수곡선이 y축과 만나는 점인 (0,1)의 x값이다.

편미분(partial derivative, , 델타): 어떤 함수가 여러 개의 변수를 가질 때 각 변수에 대해 수행하는 미분을 편미분이라고 한다. 편미분의 표시는 다음과 같다.

와 같이 변수가 두 개인 다음 방정식을 보자.

이 식을 에 대해서 편미분하면, 과 4는 과 관계가 없으므로 상수항 취급을 받는다. 따라서 편미분 결과는 다음과 같다.

에 대해서 편미분하면 같은 원리로,

편미분은 중다회귀분석, 딥러닝, 신경망에 사용된다. 미분에 대해 몇 가지 사항을 추가하면,

합성함수의 미분은 연쇄법칙(chain rule)을 따른다. 가 에 대해 미분 가능할 때, 의 도함수는

이를 말로 표현하면, 전체를 미분한 다음 속의 식을 미분하여 곱한다는 것이다. 한 예로 에 대하여 미분해보자.

로 둔다. 그러면 이 된다. 이 때 이므로 이다. 그런데 이므로

이다. 결국 전체식을 미분한 값[]에다 속의 식을 미분한 값[]을 곱한 값이다.

또 하나 기억해 둘만한 식은  이다. 상수가 곱해진 함수의 편미분은 함수를 편미분한 값에 그 상수를 곱한 것과 같다.

데이터과학에서 가장 자주 사용되는 수학 도구는 시그마(∑)이다. 시그마의 성질을 몇 가지만 기억해두자.

이 중 마지막 식만 말로 바꾸면, 시그마(합)의 편미분은 편미분의 시그마(합)이다(Partial derivative of a sum is just the sum of the partial derivatives).

미분과 시그마를 선형회귀에 적용해보자.

회귀식에 의한 예측은 . 오차는 관측값과 회귀방정식에 의한예측값과의 차이 . 최소제곱법에 의하면, 오차제곱의 합(Sum of Squares of Errors, SSE)을 최소화하는 계수(b, a)를 구해야 한다. 그럴려면, SSE을 각 회귀계수(와 절편)에 대하여 미분한 값이 0이 되어야 한다.

먼저 절편 b에 대해 편미분하면,

여기에 시그마의 편미분은 편미분의 시그마라는 공식, 합성함수의 미분은 전체식의 미분 곱하기 속의 식의 미분이라는 공식 등이 적용되었다. 이 식을 정리하면 아래와 같다.

다음 에 대해 편미분하면,

이 식을 정리하면,

(4)와 (5)를 정규방정식(normal equation)이라고 한다. 데이터를 가지고 이 연립방정식을 풀어서 절편과 기울기를 구한다.

이상으로 미분과 시그마에 대한 복습을 마친다. 데이터과학을 수행하다 보면 여기서 복습한 내용보다 더 복잡한 수식이 필요하곤 하지만 그때 그때 인터넷 등을 참고하면 이해할 수 있을 것이다.

데이터과학을 위한 수학복습(3)

벡터에 대한 학습은 이 정도로 마치고 이제 행렬(matrix)에 대해 복습해 보자. 행렬은 벡터의 개념을 확장시켜 일반화한 것이다. 벡터는 행렬의 특수한 경우이다.

아래 사례를 보자. 프로야구 선수 다섯명의 타수 데이터이다.

이 데이터를 행렬로 간단히 표시할 수 있다.

첫 열은 안타, 둘쨋 열은 2루타, 셋째 열은 3루타를 나타낸다. 첫 행은 김선빈, 둘번째 행은 박건우, 셋번째 행은 박민우, 네번째 행은 나성범, 다섯번째 행은 박용택 선수의 기록이다. 각 선수의 안타 기록을 동일한 순서로 나타낸 것이다.

일반적으로 가로 n 줄(n행), 세로 m줄(m열)로, 배열하고 괄호로 묶은 것을 행렬이라고 한다. n행과 m열을 가진 행렬 A의 차원은 이다. 이 행렬은 첨자를 써서 아래와 같이 표현될 수 있다.  이는 행렬의 기본 형식이다.

행렬에는 기억해 둘 몇 가지 종류가 있다.

정방행렬(sqaure matrix): 행과 열의 개수가 같은 행렬로 행렬을 n차 정방행렬이라고 한다.

대각행렬(diagonal matrix): 대각 성분을 제외한 나머지 값들이 모두 0인 정방행렬. 특히 대각 성분이 모두 1인 행렬을 단위행렬(identity matrix)라고 하며, E 혹은 I로 쓰고 다음과 같이 정의한다.

단위행렬은 숫자 1과 같은 의미로 해석.  단위행렬과  단위행렬은 다음과 같이 쓸 수 있다.

영행렬(zero matrix): 행렬의 모든 성분이 0인 행렬을 영행렬이라고 하고, 알파벳 O를 써서 다음과 같이 표현한다. 수학에서 0과 같은 의미이다.

전치행렬(transpose matrix): 행렬의 행과 열을 바꾼 행렬을 의미한다. A의 전치행렬은  혹은 으로 표시한다.

엑셀에서 전치행렬 만들기 함수는 

엑셀에서 아래의 야구선수 데이터로 전치행렬을 만들어 본다.

엑셀에서 행렬 처리는 일반 숫자의 처리와 두 가지 점이 다르다. 반드시 먼저 행렬이 들어갈 범위를 선택해 주어야 한다(여기서 G2:L5). 그런 다음 수식(여기서 =TRANSPOSE(A1:D6))을 입력한다. 수식의 입력이 끝나고 나면 [Shift]+[Ctrl]+[Enter]을 눌러야 한다. 그냥 [Enter]를 누르면 오류가 발생한다.

행렬의 덧셈과 뺄셈은 다음과 같이 수행한다.

 라고 정의한다면,

행렬의 곱셈:

행벡터 와 열벡터 를 다음과 같이 정의한다면,

는 다음과 같이 계산된다.

라고 정의한다면,

행렬 A의 차원은 이며, 행렬 B의 차원은 이다. 두 행렬의 곱 C는 행벡터와 열벡터의 곱셈이 4번 반복되며,  차원의 행렬이 된다. 새 행렬 C는 A 행렬의 행  B 행렬의 열의 차원을 갖게 된다. 이점은 잘 기억해두어야 한다. 엑셀에서 행렬 연산시 계산 결과의 범위를 사전에 선택해야 하는데 그 때 사용된다.

행렬의 곱셈이 성립하기 위해서는 조건이 있다. 앞의 행렬의 열과 뒤의 행렬의 행의 차원이 같아야 한다.

엑셀에서 행렬의 곱셈을 지원하는 함수로 가 있다.

행렬의 곱셈에는 교환법칙이 성립하지 않는다(). 결합법칙과 분배법칙은 성립한다.

위 그림에서 보듯이 엑셀에서 행렬 연산을 손쉽게 수행할 수 있다.

라고 하면,

A+B는 먼저 연산 결과가 들어갈 곳에 범위를 선택한다(A22:C24). 그 다음 수식 =A15:C17+F15:H17를 입력한다. 그리고 [Shift], [Ctrl], [Enter]을 동시에 누르면 결과 값 을 얻는다.

AB는 연산 결과가 들어갈 곳인 F23:H25를 선택한다. 그 다음 수식 =MMULT(A15:C17,F15:H17)을 입력하고, Shift, Ctrl, Enter을 동시에 누르면 결과 값인 를 얻는다. 그런데 만약 BA를 동일한 방법으로 구하면, 

를 얻는다. 임을 확인할 수 있다. 즉, 교환법칙이 성립하지 않는 것이다. 그림에서처럼 (AB)C와 A(BC)를 구해보면 두 결과가 동일하다. 즉, 결합법칙이 성립함을 알 수 있다. 유사한 방법으로 분배법칙이 성립함을 확인해 볼 수 있을 것이다.

역행렬(inverse matrix): 행렬 연산에 나눗셈은 없고 대신 역행렬이 있다. 행렬 A가 있을 때 역행렬은 다음과 같이 정의된다.

여기서 행렬 I는 단위행렬이다. 단위행렬은 일반적으로 숫자 1과 같이 해석된다. 위 식을 만족시키면 B는 A의 역행렬이며, 다음과 같이 표시한다.

이 역행렬은 으로 이루어지는 정방행렬에서만 계산 가능하다. 엑셀 함수는 이다.

행렬곱의 역행렬은 각 역행렬을 반대로 곱한 것이다.

연립방정식의 행렬의 이항을 가지고 역행렬의 쓰임새를 살펴보면,

행렬식(determinant)이 0이 아닐 때 역행렬이 존재한다.

엑셀에서 행렬식의 함수는 이며, 역행렬을 가지는 행렬을 가역행렬(혹은 정칙)이라고 하고 역행렬을 가지지 않은 행렬을 비가역행렬이라고 한다.

일반적으로 이원일차연립방정식

(a, b는 동시에 0이 아니고, c와 d도 동시에 0이 아님)에서 이라고 놓으면 주어진 방정식은 다음과 같이 된다.

엑셀을 가지고 살펴보자. 먼저 한 행렬에 어떤 행렬을 곱해서 단위행렬이 나오는 그 어떤 행렬을 역행렬이다.

위 그림에서 행렬 A 의 역행렬을 구하려면,  결과가 들어갈 곳의 범위 E3:G5를 선택하고, =MINVERSE(A3:A4)를 입력한 후 Shift, Ctrl, Enter를 동시에 누른다. A의 역행렬 B 가 생성된다. B가 A의 역행렬임을 확인하기 위해 AB를 구하니 를 얻었다. 단위행렬이다. B가 A의 역행렬임이 확인되었다.

연산에 역행렬을 응용하려면 먼저 행렬식을 구해서 역행렬이 존재하는가를 확인해야 한다. 그림의 예 는 연립방정식

을 행렬로 표시한 것이다. 양변에 의 역행렬을 곱해주면 x, y의 값을 구할 수 있는데, 먼저  의 행렬식이 0이 아님을 확인해야 한다. 행렬식을 구하려면, 먼저 결과가 들어갈 자리를 지정하고(H9), =MDETERM(C9:D10)을 입력한 다음 Enter를 누른다. 행렬식 값이 1이므로 역행렬이 존재한다. 이제   의 역행렬을 구한다. 결과가 들어갈 자리를 지정(C14:D15),  수식 =MINVERSE(C9:D10)을 입력한 다음 Shfit, Ctrl, Enter를 누른다. 그러면 역행렬 가 생성된다. 그것을  양변에 곱해준다. 좌변은 단위행렬이니 표시할 필요가 없고, 우변은 을 얻는다. 즉, 이다.

좌표변환과 행렬: 임의의 숫자에 어떤 특수한 행렬을 곱하면 값이 변하는데 이것을 기하학적인 의미로 좌표변환이라고 한다. 행렬을 곱하면 좌표가 변환되며, 역행렬을 곱하면 원래의 좌표로 돌아간다. 아래 그림에 X축 대칭이동, Y 축 대칭이동, 원점 대칭이동의 사례가 나와 있다.

x, y 좌표상의 점 (-1,-1)을 행렬로 표시하면 ,  을 거기에 곱하면(순서에 유의할 것!), 즉,  . 즉, 원점 대칭 이동된 점 (1,1)을 얻는다. 이번에는  을 곱하면, . 즉, x축 대칭이동된 점 (-1,1)을 얻는다.  그리고 을 곱하면, . 즉, y축 대칭이동된 점 (1,-1)을 얻는다.

끝으로 벡터와 행렬에서 아마도 꼭 언급하고 넘어가야 할 개념 중 하나는 고유값(eigen value)고유벡터(eigen vector)이다.

임의의 행렬 K가 ()인 n 차 정방행렬일 때 아래 식을 만족시키는 0이 아닌 벡터 와 정수 λ가 존재할 때 λ를 행렬 K의 고유값이라고 하고, 벡터 를 고유벡터라고 한다.

기하학적으로 고유벡터는 독특한 성질을 갖는다. 고유벡터는 선형변환 과정에서 회전시키더라도(위 식에서 정방행렬 K를 곱한 조치) 그 벡터가 위치한 선(line)상에서 일탈하지 않는다(즉, 크기만 변할 뿐 방향이 변하지 않는다: 위식의 우변에서 고유벡터가 스칼라인 λ 배 만큼 변했다).

위 그림에서 행렬 의 고유벡터는 이고 고유값은 3이다.  인데, 은 의 결과이다. 이나  같은 다른 벡터를 곱하면 그런 결과가 얻어지지 않는다.

데이터과학에서는 그러한 특성을 지닌 고유값과 고유벡터를 활용해서 소위 주성분분석(Principal Component Aanalysis, PCA)을 수행하곤 한다. 데이터과학자는 주성분 분석을 통해서 데이터의 차원을 축소하거나 숨겨진 변수를 찾아낸다.

주성분 분석에서는 변수들의 상관행렬(이것은 항상 정방행렬이다)을 위 식의 K에 대입한다. 상관행렬(표준화된 공분산 행렬)을 R이라고 하자.

λ가 스칼라(수)이기 때문에 단위행렬(I)을 곱해서 R과 동일한 정방행렬을 만들어 주었다. 이라는 조건 아래에서 이 등식이 성립하려면 이 역행렬을 갖지 않아야 한다. 즉,  비가역행렬이어야 한다. 그럴려면 그것의 행렬식이 0이어야 한다.

(만약 역행렬을 가지면 아래처럼 되어 고유벡터 가 영행렬이 되어야 해서 라는 정의에 위배된다.)

기하학적으로 행렬식은 선형변환 결과 얻어진 행렬의 면적을 나타낸다. 행렬식이 0이라는 것은 정방행렬을 구성하는 두 요소(변수)가 정확히 한 선 위에 모두 올라오도록 변환됨을 의미한다. 즉, 면적이 0이 된다는 것이다. 행렬식이 0이 되면, 두 벡터의 방향이 정확히 겹쳐지면서 평면의 벡터공간이 하나의 직선이 된다. 차원축소는 고유벡터의 바로 이 성질을 이용한다. 주성분 분석에 관해서는 별도로 포스팅할 예정이다.

벡터와 행렬에 관해서는 이 정도로 복습을 마치기로 하자.

데이터과학을 위한 수학복습(2)

이번에는 벡터의 내적(inner product)에 관해 알아보자.

원점 O에서  와 같은 벡터 를 만들 때 를 벡터 가 이루는 각이라고 한다.

 

일 때, 벡터 와 벡터 는 수직이라고 하며 기호 로 나타낸다.

벡터의 시작점을 원점으로 할 때 벡터의 끝점의 좌표를 벡터의 성분이라고 하며,

 혹은 로 표시한다. 이 때 벡터 의 크기(길이)는 ,  의 크기는 이다. 이 크기를 벡터의 노름(norm)이라고도 한다.

이 경우 벡터의 내적(혹은 스칼라적)은 다음과 같이 정의된다.

두 벡터의 크기(벡터의 크기는 절대값 기호로 나타냄)의 곱에 사이각의 코사인 값을 곱한 것이다. 기호로는  또는 로 나타낸다. 즉,

벡터의 내적은 아래와 같이 벡터의 성분을 사용하여 나타낼 수 있다.

평면벡터 에 대하여

그리고 내적의 정의에 의하여

두 벡터 사이 각의 코사인 값은 두 벡터의 내적을 두 벡터의 크기의 곱으로 나눈 값이다. 영벡터가 아닌 두 벡터 의 내적이 0이면, 두 벡터는 직교(orthogonal)한다(혹은 수직이다)고 말하고 라고 표시한다.

이 코사인 값은 두 벡터의 상관성을 측정하는 코사인 유사도(cosine similarity)라는 척도에 바로 적용된다. 온라인 서점의 예를 보자.

위 그림에서 사용자 1은 책을 {B,C,B} 순으로 살펴보았고, 사용자 2는 책을 {C,A,B} 순으로 살펴보았을 때, 만약 사용자 3이 들어와서 책 A를 살펴보고 있다면, 그에게 어떤 책을 추천하면 좋을까?

온라인 서점은 사용자들의 클릭 혹은 검색 행태에 관한 데이터를 가지고 책들 사이의 상관성을 파악해 둔다. 그리고 만약 어떤 새로운 사용자가 들어와서 특정한 책을 살표보면 온라인 서점(의 컴퓨터)는 그 책과 상관성이 가장 높은 책(들)을 추천한다. 그 때 코사인 유사도가 사용될 수 있다.

온라인 서점은 사용자들의 검색 데이터를 가지고 품목(책) 대 품목(책) 행렬을  구한다. 그러면 각 책은 행벡터를 갖게 된다. 책 A는  , 책 B는  등의 행벡터를 갖는다. 그러면 책 A와 책 B 사이의 코사인 유사도는 위에서 소개한 사이각의 코사인 값을 구하는 공식으로 계산될 수 있다.

여기서 분자인 의 내적은 (0*1 + 1*0 + 1*2 + 0*0) = 2이다. 분모인 두 벡터의 크기와 크기의 곱은 아래와 같다.

따라서  책 A와 책 B의 코사인 유사도는,

다른 두 책들 사이의 코사인 유사도도 동일한 방법으로 계산할 수 있다. 온라인 서점의 컴퓨터는 책 A와 코사인 유사도가 가장 큰 책을 추천할 것이다.

 

데이터과학을 위한 수학 복습(1)

수학 지식 없이 데이터과학을 배울 수 있다는 주장은 거짓이다. 하지만 다행스런 점은 대다수의 데이터과학자들에게 높은 수준의 수학이 꼭 필요한 것은 아니라는 사실이다. 대부분의 실무자들에게는 모형이나 알고리즘을 이해하는 정도의 수학이 필요한 데 그것은 고등학교 수준의 수학을 잘 기억하고 있으면 대체로 충분하다.

뭐니뭐니 해도 데이터과학에 꼭 필요한 수학 지식은 선형대수(linear algebra)이다. 즉, 벡터(vector)와 행렬(matrix)이다. 그 중 아마도 벡터가 기본일 것이다.

많은 문과 전공자들에게 벡터는 넘사벽이다. 그게 일반적인 수(number)의 세계가 아니기 때문이다. 일반적인 수가 크기만을 나타내는데 비해 벡터는 ‘크기’와 ‘방향’을 가진 특별한 수이며, 순서와 의미를 지닌 숫자의 목록(list of numbers)이다. 다시 말해 벡터는 기하적 성격(geometric expression)을 갖고 있다. 그래서 벡터를 공부할 때 수적 표현의 기하적 의미(좌표상의 표시)를 새기면서 하면 크게 도움이 된다.

예컨대 학생들의 성적을 매기는데 국어와 영어 과목이 있다고 하자. 한 학생이 취득한 점수를 (국어 점수, 영어 점수)라는 벡터로 표현하기로 약속하자.  만약  학생 A의 성적이 국어=80, 영어=90이라면, 열벡터로 나타내면 이라고 표기될 것이다. 그것은 과는 전혀 다른 의미를 갖는다. 이를 좌표상에 표시하면 아래 <그림 1>과 같다.

<그림 1> 좌표 평면(혹은 공간) 사례

선형대수에서는 거의 항상 벡터의 시작점은 원점(영점)이다(<그림 2>).

<그림 2> 원점(origin)이 영점인 벡터들

 

<그림 3>에서 좌표상의 점은, 점(point)으로 표현할 때는 (-2,3), 벡터로 표현하면 , x축에서 음으로 2만큼 가고 y축에서 양으로 3만큼 간 점이다(이하는 3Blue1Brown의 동영상 강의를 인용하였음). -2는 x성분, 3은 y성분이다.

<그림 3> 좌표상에서 벡터의 예

 

3차원 벡터라면 여기에 z축을 추가하면 된다.예컨대  는 x축에서 음으로 2, y축에서 양으로 3, z축에서 양으로 4만큼 간 벡터(점)이다.

벡터의 합()을 좌표의 이동으로 설명해 보자. 벡터 가 이고, 벡터 일 때 숫자상으로 이 두 벡터의 합()은  이다. 좌표상에서 벡터는 이동으로 볼 수 있다. 원점에서 만큼 이동하고(x축으로 1만큼 가서 y축으로 2만큼 간 점), 다음에 의 종점에서 만큼 이동(x축으로 3만큼 가서 y축으로 -1만큼 간다)해서 원점에서 새로운 벡터 (x축으로 4만큼 가서 y축으로 1만큼 간 점)이 생성된 것으로 볼 수 있다. 이는 원점을 영점에 고정시켜 놓아서 얻는 이점이다.

<그림 4> 벡터의 덧셈

 

이번에는 벡터에 수(scalar: 스칼라, 영어발음으로 스케일러)를 곱하는 셈(실수배임)을 좌표의 이동으로 설명해 보자. 아래 예들에서처럼 벡터에 수를 곱하면 벡터가 그 수의 곱만큼 늘어나거나 줄어든다(즉, scaling, 스케일링된다).

,  

<그림 5> 실수배의 사례

이와 같이 벡터, 벡터의 덧셈, 실수배 등을 좌표 평면(혹은 좌표 공간)에서의 이동으로 생각해보면 벡터의 계산이 훨씬 더 잘 이해될 것이다. 좌표를 상상하면서 아래 설명을 보자.

벡터의 상등: 두 벡터가 같다는 말로 각각의 성분이 동일하다는 의미. 그럴려면 벡터의 순서와 차원이 모두 같아야 한다.

벡터의 덧셈과 뺄셈:

 라고 할 때,

벡터 가 덧셈이 가능할 때 벡터의 덧셈에는 다음 성질들이 있다.

(1) 교환법칙: 

(2) 결합법칙: 

(3) 덧셈의 항등원 (영벡터)가 존재한다. 어떤 벡터에 를 더하면 자기 자신이 된다. 2차원 벡터의 항등원은 , 3차원 벡터의 항등원은 

(4) 의 덧셈에 대한 역원 가 존재: 

벡터 가 덧셈이 가능할 때 벡터의 실수배에는 다음과 같은 성질이 있다.

(1) 분배법칙: 

(2) 결합법칙: 

(3) 임의 실수와 영벡터의 곱은 영벡터: 

(4) 1은 벡터의 실수배의 항등원:

(5) -1과 주어진 벡터의 곱은 그 벡터의 역벡터(덧셈의 역원): 

Excel로 하는 미래 예측(4): 시계열 예측

지수평활화법(FORECAST.ETS)는 3차 평활화를 수행한다. 데이터 추동 예측에서 소개한 지수평활화가 1차 평활화라고 한다면 두 차례 더 평활화를 거치는 함수이다. ETS는 Exponential Triple Smoothing의 머리글자이다. 지수평활화(exponential smoothing)가 백색 소음을 잡아주는 평활화라고 한다면 2차 평활화는 추세(trend)를 반영하고, 3차 평활화는 계절성(seasonality)을 반영한다. 수식으로 표현하면 다음과 같다.

1차 지수 평활화는,

는 측정된 시계열 데이터이고, 는 예측된 시계열 데이터(시간 t에서 평활화된 값)이다. 전 시구간에서 예측된 값의 오류를 다음 시구간 값을 예측할 때 일정한 비율()로 반영해 주는 식이다.

2차 지수 평활화는 다음과 같이 표현될 수 있다.

 시점 t에서의 추세(trend)에 대한 최적의 추정치

는 기본 요인(base factor) 혹은 데이터 평활화 요인(data smoothing factor)으로 불리며  이다. 는 추세 평활화 요인(trend smoothing factor)라고 불리며  이다. 를 넘어서 예측하려면 다음 공식을 사용한다.

3차 지수평활화(multiplicative의 경우)는 아래와 같이 계산된다.

: 계절적 조정 요인의 시퀀스(the sequence of seasonal correction factors). 그것은 관찰이 진행 중인 사이클에서 어느 시점 t mod L에서 예측된 추세의 예상된 비율이다.

L: 계절적 변동 주기(cycle)의 길이

는 계절적 변동 평활화 요인(the seasonal change smoothing factor)이며,  를 넘어서 예측하려면 다음 공식을 사용한다.

지수평활법을 이론적으로 이해하기는 다소 어렵지만 엑셀로 실행하는 것은 쉽다. 아래 그림에서처럼 예측값을 넣으려는 셀에 =FORECAST.ETS를 치고, 예측시점(여기서는 A38), 표적변수 데이터(B2:B37), 관찰한 시점들(A2:A37)을 넣어주면 된다.

그 이후 여러 시점들에 대해 예측하려면 그 수식을 복사하면 된다.  값을 구하려면, 셀에 =FORECAST.ETS.STAT(B2:B37,A2:A37,1)을 넣으면 된다.  값은 =FORECAST.ETS.STAT(B2:B37,A2:A37,2)을,  값은 =FORECAST.ETS.STAT(B2:B37,A2:A37,3)을 넣으면 된다. 계절성 주기(L)를 알아내려면 =FORECAST.ETS.SEASONALITY(D2:D51,A2:A51)을 넣으면 된다. 이렇게 계산된 계절성 주기는 6이고, 알파 값은 0.126, 베타는 0.001, 감마도 0.001이다.

이상으로 표적변수의 시계열 데이터만으로 예측하는 시계열 예측(time series forecasting)의 다양한 모형과 함수를 이해하면서 엑셀로 구현해 보았다. 아마도 그 정도만 구현할 수 있으면 현업의 실무적 요구에 잘 대응할 수 있으리라 생각된다.

미래 예측이 어렵다면 그것은 도구의 문제가 아니라 상상력, 혹은 이론과 학습의 부족에서 먼저 그 원인을 찾아야 하지 않을까. 다행한 점은 고등학교 정도의 수학만 잘 구사할 수 있으면 대부분의 문헌과 강의를 이해할 수 있다는 것이다.

엑셀이 시계열 예측만 도와주는 것이 아니다. 선형회귀와 같은 지도학습모형에 의한 예측도 수행하게 해준다. 추가기능(add-ins)을 이용하면 유용한 미래 예측을 해낼 수 있다. 다음에는 그 가능성을 살펴보겠다.

Excel로 하는 미래 예측(3): 시계열 예측

지난 포스팅에서 시계열 예측 중 데이터 추동 예측을 소개했다. 이번에는 모형 추동 예측을 살펴보자. 표적 변수의 과거 데이터에 의존해서 미래를 예측한다는 점은 데이터 추동 예측의 경우와 동일하지만 모형 추동 예측은 단지 개별적 데이터들의 집합에만 의존하는 것이 아니라 데이터들로 만들어지는 변동의 형태를 미래 예측에 반영하는 방법이다. 예컨대 변동이 선형(linear)이라는 점을 고려할 수도 있고 아니면 변동의 주기성–계절적 부침이라고 한다–이나 상향적 경향–추세라고 한다–을 고려할 수도 있다.

아래 그림들을 보면, (a)의 경우는 주기성이 분명해 보이고 (b)의 경우는 주기성이나 트렌드가 보이지 않는다. (A)의 경우는 주기성을 반영해서 미래를 예측한다면 오류를 줄일 수 있을 것이다.

모형 추동 예측에서 가장 널리 쓰이는 것은 선형회귀 모형이다. 시계열 예측의 선형회귀 모형은 크게 두 가지를 생각할 수 있다. 하나는 시간(시구간)을 예측변수로 갖는 모형–단순회귀모형, 다른 하나는 표적변수의 과거값을 독립변수로 갖는 모형–자기회귀모형이다.

데이터에 계절성(seasonality)이 있으면 단순회귀모형의 적합 결과가 좋지 않다(위 그림 참조).  단순회귀모형의 그런 단점을 개선하는 데는 두 가지 방법이 있다. 하나는 다항회귀(polynomial regression)를 사용하는 방법이다. 시구간의 2차항이나 3차항을 추가하거나 사인, 코사인 함수를 포함한 항을 추가하여 다항회귀모형을 만든다.

다른 하나는 계열 데이터의 각 시구간에 더미변수를 도입하는 방법이다. 만약 12개의 시구간이 있다면 11개의 더미변수를 도입하면 된다(12월은 기준 범주가 되어 더미변수가 생략된다). 시간 변수를 포함해서 모두 12개의 독립변수를 지닌 회귀모형이 되며 각 더미변수는 계절성을 포착한다. (아래 그림 2개 참조)

자기회귀모형(Autoregressive model, AR 모형)은 지연 계열(lag series)에 적용되는 회귀모형이다. 측정된 데이터가 1년씩 미룬 지연(lag) 데이터 혹은 2년 지연 계열, 3년 지연 계열 등과 상당한 정도의 상관관계를 가지는 경우 자기상관관계(autocorrelation)이라고 부르며 예측과정에 활용할 수 있다. 자기상관이 존재할 때 자기회귀모형을 적용하는 것이 하나의 해법이 된다. 자기회귀 모형의 일반식은 다음과 같이 표시될 수 있다.

1차 지연계열 데이터만을 가진 자기회귀모형을 AR(1), 2차 지연계열 데이터를 가진 자기회귀모형은 AR(2) 등으로 표시한다(아래 그림 참조).

지연계열 데이터를 만드는 방법은 간단하다. 아래 그림에서처럼 원 데이터를 복사해서 한 칸(여기서는 1개월)을 아래로 내리거나(Lag_1), 두 칸을 내리거나(Lag_2), 세 칸을 내리면 된다(Lag_3). 아래 사진에서처럼 공통의 데이터(노란색 부분)를 가지고 상관관계를 구하거나 회귀모형을 적합하면 된다.

아래 그림에서 보듯이 Yt와 Lag_1의 자기상관은 0.487451, Yt와 Lag_2의 자기상관은 -0.13216, Yt와 Lag_3의 자기상관은 -0.45576으로, 자기회귀모형의 적합이 필요함을 시사한다. 상관분석과 회귀분석은 모두 엑셀의 데이터-데이터분석 기능을 사용해서 수행하였다. 회귀분석 결과를 보면, 결정계수가 0.7557로 위에서 본 단순회귀모형의 결정계수 0.1798보다 크게 향상되었다.

AR 모형은 정상 시계열 데이터(stationary time series data)인 경우에만 사용 가능하다. 정상 시계열 데이터란 추세(trend)와 계절성(seasonality)이 없고 백색 소음(white noise)만 있는 시계열 데이터이다(아래 그림 참조).

이 조건이 충족되기가 보기만큼 까다롭지는 않다. 약간의 변형만 가하면 비정상 시계열 데이터를 정상 시계열 데이터로 전환할 수 있기 때문이다.

정상성(stationarity)을 확보하는 흔한 방법은 차분(differencing)을 이용하는 것이다. 차분이란 아래 식처럼 금년도 값에서 전년도 값을 뺀 것을 말한다.

만약 그렇게 차분을 해서도 정상성을 확보하지 못하면  아래 식처럼 다시 한번 차분을 할 수 있다(제2차 차분, 차분 차수가 2).

비정상 시계열 데이터의 경우 차분을 사용하지 않고 엑셀이 제공하는 지수평활법 함수를 사용해도 좋다. 2016 엑셀은 예측 함수를 4가지 제공한다. 시구간만을 독립변수로 갖는 단순선형회귀 예측을 계산하는 함수인FORECAST.LINEAR, 지수평활법 예측을 계산하는 함수 FORECAST.ETS, 지수평활법의 95% 신뢰구간을 보여주는 FORECAST.ETS.CONFINT, 계절성의 주기를 보여주는 FORECAST.ETS.SEASONALITY, 세 가지 계수를 보여주는 FORECAST.ETS.STAT를 제공한다.

사용법은 간단하다. 단순선형예측의 경우 예측하려는 셀에 =FORECAST.LINEAR를 치고, 예측하는 날짜(여기서는 A38), 표적변수 데이터(여기서는 B2:B37), 데이터가 있는 날짜(여기서는 A2:A37)를 입력하면 된다. 그리고 그 이후 날짜에 대한 예측을 추가하려면 그 수식을 복사하면 된다. 지수평활법도 마찬가지이다.

FORECAST.ETS는 편리한 함수이나 약간 자세한 설명이 필요함으로 다음 포스팅에서 독립해서 다루겠다.

Excel로 하는 미래 예측(2): 시계열 예측

미래 예측에는 다양한 유형이 있을 것이다. 우선 미래를 하나의 가능성으로 바라보는 경우 — 예측(forecasting)과, 미래를 여러 가지의 가능성으로 바라보는 경우 — 시나리오 플래닝(scenario planning)이라는 유형으로 나눌 수 있을 것이다. (미래 예측에 관한 본 블로그의 다른 글을 참조할 것) 그리고 예측은 단기 예측장기 예측으로 나눌 수 있을 것이며, 예측 변수(predictors)가 몇 개냐에 따라서 나눌 수도 있다. 예측되는 표적 변수(target)의 과거 데이터만을 가지고 하는 시계열 예측(time sceries forecasting)과, 하나 이상의 예측 변수를 사용하는 지도학습 모형 예측(supervised learning model forecasting)으로 나눌 수도 있을 것이다. 그 밖에도 선형예측(linear forecasting)비선형 예측(non-linear forecasting), 시뮬레이션(simulation)실데이터 예측(real data based forecasting)으로 나눌 수도 있을 것이다.

이번 포스팅에서는 엑셀을 가지고 표적 변수의 과거 데이터만으로 수행하는 시계열 예측을 시도해 보자. 시계열 예측은 특정한 변수의 값이 과거의 시간의 흐름에 따라 어떻게 변화했는지를 알고 있다는 가정 아래 그 변수가 미래에 가질 값을 예측하는 데 관심을 둔다. 때문에 시간적 요소가 중요하다. 예컨대 주가나 날씨가자주 그러한 방법으로 예측된다.

시계열 예측에는 데이터 추동 예측(data-driven forecasting)과 모형 추동 예측(model-driven forecasting)이 있다. 데이터 추동 예측은 예측 변수와 표적 변수 사이의 구분이 없는 시계열 분석 방법이다. 예측변수는 동시에 표적 변수이다. 데이터 추동 예측에는 평균화(averaging) 또는 평활화(smoothing) 같은 기법이 사용된다. 모형 추동 예측은 독립변수와 종속변수를 포함한다. 그런데 독립변수가 시간(time). 가장 간단한 방법은 다음과 같은 형식을 지닌 선형회귀모형이다.


위의 식에서 y(t)는 시간 t에서의 표적변수의 값이다. 학습용 데이터가 주어지면 미래의 y 값을 예측하기 위해서 계수 a와 b를 추정한다.

먼저 데이터 추동 예측부터 알아보자. 엑셀로 구현하기 전에 개념적인 설명이 필요하다.

기본 개념: 시계열 예측에서는 시구간(time period)이라는 개념이 중심이다. 시구간은 문제에 따라 초, 일, 주, 월, 분기, 년 따위의 단위를 갖는다. 그리고 시구간에 대응하는 데이터 계열(time series)인 이 있고, 또한 시계(horizon)에 대한 예측(forecast)으로 라고 표기하며, n 이후 h번째 시구간에 대한 예측을 의미한다. 보통 h=1인데 그것은 마지막 데이터 포인트 직후의 시구간을 말한다. 그러나 h는 1보다 클 수 있다. 끝으로 주어진 시간 t에 대하여 예측 오류(forecast error)  가 있다.

(1) 단순 예측(naive forecast): 계열의 다음 시구간에 대한 예측 즉, 은 계열에서 마지막 데이터 포인트 와 같다고 추정된다. 식으로 표시하면,

(2) 단순 평균: 다음 시구간의 데이터 포인트를 계열의 모든 데이터 포인트의 평균으로 계산한다.

1월부터 12월까지 월간 데이터가 있다면, 다음 해 1월(n+1)의 값을 예측하기 위하여, 간단하게 1월(n=1)부터 12월(n=12)까지의 값을 평균한다.

(3) 단순이동평균(simple moving average, SMA): 단순 평균은 한 시점에서 측정치들의 평균을 가리키나 시간이 들어간 측정치들의 평균에는 이동평균을 사용한다. 시간이 흐름에 따라 측정치가 어떻게 변화되었는지를 알고 싶기 때문이다. 동일한 시구간을 잡아서 각 기간에서의 측정값들의 평균을 구한다. 이것을 단순이동평균이라고 부른다. 2일 이동평균, 5일 이동평균, 10일 이동평균, 50일 이동평균 등등. 시구간이 짧아지면 원 데이터와의 차이가 없어진다. 

만약 5일 이동평균을 계산한다면, 첫 4일은 이동평균이 없고, 5일째 되는 날 측정값의 첫 이동평균을 갖는다. 그 다음부터는 하루씩 더해진 날짜들에 해당되는 측정값들의 이동평균을 갖게 된다. 만약 25일 동안의 5일 이동평균을 구하면, 20개의 이동평균을 갖게 될 것이다.

(4) 가중이동평균(Weighted Moving Average, WMA): SMA에는 항상 현재의 측정값과의 차이가 존재한다. 이 차이를 줄이는 대안이 WMA이다. 어떤 경우에는 가장 최근의 값이 이전의 값들보다 더 큰 영향을 미친다. 대부분의 지수적 증가가 이러한 효과 때문에 발생한다. 다음 구간의 예측은 다음과 같은 모형으로 계산할 수 있다.

위 식에서 이며, 일반적으로 이다. 

(5) 지수이동평균(Exponential Moving Average, EMA): EMA는 WMA의 한 유형이다. EMA에서는 가중승수(weighting multiplier)를 사용한다.  가중승수는 로 구할 수 있다. n은 시구간의 크기이다. 만약 2일 이동평균이라면 가중승수는 2/3(2+1)이다. 시구간이 길어지면 가중승수가 작아진다.

EMA는 다음 공식으로 구할 수 있다.

  • EMA={(금일 종가 – 어제의 EMA)*가중승수}+어제의 EMA

이 식을 곰곰히 살펴보면, 어제 범한 예측오류(금일 종가 빼기 어제의 EMA)에 가중 승수를 곱하고, 그것을 어제의 예측값(EMA)에 더해 오늘에 대한 예측(EMA)로 사용한다는 의미이다.

  • 최초 EMA = 첫 계산 기간의 SMA

(6) 지수 평활화(exponential smoothing): 평활화(smoothing)의 정신은, 어떤 변수의 매일 매일의 변동에는 신호와 소음이 함께 포함되어 있기 때문에 트렌드를 발견하기 위해서는 소음을 제거함이 바람직하다는 것이다. 그런 의미에서 앞에서 서술한 이동평균들도 평활화 기법이다. 그런데 지수 평활화는 아예 평활화를 이름으로 달고 있다.

 지수평활화는 다음 시구간의 값을 예측하기 위해 이전 시구간의 예측값을 사용한다. 그런데 이전 시구간 예측에서 예측오류가 났으면 그 오류를 다음 시구간 예측에 일정 정도 반영해 주는 방법이다. 만약 예측이 지나쳤으면 이번 예측에 일정한 값을 감해서 다음 번 예측에 투입하고, 예측이 낮았으면 이번 예측에 일정한 값을 더해서 다음 번 예측에 투입한다.

 

(1)식을 아래와 같이 바꾸어 쓸 수 있다. 그러면 다음 시구간 값()이 전년도의 예측값()에, 전년도의 예측오류()에 가중치()를 곱한 값을 더한 결과라는 점이 분명해진다.   

지수평활화를 이용해서 월간 예측을 한다면, 2월의 예측값을 구하기 위하여 1월의 실제값뿐 아니라 1월에 대한 예측값을 사용한다.  위의 식에서 가중치  는 일반적으로 0과 1 사이의 값을 갖는다. 가 0에 가까우면 다음 시구간의 예측값은 이전 예측값과 유사하고, 가 1에 가까우면 다음 시구간의 예측값은 이전 실제값과 유사해 진다. 가 1이라면 위에서 소개한 단순예측이 된다. 에 대한 일반적인 값은 경험적으로 0.2부터 0.4 사이의 값이다.

엑셀을 사용해서 데이터 추동 예측 다섯 가지 방법(단순 평균 제외)을 하나의 사례에 적용해 보자. 아래 엑셀 자료는 어느 기업이 13개월 동안 달성한 월별 매출액(단위 백만원)이다. 

단순예측은 금월 매출액을 다음 달 예상 매출액으로 잡는다. 12월의 실제 매출액 720억4천5백만원(B3)이 1월의 예상 매출액(C4)가 되었으며, 1월의 실제 매출액(B4)은 2월의 예상 매출액(C5)가 되었다. 이하 마찬가지이다.

D열에 있는 3월 이동평균(SMA(3))은 12월, 1월, 2월의 실제 매출액을 평균하는 값(=AVERAGE(B3:B5))으로 63,304.33(D6)이다. 4월 SMA(3)(D7)은 (=AVERAGE(B4:B6))이고, 5월 SMA(3)(D8)은 (=AVERAGE(B5:B7)이며, 이하 동일한 방식으로 계산된다.

E열의 3월 가중이동평균(WMA)을 구하는 데는 세 개의 가중치가 필요하다. 시구간의 첫월에 대한 가중치는 0.2, 둘째월에 대한 가중치는 0.3, 셋째월에 대한 가중치는 0.5이다. 현재에 가까워질수록 더 큰 가중치를 주고 있다. 3월 WMA(3)(E6)은 (=B5*$E$19+B4*$E$18+B3*$E$17)로 계산된다. 4월 WMA(3)(E7)은 (=B6*$E$19+B5*$E$18+B4*$E$17)로 구할 수 있다. 이하 동일한 방식으로 계산된다.

F열의 3월 지수이동평균(EMA)을 구하려면 먼저 가중승수를 구해야 한다. 시구간이 3이므로 가중승수는 2/(3+1)=0.5이다. 첫번째 EMA(3) 값(F6)은 3월의 SMA(3) 값과 동일하다. 두번째 EMA(3) 값(F7)은 (=0.5*(B7-F6)+F6)로 구해진다. 실제값에서 예측값을 뺀 예측오류에 가중승수 0.5를 곱하고 그것을 예측값에 더하면 된다. 세번째 EMA(3) 값(F8)은 (=0.5*(B8-F7)+F7)로 구하면 된다. 이하 동일한 방식으로 계산된다. 

G열의 지수평활화(exponential smoothing)를 구하려면 가중치 Alpha가 필요하다. 여기서는 임의로 Alpha=0.3이라고 하자. 첫번째 지수평활화의 1월 예측값(G7)은 12월의 실제 매출액을 가져온다. 2월 예측값(G5)은 ( =$G$17*B4+(1-$G$17)*G4)로 구해진다. 3월 예측값(G9)은 (=$G$17*B5+(1-$G$17)*G5)로 구할 수 있다. 이하 동일한 방식으로 구해진다.

이 서로 다른 예측 평활화들을 어떻게 평가할까? 한 가지 방법은 오류를 비교하고 가장 작은 오류를 낸 기법이 이 데이터에 가장 잘 맞는 방법으로 간주될 수 있을 것이다.

통계학의 분산분석이나 회귀분석에서 오류를 실제값과 예측값의 차이(즉, 오차)의 제곱(보다 정확히는 오차 제곱의 평균)을 이용하여 모형 검정값을 측정한다. 마찬가지로 시계열 예측에서도 오류의 크기를 예측오류의 제곱의 평균(Mean Squared Errors, MSE)로 측정할 수 있다. 위 다섯가지 예측 평활화의 MSE가 아래와 같다.

MSE의 크기가 SMA(3)가 가장 크고(95,175,919), EMA(3)가 가장 작음(23,599,945.7)을 알 수 있다. 즉, 이 사례에서는 EMA(3)가 가장 정확한 예측값을 내고 있다는 것이다. 흥미 있는 사실은 금년도 실제 매출액으로 내년도 매출액을 예상하는 단순예측의 성능도 그다지 나쁘지 않다는 점이다.

Excel로 하는 미래 예측(1): 가상분석(What-If Analysis)

미래 시나리오(scenarios) 자체가 ‘이론(theory)’ 없이 데이터만으로 고안될 수는 없다. 예컨대 내년도 경기 전망 시나리오는 경제 이론에 기반해서 만들어지고 남북한 관계 시나리오는 정치 이론에 기반해서 만들어 진다. 아직까지 어떤 컴퓨터 소프트웨어도 그러한 시나리오를 개발하지 못한다. 언젠가 도메인 이론, 시나리오 개발 방법론, 그리고 데이터를 충분히 입력해주면 AI가 그러한 시나리오를 개발해 낼 수 있겠지만 아직 시나리오 개발은 인간의 영역이다.

하지만 일단 시나리오가 주어지면 그것에 기반한 예측은 엑셀로 구현된다. 엑셀 상단 메뉴 중 ‘데이터’ 하위 메뉴에 가상분석(what-if analysis)을 이용하면 된다.

어떤 서점이 있다고 하자. 그 서점에 A라는 책 100권이 들어왔다. 그 책은 모두 정가에 팔릴 수도 있고 일부가 세일 가격에 팔릴 수도 있다. 그에 따라 기대 수익이 달라질 것이다. 만약 60%가 정가에 팔리고 그 때 권당 수익이 3천원이며, 나머지 40%가 세일 가격에 팔리고 그 때 권당 수익이 1천원이라면 A를 판매한 총수익은 22만원일 것이다. 그런데 정가에 판매되는 비율을 70%, 80%, 90%, 100%로 올리면 총수익이 어떻게 달라질까? 이러한 다양한 시나리오를 엑셀을 가지고 보여줄 수 있다.

먼저 기본 정보와 계산식을 가지고 데이터 시트를 작성한다(아래 그림 참조). 그림에서 C6 셀에는 =B3*C3을 넣고, C7 셀에는 =B3*(1-C3)를 넣는다. 총수익이 표시되는 D9에는 =(C6*D6)+(C7*D7)을 넣는다. 그런 다음 상단 메뉴에서 데이터-가상분석-시나리오 관리자를 연다.

위 창이 열리면 오른편 상단의 추가 단추를 눌러서 시나리오를 정의한다. 먼저 60%가 정가로 팔리는 시나리오를 “60% 정가”로 이름 붙이자. 변경 셀은 $C$3를 넣는다. 고정주소로 표기하자. 그리고 확인 단추를 누르면 변경 셀에 해당하는 값을 입력하라는 메시지가 뜬다. 0.6을 넣고 확인. 그러면 아래 그림처럼 60% 정가라는 시나리오가 정의되어 있을 것이다.

동일한 방식으로 70% 정가, 80% 정가, 90% 정가, 100% 정가 시나리오를 추가한다. 그러면 아래처럼 다섯가지 다른 시나리오가 정의될 것이다.

위 창에서 표시를 누르면 선택된 시나리오에 따라 계산 총수익이 표시된다. 예컨대 70% 정가를 선택하고 표시를 누르면 원래의 데이터 시트가 아래처럼 변할 것이다. 70%가 정가에 팔리면 총수익이 24만원이 된다.

이 시나리오들에 의해 예상되는 총수익을 한꺼번에 보여줄 수 있는 기능이 ‘요약’이다. 시나리오 관리자 창에 있는 요약 버튼을 누르고 시나리오 요약 창이 뜨면 보고서 종류를 선택하고 결과 셀에 $D$9을 넣는다. 그러면 아래 그림처럼 새 시트에 요약 보고서가 뜰 것이다. 정말 사용이 쉽다.

내친 김에 가상분석에 있는 ‘목표값 찾기’도 사용해 보자. 그 기능은 여러가지로 사용될 수 있지만 여기서는 위 사례에서 수익 28만원이 나려면 몇 %를 정가에 팔아야 하는가 하는 문제에 답을 찾아보자. 목표값 찾기를 클릭하여 나타난 창에 아래 그림과 같이 해당 값을 넣는다.

그러면 원 데이터 시트에서 C3 셀이 90%로 바뀔 것이다. 정가로 90%를 팔아야 28만원이 남는다는 말이다.

가상분석에서 다른 하나의 기능은 ‘데이터 표’이다. 이는 엑셀에게 계산식을 알려주고 입력값을 변경하면 결과값이 어떻게 달라지는 지를 보여달라는 명령이다. 예컨대 가격이 100원인 품목를 판매한다고 하자. 다양한 판매 개수에 따른 매출액을 제시할 수 있다. 5개를 팔면 500원이 나오는 계산식 =B1*B2을 E2에 넣는다. 그런 다음 계산을 원하는 품목 B의 개수를 D 열에 나열한다. 이제 D2부터 E6까지를 모두 선택한다. 메뉴에서 데이터-데이터표를 연다. 그리고 아래 그림처럼 B 품목의 개수가 있는 셀인 $B$1을 열에 넣는다. 그러면 원 데이터 시트의 E3부터 E6에 각 개수에 따른 판매액이 표시된다.

이상으로 엑셀의 가상분석(What-If Analysis)의 세 가지 기능을 살펴보았다. 이는 간단하지만 현업에 유용한 기능으로 생각된다. 이제 엑셀에 있는 좀 더 심각한 미래 예측 기능에 대해 알아보자.

Excel, 흔한, 그러나 편하고 강력한 데이터 분석 tool

세 해째 통계와 데이터과학 수업에 마이크로소프트 엑셀을 사용하면서 여러가지로 느끼는 게 많다. 아쉬운 점이 없지 않지만 이렇게 좋은 도구가 또 있을까 싶다. 어차피 업무에서 엑셀을 사용하니 소프트웨어를 구입해야 하는 비용 부담도 없고, 배우기 쉬울 뿐 아니라 업무에 필요한 기능을 대부분 갖추고 있다. 대규모 데이터를 다루는데 불편하고 종종 찾는 기능이 없어 당황하곤 하지만 말이다(비주얼 베이직 프로그래밍을 할 수 있다면 그런 경우가 훨 적을 것이다). 뭐 값비싼 다른 통계 전문 패키지를 사용한다고 해서 그런 불편이 없는 것도 아니니 그것이 꼭 엑셀만의 문제라고 할 수는 없다. 파이썬이나 R로 스스로 프로그래밍을 하지 않은 다음에야 피할 수 없는 문제이리라.

그렇게 놓고 보면 엑셀을 배우는데 들이는 투자는 가성비가 아주 높다. 그래서 데이터 분석에 엑셀을 어떻게 사용할 수 있는 지를 조금 소개해 볼까 한다.

먼저 미래 예측에 대한 기능을 보자. 미래 예측이라면 거창한 것 같지만 사실 현업에서는 알게 모르게 늘 하는 일이다. 다음 달(혹은 다음 분기나 내년도 좋다) 매출이 얼마나 될까? 투자액에 따라 성과가 얼마나 달라질까? 다음 주 A기업의 주가는? 향후 6개월 간 A기업의 주가는 어떻게 변할까? 뭐 그런 의문에 대해 답하는 일이 미래 예측에 다름 아니다.

놀랍게도 그 정도의 예측은 엑셀 가지고 훌륭히 해낼 수 있다. 내 수업에서 다룬 시나리오 예측, 선형회귀 모형 예측, 시계열 예측을 소개한다.

대학에서의 통계 교육

금년에 처음으로 기초 통계와 중급 통계를 두 학기에 걸쳐서 가르쳤다. 기초 과목에서는 기술통계를, 중급 과목에서는 추리통계를 다루었다. 기술통계에서는 데이터의 개념과 측정 수준 등에서부터 확률분포까지 수업했고, 추리통계에서는 기술통계를 복습하고 확률이론, 모수 추정, 가설 검증, 분산분석, 상관분석, 회귀분석까지 수업했다.

통상 사회과학 전공에서는 한 학기에 그 모든 내용을 다루는데 그것은 학생들과 교수자 모두에게 버거운 일이다. 두 학기로 나누어서 수업을 하니 절대 다수의 학생들이 수업에 따라 올 수 있도록 지도할 수 있었다. 거의 매주 퀴즈를 보고 다수의 학생들이 수업 내용을 이해하지 못한다고 판단이 들면 몇 번이고 반복해서 강의했다. 한 학기에 몰아서 할 때는 상상할 수 없었던 현상이다.