데이터과학을 위한 수학 복습(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와 코사인 유사도가 가장 큰 책을 추천할 것이다.