for textmining

LU factorization

|

이번 포스팅에선 LU 분해(LU factorization)에 대해 알아보도록 하겠습니다. 그에 앞서 LU factorization을 이해하기 위한 몇 가지 개념을 짚어보도록 하겠습니다. 이번 글은 고려대 박성빈 교수님한양대 이상화 교수님 강의를 참고했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

확대행렬, 기본행연산, 가우스행렬, 행상등, 역행렬…

우선 선형대수학의 기초 용어 몇 가지를 정의하고 넘어가겠습니다. 아래의 경우에는 제 개인적으로도 정리용도로 남겨두는 것이니 선형대수학이 생소하신 분들은 스킵하셔도 무방할 것 같습니다.

확대행렬(augmented coefficient matrix) : 1차 연립방정식의 계수와 상수항으로 이뤄진 행렬

가우스행렬/행사다리꼴(row-echelon matrix) : 다음 세 가지를 만족하는 행렬이다. (1) 영행이 있다면 그것은 영행이 아닌 행의 아래에 있다. (2) 영행이 아닌 행의 첫번째 0이 아닌 원소를 그 행의 선도원소(leading entry)라 하고 모든 선도원소는 1이다. (3) 영행이 아닌 연속된 두 행이 있을 때 각각 i번째 행과 i+1번째 행이라 한다면 i번째 행의 선도원소는 i+1번째 행의 선도원소보다 왼쪽에 있다(역계단모양)

추축열(pivot column) : 가우스행렬의 각 행별로 선도원소에 대응하는 열을 추축열이라 한다. (pivot=non-zero) 추축열의 수와 방정식의 수가 같아야 연립방정식의 해가 유일하다. 추축열은 가우스행렬 열벡터들이 만드는 열공간의 기저가 된다.

기약가우스행렬(reduced echelon matrix) : 가우스행렬 A에 대하여 i번째 행의 선도원소가 j번째 열에 있다면 j번째 열의 다른 모든 원소는 0이다(가우스행렬이면서 선도원소 위, 아래 모든 수가 0인 행렬)

아래 예시에서 A, B는 가우스행렬, C, D는 기약가우스행렬입니다. 가우스행렬이든 기약가우스행렬이든 구하는 이유는 선도원소에 해당하는 연립방정식의 해를 바로 찾을 수 있기 때문입니다. C는 x, y, z, 상수에서 도출한 확대행렬에서 얻어진 기약가우스행렬이라고 한다면, x의 해는 4, y=7, z=-1입니다.

[A=\begin{bmatrix} 1 & 0 & 2 & 3 \ 0 & 1 & 1 & 4 \ 0 & 0 & 0 & 1 \end{bmatrix},\quad B=\begin{bmatrix} 1 & 1 & 0 \ 0 & 1 & 0 \ 0 & 0 & 0 \end{bmatrix}\ C=\begin{bmatrix} 1 & 0 & 0 & 4 \ 0 & 1 & 0 & 7 \ 0 & 0 & 1 & -1 \end{bmatrix},\quad D=\begin{bmatrix} 1 & 0 & 0 \ 0 & 1 & 0 \ 0 & 0 & 1 \end{bmatrix}]

A에서 추축열은 1, 2열입니다. 선형대수학에서 추축열은 대단히 중요한 개념인데요, 해당 행렬의 열 벡터들이 만드는 열 공간(column space)기저(basis)가 되기 때문입니다. (열 공간과 기저는 추후에 살펴보겠습니다) A열의 추축열이 아닌 3열은 추축열인 1열을 2배한 뒤 2열을 더하면(선형결합으로) 만들어 낼 수 있습니다.

기본행연산(elementary row operation) : 임의의 확대행렬을 가우스행렬로 만드는 연산을 기본행연산이라고 한다. 기본행연산은 연립방정식의 소거법과 동일하다. 기본행연산에는 3개 방법이 있다. (1) 행 교환(row switching transformations) : 행 순서를 바꿔도 해(영공간)가 바뀌지 않는다. (2) 상수 곱셈(row-multiplying transformations) : 임의의 행 전체에 0이 아닌 상수를 곱해도 해가 바뀌지 않는다. (3) 한 행의 배수를 다른 행에 더함(row-addition transformations) : 임의의 행에 c배를 하고 이것을 다른 행에 더해도 해가 바뀌지 않는다.

행상등(row-equivalent) : 행렬 A에 기본행연산을 적용하여 행렬 B를 얻을 수 있는 경우 A와 B는 행상등이라고 한다.

단위행렬(identity matrix) : 주대각선이 전부 1이고 나머지 원소는 0을 값으로 갖는 n x n 정방행렬. 단위 행렬은 행렬곱셈의 항등원이다.

역행렬(inverse matrix) : n차 정방행렬 A에 대하여 AB=BA=I을 만족하는 행렬 B가 존재할 때 B를 A의 역행렬이라하고, 이때 A를 가역(invertible) 또는 정칙행렬이라 한다. 만일 이와 같은 B가 존재하지 않으면 A를 특이행렬(singular matrix)이라 한다.

위수(rank) : 행렬 A에 기본행연산을 적용하여 가우스행렬로 만들었을 때 영행이 아닌 행의 수를 위수라고 한다. 위수는 가우스행렬의 추축열의 수, 그리고 행렬 A의 차원(dimension) 수(기저의 수)와 일치한다.

자유변수(free variable) : 말 그대로 아무 값이나 가져도 되는 미지수. 임의의 가우스행렬 A의 위수가 열의 개수보다 작으면 자유변수가 1개 이상 존재한다.

기본행렬(elementary matrix) : 임의의 단위행렬에 대해 한 번의 기본행연산을 해서 얻어지는 행렬을 기본행렬(E)이라고 한다. 행렬 A에 E를 곱한 EA는 A에 기본행연산을 해서 얻은 행렬과 같다.

기본행렬과 관련한 예를 들어보겠습니다. 3x3 단위행렬의 첫번째 행에 3배를 해준 뒤 두번째 행에 더해준((3) 유형의 기본행 연산) 기본행렬 E는 아래와 같습니다. 이를 행렬 A에 같은 유형의 기본행연산을 한 직접 결과와 비교해 보면 정확하게 일치합니다.

[A=\begin{bmatrix} 1 & 2 & 3 \ 1 & 0 & 1 \ 1 & 1 & 2 \end{bmatrix},\quad E=\begin{bmatrix} 1 & 0 & 0 \ 3 & 1 & 0 \ 0 & 0 & 1 \end{bmatrix}\ EA=\begin{bmatrix} 1 & 0 & 0 \ 3 & 1 & 0 \ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} 1 & 2 & 3 \ 1 & 0 & 1 \ 1 & 1 & 2 \end{bmatrix}=\begin{bmatrix} 1 & 2 & 3 \ 4 & 6 & 10 \ 1 & 1 & 2 \end{bmatrix}\ A=\begin{bmatrix} 1 & 2 & 3 \ 1 & 0 & 1 \ 1 & 1 & 2 \end{bmatrix}\longrightarrow \begin{bmatrix} 1 & 2 & 3 \ 4 & 6 & 10 \ 1 & 1 & 2 \end{bmatrix}]

이상 논의를 종합하여 정리해보겠습니다.

Thorem : 임의의 행렬 A와 B가 행상등하면 행렬 B에 대해 유한번의 기본행연산을 해서(=유한개의 기본행렬을 곱해서) A를 얻을 수 있다. 모든 기본행렬은 역행렬이 존재(가역)이고, 그 역행렬 또한 기본행렬이다. 행렬 A에 대해 유한 번의 기본행연산을 하여 단위행렬 I를 얻을 수 있을 때(=A와 I가 행상등일 때) 같은 기본행연산을 I에 대해 적용하여 A의 역행렬을 구할 수 있다. n x n 행렬 A가 가역(역행렬이 존재)이면 nx1 벡터 B에 대한 행렬방정식 AX=B는 유일한 해를 갖는다. n x n 행렬 A가 단위행렬 I와 행상등이면 AX=0의 해는 유일하다. AX=0의 해가 유일하면 행렬 A는 단위행렬 I와 행상등이다.

또한 mxn 행렬 A와 n차원 벡터 x, m차원 벡터 b로 이뤄진 ‘Ax=b’에 대하여 아래 명제들은 서로 동치(logical equivalence)입니다. 즉, 모든 명제가 동시에 참이거나 동시에 거짓입니다.

Ax=b는 유일한 해를 갖는다.

b는 계수행렬 A의 열벡터의 선형결합으로 표시된다.

계수행렬 A의 열벡터는 m차원 실수공간을 생성(span)한다.

A는 모든 행에 pivot positon을 하나 가진다.

LU 분해

LU 분해란 기본행연산에 의해 단위행렬(indentity matrix)로 변환할 수 있는 임의의 행렬 A를 아래와 같이 하삼각행렬(Lower triangular matrix)상삼각행렬(Upper triangular matrix)의 곱으로 분해하는 것입니다.

[A=LU=\begin{bmatrix} 1 & 0 & 0 & 0 \ * & 1 & 0 & 0 \ * & * & 1 & 0 \ * & * & * & 1 \end{bmatrix}\begin{bmatrix} ▣ & * & * & * & * \ 0 & ▣ & * & * & * \ 0 & 0 & 0 & ▣ & * \ 0 & 0 & 0 & 0 & 0 \end{bmatrix}]

행렬 A에 대해 유한번(k)의 기본행연산을 수행해 가우스행렬로 변환한 것이 상삼각행렬 U입니다. 행렬 A에 대한 기본행연산은 A와 기본행렬의 곱으로 나타낼 수 있고, 기본행렬의 역행렬은 기본행렬이기 때문에 아래와 같이 쓸 수 있습니다.

[{ E }^{ k }{ E }^{ k-1 }{ E }^{ k-2 }…{ E }^{ 1 }A=U\ A={ ({ E }^{ k }{ E }^{ k-1 }{ E }^{ k-2 }…{ E }^{ 1 }) }^{ -1 }U=LU]

따라서 하삼각행렬 L은 행렬 A에 대한 기본행연산의 history가 되는 것입니다. 임의의 행렬 A에 대한 LU분해 결과는 유일함이 증명되어 있습니다.

LU 분해의 이점은 무엇일까요? 만일 A가 LU로 분해될 수 있으면 Ax=b라는 방정식은 LUx=b로 변환됩니다. Ux=y로 두면 Ax=b는 Ly=b로 고쳐 풀 수 있습니다. L과 U는 이미 미지수를 구하기 편하도록 정리된 형태이기 때문에 아무리 미지수가 많더라도 빠른 시간에 방정식의 해를 구할 수 있습니다.

해의 존재성 여부나 행렬식(determinant)도 빠르게 확인 가능합니다. 상삼각행렬이든 하삼각행렬이든 삼각행렬의 행렬식은 모든 대각성분의 곱과 같습니다. 따라서 A가 LU분해가 되어 있을 경우 A의 행렬식은 L의 행렬식과 U의 행렬식을 각각 L, U의 모든 대각성분을 곱해 간단히 구할 수 있습니다. A의 행렬식이 0인지 여부로 해의 존재성 여부도 확인할 수 있습니다. 아울러 삼각행렬은 역행렬 구하기도 쉽죠. 또 LU 분해는 특이값 분해 등 각종 행렬 분해와도 깊은 연관을 지니고 있습니다.

한편 지금까지는 LU 분해는 행 교환(row interchange)을 하지 않고 기본행연산을 수행했다는 가정 하에 설명을 드렸는데요. 행 교환 또한 행렬 곱 형태로 나타낼 수 있습니다. 예컨대 1행과 2행을 교환해주는 역할을 하는 3 x 3 크기의 permutraion matrix P는 다음과 같습니다.

[P=\begin{bmatrix} 0 & 1 & 0 \ 1 & 0 & 0 \ 0 & 0 & 1 \end{bmatrix}]

보시다시피 단위행렬(indentity matrix)와 거의 유사한 꼴을 지녔으나 1의 위치가 다소 다릅니다. permutation matrix의 특징은 아래와 같습니다.

  • 단위행렬과 행의 개수가 같다.
  • 모든 행과 열에 1이 단 한 개 존재한다.
  • 역행렬(=교환한 행을 원래대로 돌려놓는 역할 수행)은 그 전치행렬과 같다.

permutation matrix까지 고려하면 LU분해는 최종적으로 아래와 같이 쓸 수 있습니다.

[PA=LU\ A={ P }^{ T }LU]

Comment  Read more

Linear independence, Linear Transformation

|

이번 포스팅에서는 선형독립(linear independence)선형변환(linear transformation)에 대해 살펴보도록 하겠습니다. 이번 글 역시 고려대 박성빈 교수님 강의를 참고했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

선형독립과 선형종속

아래 조건을 만족하는 유한한 $n$개의 벡터는 선형종속(線型從屬, linear dependence)이라고 정의됩니다.

[S=\left{ { v }{ 1 },{ v }{ 2 },…,{ v }{ n } \right} 에\quad 대해\{ c }{ 1 }{ v }{ 1 }+{ c }{ 2 }{ v }{ 2 }+…+{ c }{ n }{v}{n}=0을\quad만족하는\0이\quad 아닌\quad { c }{ 1 },{ c }{ 2 },…,{ c }{ n }이\quad존재한다]

반대로 c가 모두 0일 때만 위 조건을 만족하는 경우에는 선형독립(線型獨立, linear independence)이라고 합니다. 그 정의에 의해 동차선형방정식(homogeneous linear equation) $Ax=0​$가 자명해($x=0​$)를 유일한 해로 가질 때 계수행렬(coefficient matrix) $A​$의 열벡터(column vector)들은 서로 선형독립입니다.

무슨 말인지 알쏭달쏭하시죠? 예를 들어보겠습니다. 다음과 같은 두 개의 1차 연립방정식이 있습니다.

[3{ x }{ 1 }+6{ x }{ 2 }=0\ 2{ x }{ 1 }+2{ x }{ 2 }=0​]

위 연립방정식의 계수행렬 $A​$는 아래와 같습니다. $A​$의 열벡터와 $x​$의 선형결합으로 위 연립방정식을 다시 표현한 것 또한 아래와 같습니다.

[A=\begin{bmatrix} 3 & 6 \ 2 & 2 \end{bmatrix},\quad x=\begin{bmatrix} { x }{ 1 } \ { x }{ 2 } \end{bmatrix}\ { x }{ 1 }\begin{bmatrix} 3 \ 2 \end{bmatrix}+{ x }{ 2 }\begin{bmatrix} 6 \ 2 \end{bmatrix}=\begin{bmatrix} 0 \ 0 \end{bmatrix}]

위 식을 살펴보면 $A$의 열벡터들을 선형결합해 영벡터를 만들기 위해선 $x_1$과 $x_2$가 동시에 0인 경우 말고는 해가 존재하지 않습니다. 이 경우 벡터 (3,2)와 (6,2)는 선형독립이라고 말할 수 있습니다. 그럼 아래의 경우는 어떨까요?

[{ x }{ 1 }\begin{bmatrix} 3 \ 1 \end{bmatrix}+{ x }{ 2 }\begin{bmatrix} 6 \ 2 \end{bmatrix}=\begin{bmatrix} 0 \ 0 \end{bmatrix}]

위와 같은 경우엔 식을 만족하는 $x$가 무수히 많습니다. (3,1)과 (6,2)는 동일한 직선 위에 있기 때문입니다. 이를 그림으로 보면 아래와 같습니다.

그럼 3차원에선 어떨까요? 아래와 같이 벡터 $u$, $v$가 주어졌을 때 $u$, $v$가 만드는 공간과 $w$가 선형독립일 필요충분조건은 무엇일까요? 답은 이렇습니다. $x_1$과 $x_2$가 어떤 값을 가지든 상관없지만 $x_3$는 반드시 0이어야 합니다. 이해를 돕기 위해 그림으로도 표현해보겠습니다.

[u=\begin{bmatrix} 3 \ 1 \ 0 \end{bmatrix},\quad v=\begin{bmatrix} 1 \ 6 \ 0 \end{bmatrix},\quad w=\begin{bmatrix} { x }{ 1 } \ { x }{ 2 } \ { x }_{ 3 } \end{bmatrix}]

linear dependence

벡터 $u$와 $v$는 평면을 생성(span)합니다. 하지만 $u$와 $v$의 어떤 조합으로도 $x_3$이 0이 아닌 벡터(상단 좌측 그림의 파란색 벡터)를 만들어 낼 수는 없습니다. $x_3$에 대응하는 세번째 요소가 $u$, $v$ 모두 0이기 때문입니다.

$x_3$이 0이 아니라면 $w$는 $u$, $v$가 만들어내는 평면에 속하지 않게 됩니다. 다시 말해 $w$와 Span{$u$, $v$}가 선형독립이라는 얘기입니다.

반대로 $x_3$가 0이면 $w$는 $u$, $v$가 만드는 평면에 속하게 됩니다. 바꿔 말하면 $w$가 $u$, $v$의 선형결합으로 표시할 수 있다는 얘기입니다.

벡터 요소의 수/벡터 개수와 선형독립과의 관계를 살펴보겠습니다. 벡터가 다음과 같이 주어졌다고 칩시다.

[a=\begin{bmatrix} 2 \ 1 \end{bmatrix},\quad b=\begin{bmatrix} 4 \ -1 \end{bmatrix},\quad c=\begin{bmatrix} -2 \ 2 \end{bmatrix}]

벡터 $b$와 $c$를 더하면 $a$와 같습니다. 즉 $a$, $b$, $c$는 서로 선형종속입니다.

한편 벡터의 요소 수(위의 경우 2)보다 벡터 숫자(위 예시에서 3)가 많으면 해당 벡터들은 선형종속 관계를 갖습니다. 이는 차원(dimension)기저(basis)와 연관되는 개념인데요, 이번 포스팅 주제를 넘어서므로 추후에 논의하도록 하겠습니다.

마지막으로 영벡터를 포함한 벡터 집합은 서로 선형종속 관계입니다. $v_1$을 0으로 놓으면(사실 $v_2$, $v_3$… 아무렇게나 지정해도 관계 없습니다) 아래와 같은 식이 성립하기 때문입니다.

[1{ v }{ 1 }+0{ v }{ 2 }+…+0{ v }_{ n }=0]

선형변환의 정의

아래 조건을 만족하는 매핑 함수 $T$를 Linear하다고 정의합니다. 즉 $T$는 선형변환(線型變換, linear transformation)입니다.

임의의 두 벡터 $v$, $w$에 대해 $T(v+w)=T(v)+T(w)$

임의의 스칼라 $a$와 벡터 $v$에 대해 $T(av)=aT(v)$

임의의 스칼라 $c, d$와 벡터 $u,v$에 대해 $T(cu+dv)=cT(u)+dT(v)$

지금까지 논의한 선형시스템(1차 연립방정식) $Ax=b$을 선형변환으로 이해할 수도 있습니다. 행렬 $A$가 m x n 크기이고, $x$가 $n$차원, $b$가 $m$차원 벡터라고 할 때 행렬 $A$는 $n$차원 벡터 $x$를 $m$차원 벡터 $b$로 변환하는 선형변환 함수라는 것이지요. 이를 그림으로 도시하면 아래와 같습니다.

선형변환 함수 $T$를 아래와 같이 정의했다고 합시다. 그러면 아래 그림과 수식처럼 2차원 벡터 (2, -1)은 3차원 벡터 (5, 1, -9)로 변환됩니다.

[T(x)=\begin{bmatrix} 1 & -3 \ 3 & 5 \ -1 & 7 \end{bmatrix}\begin{bmatrix} { x }{ 1 } \ { x }{ 2 } \end{bmatrix}]

선형변환 예시

그럼 이제부터 몇 가지 전형적인 선형변환과 그 행렬 형태를 살펴보도록 하겠습니다. 직관적으로 이해가능한데다 저도 보관 용도로 정리해두었으니 참고하시기 바랍니다.

reflections

contractions and expansions

shears

projections

Comment  Read more

Linearity, Linear combination

|

이번 포스팅에선 선형대수학(Linear Algebra)선형성(linearity), 선형결합(linear combination) 개념을 알아보도록 하겠습니다. 이번 글은 고려대 박성빈 교수님한양대 이상화 교수님 강의를 참고했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

선형성

선형성이란 직선처럼 똑바른 도형, 또는 그와 비슷한 성질을 갖는 대상이라는 뜻으로, 함수의 경우 그 모양이 ‘직선’이라는 의미로 사용됩니다. 수학에서 선형성의 정의는 다음과 같습니다. 임의의 수 x, y와 함수 f에 대해 아래 두 조건을 동시에 만족해야 합니다.

superposition : f(x+y) = f(x) + f(y)

homogeneity : 임의의 수 a에 대해 f(ax) = af(x)

위 조건을 만족하는 예로는 1차 다항함수(y=mx), 미분/적분연산 등이 있습니다. 또한 행렬과 벡터 곱셈(multiplication)도 선형성을 가집니다. 다만 여기서 주의해야할 것은 원점을 지나지 않는 직선의 방정식(예를 들면 y=2x+1)은 위 선형성 조건에 위배됨을 확인할 수 있습니다. 원점을 통과하지 않는 직선에 굳이 선형성을 정의하려면 x의 변화량과 y의 변화량에 선형성이 있다 정도로 언급해야 할 것입니다. 선형대수학은 기본적으로 선형성을 지닌 방정식이나 함수에 대해 다룹니다.

1차 연립방정식 풀이의 두 가지 접근

보통 고등학교 수학과정에선 두 개의 1차 연립방정식의 해를 찾을 때 2차원 사분면에 두 개 직선을 그려, 두 직선의 교점을 찾는 것으로 설명을 하곤 합니다. 다시 말해 아래 그림과 같습니다.

[3x-y=-2\ x+y=2]

위 직선의 방정식은 아래와 같이 고쳐쓸 수 있습니다. 자세히 보시면 두 방정식에서 x, y의 계수들을 각각 떼어서 벡터 (3,1), (-1,1)로, 상수항들을 묶어서 벡터 (-2,2)로 표현을 한 걸 알 수 있습니다. 미지수 x와 y는 각각 스칼라 값이므로 스칼라-벡터 곱의 정의에 의해 위 직선의 방정식과 아래 벡터 형태가 정확히 동일하다는 것 또한 확인 가능합니다.

[x\begin{bmatrix} 3 \ 1 \end{bmatrix}+y\begin{bmatrix} -1 \ 1 \end{bmatrix}=\begin{bmatrix} -2 \ 2 \end{bmatrix}]

위 식은 정확히 선형결합(linear combination) 정의에 맞는 식입니다. 선형결합이란 벡터들을 스칼라 곱과 벡터의 덧셈을 조합하여 새로운 벡터를 얻는 연산입니다. 스칼라-벡터 곱을 기하학적으로 생각하면 벡터의 길이를 키우거나 줄이는 걸로, 두 벡터의 덧셈은 두 벡터가 이루는 평행사변형의 대각선과 일치합니다. 위의 식의 세 벡터(x계수, y계수, 상수벡터)를 아래와 같이 2차원 평면 위에 그리면 아래 그림과 같습니다.

여기서 우리가 x, y 값을 구한다, 즉 1차 연립방정식의 해를 구한다는 건 빨간색 선과 파란색 선을 적절히 조합해 오렌지색 선으로 일치시키는 작업이라고 봐도 무방합니다. 다시 말해 1차 연립방정식의 해는 ‘직선의 방정식의 교점’으로도, ‘미지수 계수벡터의 선형결합으로 상수벡터를 표현’하는 방식으로도 모두 구할 수 있다는 이야기입니다. 이를 조금 더 확장해서 생각해보면, 위 연립방정식의 해가 존재한다는 것은 파란색 벡터가 오렌지색 벡터와 빨간색 벡터의 선형결합으로 표시될 수 있다는 걸 의미합니다. 반대로 해가 존재하지 않는다면 선형결합으로 나타낼 수 없다는 걸 뜻합니다. 이는 벡터공간(Vector space), 생성(span) 등 개념과 연결되는데 이 챕터의 범위를 넘어서므로 추후에 다시 논의하도록 하겠습니다.

1차 연립방정식 해 존재 여부

다음의 경우 1차 연립방정식의 해는 각각 존재하지 않거나 무수히 많습니다.

  • 두 직선이 평행(parallel)인 경우
  • 두 직선이 포개진(overlap) 경우

이를 계수벡터의 선형결합 관점에서 살펴보도록 하겠습니다. 이 역시 마찬가지입니다.

  • 두 계수벡터가 평행(parallel)인 경우
  • 두 계수벡터가 포개진(overlap) 경우

기하학적으로도 살펴볼까요? 미지수가 x, y, z 세개인 연립방정식을 푼다고 칩시다. 그러면 이 연립방정식의 해는 각각의 미지수에 해당하는 계수들의 벡터를 적절히 선형결합해 상수벡터와 일치시키면 구할 수 있습니다. 아래 그림에서는 빨간색 실선이 상수벡터인데요, x 계수벡터에 해당하는 오렌지색, y 계수벡터에 해당하는 연두색, z 계수벡터에 해당하는 파란색 선을 적절히 결합해서 빨간색 실선을 만들어내는 작업이 이 연립방정식의 해를 찾는 과정입니다.

위 그림처럼 네 가지 모든 벡터가 우연히 같은 평면 위에 있다고 칩시다. 그럼 사실 빨간색 상수벡터는 나머지 3개 중 2개 계수벡터만으로도 충분히 선형결합으로 만들어낼 수 있습니다. 3개 가운데 1개 벡터는 잉여라는 것이죠. 바꿔 말하면 잉여에 해당하는 열벡터의 미지수는 그 어떤 값을 가지더라도 빨간색 상수벡터를 만들어낼 수 있다는 뜻입니다. 이를 다른 표현으로 하면 해가 무수히 많다로 정리할 수 있겠네요.

그럼 다른 경우를 생각해보죠. 상수벡터가 실선이 아니라 빨간색 점선 벡터라고 생각해보세요. 이 경우에는 오렌지색, 연두색, 파란색 선을 어떻게 조합하더라도 절대 상수벡터를 만들어낼 수 없습니다. 이 경우엔 연립방정식의 해가 존재하지 않습니다.

Comment  Read more

NLP의 기본 절차와 Lexical Analysis

|

이번 포스팅에서는 자연언어처리의 기본 절차와 몇 가지 용어에 대해 살펴보도록 하겠습니다. 이번 포스팅은 기본적으로 고려대 강필성 교수님과 역시 같은 대학의 정순영 교수님 강의를 참고했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

자연언어처리의 기본 절차

자연언어처리의 전반적인 절차를 간략하게 시각화한 것은 위 그림과 같습니다. 자연언어처리는 우선 언어학을 근간으로 하고 있습니다. 주지하다시피 언어학은 말소리를 연구하는 음운론(Phonology), 단어형태소를 연구하는 형태론(Morphology), 문법과 맥락/담화를 각각 논의하는 통사론(syntax), 의미론(Senmantics) 등 세부 분야가 있는데요. 자연언어처리 절차와 단계도 이런 구분과 궤를 같이 합니다. 다시 말해 음성 인식, 형태소 분석, 파싱(문장의 문법적 구조 분석) 등이 각각 언어학의 음운/형태/통사론 등에 대응된다는 얘기입니다. 구체적인 분석 과정을 도표로 정리한 그림은 다음과 같습니다.

과정별로 나타낸 그림은 다음과 같습니다.

이번 글에서는 어휘분석(Morphological and lexcical analysis) 중심으로 이야기를 해보겠습니다.

어휘분석(Lexical Analysis)

어휘 분석을 한눈에 조망할 수 있는 그림이 바로 아래 예시입니다.

포스태깅(Part of speech)는 단어의 품사 정보를 결정하는 절차이며 개체명 인식(Named entity recognition)은 인명, 지명 등 고유명사를 분류하는 방법론입니다. 상호참조(co-reference)는 선행 단어/구를 현재 단어/구와 비교해 같은 개체인지를 결정하는 문제입니다. 의존관계 분석(basic dependencies)은 성분에 따라 문장구조를 정의하는 구구조문법(생성문법 기반)과 달리 단어와 다른 단어가 가지는 의존관계를 중시해 문장 구조를 분석하는 방법입니다. 이들 넷은 모두 어휘분석의 하위 범주로 언어학, 통계학, 수학, 컴퓨터사이언스 등 다양한 분야의 학자들이 꽤 많은 성과를 낸 영역입니다. 사실 자연언어처리는 이들 영역이 모두 겹쳐있는 융합학문입니다.

어휘분석 절차

이번 챕터에서는 어휘분석 절차에 대해 이야기해보겠습니다. 크게 문장분리(sentence splitting), 토크나이즈(tokenize), Morphological analysis, 포스태깅 네 단계로 나뉩니다.

Sentence splitting

컴퓨터 입장에서 말뭉치(corpus)는 의미없는 글자들의 나열일 겁니다. 우선 이를 문장 단위로 끊어서 입력해야 합니다. 일반적으로는 마침표(.)나 느낌표(!), 물음표(?) 등 기준으로도 충분히 문장분리를 잘 수행할 수 있습니다. 하지만 토픽모델링 같은 특정 알고리즘이나 방법론의 경우 문장분리를 반드시 수행하지 않아도 됩니다.

Tokenize

토큰(token)이란 의미를 가지는 문자열을 뜻합니다. 토큰은 형태소(뜻을 가진 최소 단위)나 그보다 상위 개념인 단어(자립하여 쓸 수 있는 최소 단위)까지 포함합니다. 토크나이징(tokenizing)이란 문서나 문장을 분석하기 좋도록 토큰으로 나누는 작업입니다. 영어의 경우 공백만으로도 충분히 토큰을 나눌 수 있다고 합니다. 물론 ‘-‘(state-of-the-art vs state of the art)이나 합성어(Barack Obama) 등 처리를 세밀히 해줘야 하는 문제가 남아있긴 하지만요. 띄어쓰기를 거의 하지 않는 중국어의 경우 토큰 분석 작업이 난제로 꼽힙니다.

Morphological analysis

Text Normaization이라고 불리기도 합니다. 토큰들을 좀 더 일반적인 형태로 분석해 단어수를 줄여 분석의 효율성을 높이는 작업입니다. 예컨대 ‘cars’와 ‘car’, ‘stopped’와 ‘stop’을 하나의 단어로 본다던지 하는 식입니다. 영어에선 대문자를 소문자로 바꿔주는 folding도 이와 관련된 중요한 작업이라고 하네요. stemminglemmatization이라는 작업도 있습니다. stemming이란 단어를 축약형으로 바꿔주는 걸 뜻하고, lemmatization은 품사 정보가 보존된 형태의 기본형으로 변환하는 걸 말합니다. 아래 표가 두 기법 차이를 잘 드러내고 있습니다.

Word stemming lemmatization
Love Lov Love
Loves Lov Love
Loved Lov Love
Loving Lov Love
Innovation Innovat Innovation
Innovations Innovat Innovation
Innovate Innovat Innovate
Innovates Innovat Innovate
Innovative Innovat Innovative

Part-Of-Speech Tagging

포스태깅이란 토큰의 품사정보를 할당하는 작업입니다. 지금까지 많은 방법론들이 개발되었는데요. 의사결정나무(Decision Trees), 은닉 마코프 모델(Hidden Markov Models), 서포트벡터머신(Support Vector Machines) 등이 여기에 해당합니다. KoNLPy 같은 한국어 기반의 포스태거들은 문장분리, 토크나이즈, lemmatization, 포스태깅에 이르기까지 전 과정을 한꺼번에 수행해 줍니다.

하지만 조사, 어미가 발달한 한국어의 경우 정확한 분석이 정말 어렵습니다. 한국어는 교착어 성질을 지니는 언어이기 때문입니다. 즉 어근에 파생접사나 어미가 붙어서 단어를 이룹니다. 바꿔 말하면 한국어를 분석할 때 어근과 접사, 어미를 적절하게 나누어야 하는데, 이게 쉽지 않다는 얘기입니다. 예를 들면 이렇습니다.

깨뜨리시었겠더군요.

여기에서 ‘깨-‘는 어근이며, ‘-뜨리-‘는 접사로서 ‘힘줌’의 뜻을 나타냅니다. ‘-시-‘는 높임, ‘-었-‘, ‘-겠-‘, ‘-더-‘는 모두 시간을 보이는 어미들이며, ‘-군-‘은 감탄의 뜻을 나타내는 어미, ‘-요’는 문장을 끝맺는 어미입니다. 위 문장을 제대로 분석하려면 8개 형태소로 쪼개야 합니다. 매우 고된 작업이지요.

마치며

이상으로 자연언어처리의 기본 절차를 어휘분석 중심으로 살펴보았습니다. 정리하면서 느낀 건데 단어와 형태소 분석이 자연언어처리의 기본 중 기본 아닐까 하는 생각이 듭니다. 이 작업이 신통치 않다면 이를 기반으로 하는 파싱(문장 구조 분석) 등 이후 과정의 신뢰도가 무너지게 될 겁니다. 더 나은 방법이 없을까 늘 고민해보겠습니다. 여기까지 읽어주셔서 감사합니다.

Comment  Read more

선형판별분석(Linear Discriminant Analysis)

|

이번 포스팅에선 선형판별분석(Linear Discriminant Analysis : LDA)에 대해서 살펴보고자 합니다. LDA는 데이터 분포를 학습해 결정경계(Decision boundary)를 만들어 데이터를 분류(classification)하는 모델입니다. 이번 글은 기본적으로 고려대 강필성 교수님, 김성범 교수님 강의를 참고로 했음을 먼저 밝힙니다. 자, 그럼 시작하겠습니다.

LDA의 배경과 목적

LDA는 아래 그림처럼 데이터를 특정 한 축에 사영(projection)한 후에 두 범주를 잘 구분할 수 있는 직선을 찾는 걸 목표로 합니다. 모델 이름에 linear라는 이름이 붙은 이유이기도 합니다.

왼쪽과 오른쪽 축 가운데 분류가 더 잘 됐다고 판단할 수 있는 축은 무엇일까요? 딱 봐도 오른쪽이 좀 더 나아보입니다. 빨간색 점과 파란색 점을 분류하는 걸 목표로 했는데 왼쪽 그림에 나타난 축은 중간에 빨간색과 파란색 점이 뒤섞여 있기 때문이지요. 반대로 오른쪽 그림은 색깔이 서로 다른 점들이 섞이지 않고 비교적 뚜렷하게 구분되고 있는 점을 확인할 수 있습니다. 녹색 축을 따라서 같은 위치에 있는 점들의 빈도를 세어서 히스토그램처럼 그리면 바로 위와 같은 그림이 됩니다.

그렇다면 두 범주를 잘 구분할 수 있는 직선은 어떤 성질을 지녀야 할까요? 사영 후 두 범주의 중심(평균)이 서로 멀도록, 그 분산이 작도록 해야할 겁니다. 왼쪽 그림을 오른쪽과 비교해서 보면 왼쪽 그림은 사영 후 두 범주 중심이 가깝고, 분산은 커서 데이터가 서로 잘 분류가 안되고 있는 걸 볼 수가 있습니다. 반대로 오른쪽 그림은 사영 후 두 범주 중심이 멀고, 분산은 작아서 분류가 비교적 잘 되고 있죠. LDA는 바로 이런 직선을 찾도록 해줍니다.

LDA에 대한 첫번째 접근

자, 그럼 이제 본격적으로 LDA에 대해 알아볼까요? $p$차원의 입력벡터 $x$(변수 $p$개)를 $w$라는 벡터(축)에 사영시킨 후 생성되는 1차원상의 좌표값(스칼라)를 아래와 같이 $y$라고 정의합니다. 각각 $N_1$개와 $N_2$개의 관측치를 갖는 $C_1$과 $C_2$ 두 범주에 대해 원래 입력공간(2차원)에서 각 범주의 중심(평균) 벡터도 아래와 같이 $m_1$, $m_2$라고 정의합니다.

[y={ \overrightarrow { w } }^{ T }\overrightarrow { x } \ { m }{ 1 }=\frac { 1 }{ { N }{ 1 } } \sum { n\in { C }{ 1 } }^{ }{ { x }{ n } } \ { m }{ 2 }=\frac { 1 }{ { N }{ 2 } } \sum _{ n\in { C }{ 2 } }^{ }{ { x }_{ n } }]

일단 사영후 두 범주의 중심이 멀리 떨어져 위치하는 벡터 $w$를 찾아야 합니다. 각 중심과 $w$와의 관계식은 아래와 같습니다.

[{ m }{ 2 }-{ m }{ 1 }={ w }^{ T }({ m }{ 2 }-{ m }{ 1 })\ { m }{ k }={ w }^{ T }{ m }{ k }]

사영 후 각 범주에 속한 관측치들은 해당 범주 중심에 가까이 있을 수록 좋습니다. 다시 말해 분산이 작아야 한다는 겁니다. 사영 후 분산은 아래 식과 같습니다.

[{ s }{ k }^{ 2 }=\sum _{ n\in { C }{ k } }^{ }{ { ({ y }{ n }-{ m }{ k }) }^{ 2 } }]

두 범주의 중심은 최대화하고, 분산은 최소화하는 게 우리의 목표입니다. 동시에 한꺼번에 할 수는 없을까요? 간단한 방법이 있습니다. 두 범주 중심을 분자, 두 범주의 분산을 분모에 넣고 이 식을 최대화하는 겁니다. 이를 행렬 형태의 목적함수로 나타내면 다음과 같습니다.

[J(w)=\frac { { ({ m }{ 1 }-{ m }{ 2 }) }^{ 2 } }{ { s }{ 1 }^{ 2 }+{ s }{ 2 }^{ 2 } } =\frac { { w }^{ T }{ S }{ B }w }{ { w }^{ T }{ S }{ W }w } \ { S }{ B }=({ m }{ 1 }-{ m }{ 2 }){ ({ m }{ 1 }-{ m }{ 2 }) }^{ T }\ { S }{ W }=\sum { n\in { C }{ 1 } }^{ }{ ({ x }{ n }-{ m }{ 1 }){ ({ x }{ n }-{ m }{ 1 }) }^{ T } } +\sum { n\in { C }{ 2 } }^{ }{ ({ x }{ n }-{ m }{ 2 }){ ({ x }{ n }-{ m }{ 2 }) }^{ T } }]

목적함수 $J(w)$은 $w$에 대해 미분한 값이 0이 되는 지점에서 최대값을 가집니다. 아래 식과 같습니다.

[({ w }^{ T }{ S }{ B }w){ S }{ W }w=({ w }^{ T }{ S }{ W }w){ S }{ B }w]

그런데 위 식에서 괄호 안은 계산해보면 스칼라가 됩니다. 각각의 차원수를 고려하면 (1Xd) (dXd) (dX1)이 되기 때문입니다. 그럼 위 식 양변을 좌변 괄호안의 스칼라값으로 나누어 약간 정리를 하면 아래와 같은 형태가 됩니다.

[{ S }{ W }w=\lambda { S }{ B }w\ { { S }{ B } }^{ -1 }{ S }{ W }w=\lambda w]

이 식 어디서 많이 보시지 않았나요? 네 그렇습니다. 바로 고유값, 고유벡터 구할 때 바로 그 $AX=λX$ 꼴입니다. 즉 새로운 축 $w$는 $S_B$의 역행렬과 $S_W$를 내적한 행렬의 고유벡터라는 이야기죠.

자, 그럼 여기서 $S_B$와 $S_W$는 어떻게 구할까요? 각각 우리가 가진 데이터의 평균과 분산입니다. 데이터로부터 구할 수 있다는 이야기죠. 이 행렬을 고유값분해하여 새로운 축 $w$를 구할 수 있습니다.

이를 가지고 예측은 어떻게 할까요? 새로운 데이터($x’$)가 주어지면 이를 $w$와 내적해 각각의 스코어를 낼 수 있습니다. 그 스코어가 일정값보다 크면 $C_1$범주, 작으면 $C_2$ 범주로 분류를 하게 됩니다.

LDA에 대한 두번째 접근

LDA를 확률모형으로부터 도출할 수도 있습니다. 베이즈 룰(Bayes’ Rule)을 이용한 방식입니다. 베이즈 룰 관련 자세한 내용은 이곳을 참고하시면 좋을 것 같습니다. 그럼 베이즈 룰을 활용해 LDA를 구현해보도록 할까요? 범주가 두 개($W_1$, $W_2$) 있다고 가정해보죠. 이를 그림으로 나타내보면 아래처럼 될 겁니다.

우선 데이터($X$)로부터 사전확률 $P(W_1)$, $P(W_2)$을 구합니다. 어떻게 구하느냐고요? 범주가 $W_1$인 데이터 개수, $W_2$인 데이터 개수를 각각 전체 데이터 개수로 나눠주면 됩니다. 우리가 하고 싶은 건 이겁니다. 새로운 데이터 $x$가 주어졌을 때 이게 어떤 클래스에 속하는지 알아맞혀 보려고 하는 것이죠. 이를 지금까지 논의한 내용을 바탕으로 식을 쓰면 아래와 같이 됩니다.

[\begin{align} P({ W }_{ i }|x)&=\frac { P(x|{ W }_{ i })P({ W }_{ i }) }{ P(x) } \ &=\frac { P(x|{ W }_{ i })P({ W }_{ i }) }{ P(x|{ W }_{ 1 })P({ W }_{ 1 })+P(x|{ W }_{ 2 })P({ W }_{ 2 }) } \end{align}]

새로운 데이터 $x$가 등장하면 LDA 모델은 P($W_1$|x)와 P($W_2$|x)를 각각 구합니다. 둘 중 전자가 크면 $W_1$으로, 후자가 크면 $W_2$로 분류를 하게 되는 방식입니다. 사후확률인 P($W_i$|x)는 새로운 데이터 $x$가 주어졌을 때(=정답 범주를 모를 때=예측할 때) $W_i$일 확률, 즉 검증데이터가 특정 범주에 할당하기 위한 스코어를 의미합니다. 범주 분류를 위한 확률(스코어)를 내어주는 함수를 판별함수(discriminant function)라고 합니다.

LDA의 중요한 가정은 데이터 분포가 다변량 정규분포(multivariate normal distribution)을 따른다는 사실입니다. 많은 자연, 사회현상이 정규분포를 따르고 있고 그 예측력 또한 많은 실험을 통해 검증된 연속확률분포입니다. 다변량 정규분포의 파라메터는 평균(벡터)와 공분산(행렬)입니다. 이 두 파라메터와 정규분포 확률함수로 P(x|$W_i$)를 구할 수 있고, 이를 우리가 이미 알고 있는 사전확률 $P(W_i)$과 함께 계산해 범주를 판별한다는 것이 LDA를 베이지안 관점에서 접근하는 방식의 핵심입니다.

마치며

자, 그럼 복기를 해볼까요? 두번째 챕터에서 설명드린 두 범주의 데이터를 가장 잘 분류하는 새로운 축인 $w$는 두 범주의 평균 벡터의 차이를 분자, 두 범주 분산의 합을 분모로 두고 이 식을 최대화하는 과정에서 도출됩니다. 미지수 $w$로 미분을 해서 0이 되는 지점이 이 식을 최대화하는 지점입니다. 베이지안 법칙 관점에서는 사후확률 P($W_1$|x)와 P($W_2$|x)가 같은 지점을 결정경계로 놓고 식을 도출하게 되는데요, 이것이 결과적으로는 첫번째 방식인 $w$로 미분을 해서 0이 되는 지점과 본질적으로 같게 돼서 두 접근이 사실상 같은 결과를 내는 것을 확인할 수 있습니다. 두 접근 모두 데이터의 분포가 $p$차원의 다변량 정규분포를 따른다는 전제가 내재돼 있습니다.

LDA로 두 개 범주를 분류한 부분은 좌측 상단 그림과 같습니다. 두번째 접근에서 각 범주의 공분산행렬이 동일하다는 가정을 하고 식을 정리하면 $Ax+b=0$ 꼴의 선형식이 된다고 설명을 했는데요. 실제로 결정경계가 직선임을 시각적으로도 확인할 수 있습니다. 그런데 공분산이 다르다고 놓고 식을 정리하면 $Ax^2+Bx+c=0$ 꼴의 Quadratic form이 됩니다. 그래서 우측 상단 그림을 보면 결정경계가 비선형인 모양을 볼 수 있습니다.

LDA이든 QDA이든 학습데이터의 정보를 압축해 데이터 분류를 위한 결정경계를 만들어낸다는 점에서 본질적으로 동일합니다. 학습데이터의 패턴만 가지고도 충분히 좋은 예측모델을 만들어낼 수 있다는 얘기입니다. 질문이나 제언 있으시면 언제든지 댓글, 이메일로 알려주시기 바랍니다. 여기까지 읽어주셔서 대단히 감사합니다.

Appendix : 두번째 접근의 수식 도출

LDA를 베이지안 관점에서 접근하는 방식과 관련해 수식을 유도해 보겠습니다. 저 역시 정리 용도로 남겨두는 것이니 스킵하셔도 무방합니다.

정규분포를 따르는 $N$개 데이터가 $k$개 범주로 구성돼 있는 $p$차원(변수 개수=$p$개)의 데이터 $X$의 평균과 공분산은 각각 아래와 같습니다. 평균벡터의 요소는 각각 변수 관측치의 평균입니다. 예컨대 $μ_1$은 데이터 첫번째 변수의 평균입니다. 마찬가지로 공분산행렬의 요소는 각각 변수 관측치의 공분산입니다. σ12는 첫번째 변수와 두번째 변수의 공분산, 즉 $cov(X_1, X_2)$입니다.

[\mu =\begin{bmatrix} { \mu }{ 1 } \ … \ { \mu }{ p } \end{bmatrix}\ \Sigma =\begin{bmatrix} { \sigma }{ 11 } & … & { \sigma }{ 1p } \ … & … & … \ { \sigma }{ p1 } & … & { \sigma }{ pp } \end{bmatrix}]

위 두 개 파라메터만 알고 있으면 아래와 같이 이미 정의돼 있는 다변량 정규분포 확률함수로 P(x|$W_i$)를 구할 수 있게 됩니다. 그렇다면 P(x|$W_i$)의 의미는 무엇일까요? 범주정보가 주어졌을 때(=정답 범주를 알고 있을 때=학습할 때) $x$가 나타날 확률, 즉 학습데이터 내에 있는 $W_i$의 분포가 됩니다. P(x|$W_i$)는 다음과 같습니다. ($p$는 데이터 변수 개수)

[P(X=x { W }_{ i })=P(x { W }_{ i })=\frac { 1 }{ { (2\pi ) }^{ p/2 }{ \left { \Sigma }_{ i } \right }^{ 1/2 } } \exp\left[ -\frac { 1 }{ 2 } { (x-{ \mu }{ i }) }^{ T }{ { \Sigma }{ i } }^{ -1 }(x-{ \mu }_{ i }) \right]]

판별함수 $σ$는 새로운 데이터 $x$에 대해 범주(클래스)를 할당해주는 역할을 하는데요, 범주 개수($k$개)만큼의 판별함수가 필요하게 됩니다. 새로운 데이터에 대해 가장 큰 확률값을 내어주는 범주로 분류하게 됩니다. 판별함수 식은 아래와 같습니다.

[\begin{align} { \sigma }_{ i }(x)&=P({ W }_{ i }|x)\ &\propto P(x|{ W }_{ i })P({ W }_{ i })\ &\propto \ln { P(x|{ W }_{ i }) } +\ln { P( W }_{ i })
\end{align
}]

위의 판별함수 계산에서 유의할 부분은 $P(x)$를 나눠주는 부분을 생략해도 된다는 점입니다. $k$개 판별함수의 분모는 $P(x)$로 동일하고, 범주 예측엔 판별함수 결과값 크기만 중요하기 때문에 분모를 생략해 계산상 이득을 취하기 위해서입니다. 이 식에 자연로그를 취해도 판별함수 간 크기는 달라지지 않기 때문에 계산상 편의를 위해 로그변환을 한 것이 위 식 마지막 결과입니다.

위 식 P(x|$W_i$)에 다변량 정규분포의 확률함수를 대입해 정리하면 아래와 같습니다. \(\begin{align*}ln { P(x|{ W }_{ i }) } &= \ln { \frac { 1 }{ { (2\pi ) }^{ p/2 }{ \left| { \Sigma }_{ i } \right| }^{ 1/2 } } } -\frac { 1 }{ 2 } { (x-{ \mu }_{ i }) }^{ T }{ { \Sigma }_{ i } }^{ -1 }(x-{ \mu }_{ i })\\ &=\ln { \frac { 1 }{ { (2\pi ) }^{ p/2 } } } +\ln { \frac { 1 }{ { \left| { \Sigma }_{ i } \right| }^{ 1/2 } } } -\frac { 1 }{ 2 } { (x-{ \mu }_{ i }) }^{ T }{ { \Sigma }_{ i } }^{ -1 }(x-{ \mu }_{ i })\\ &=-\frac { p }{ 2 } \ln { 2\pi } -\frac { 1 }{ 2 } \ln { \left| { \Sigma }_{ i } \right| } -\frac { 1 }{ 2 } { (x-{ \mu }_{ i }) }^{ T }{ { \Sigma }_{ i } }^{ -1 }(x-{ \mu }_{ i }) \end{align*}\)

위 식을 자세히 보시면 미지수가 하나도 없는 상수라는 점을 확인할 수 있습니다. 데이터 $x$는 물론 변수 개수인 $p$, $π$, $Σ$, 평균까지 이미 우리가 다 알고 있는 값들이기 때문입니다. 이 값들을 위 식에 넣어서 계산하기만 하면 P(x|$W_i$)를 바로 구할 수 있습니다. 한편 나머지 $P(W_i)$는 i번째 범주의 개체 수를 전체 데이터 수로 나눠서($N_i/N$) 바로 구할 수 있습니다.

그럼 이제 결정경계(decision boundary)를 살펴보겠습니다. 범주가 두 개일 때를 예를 들어보죠. 판별함수 $σ_1$과 $σ_2$의 값이 같은 지점이 바로 분류 경계면이 될 겁니다. $σ_1$이 조금이라도 크면 $W_1$ 범주, 반대 상황이면 $W_2$ 범주로 분류되기 때문입니다. 이를 위 식을 기준으로 넣어서 정리하면 아래와 같은 식이 됩니다.

[\begin{align} { \sigma }_{ 1 }(x)-{ \sigma }_{ 2 }(x)&=0 \ -\frac { p }{ 2 } \ln { 2\pi } -\frac { 1 }{ 2 } \ln { \left| { \Sigma }_{ 1 } \right| } -\frac { 1 }{ 2 } { (x-{ \mu }_{ 1 }) }^{ T }{ { \Sigma }_{ 1 } }^{ -1 }(x-{ \mu }_{ 1 })+\ln { P({ W }_{ 1 }) } \-(-\frac { p }{ 2 } \ln { 2\pi } -\frac { 1 }{ 2 } \ln { \left| { \Sigma }_{ 2 } \right| } -\frac { 1 }{ 2 } { (x-{ \mu }_{ 2 }) }^{ T }{ { \Sigma }_{ 2 } }^{ -1 }(x-{ \mu }_{ 2 })+\ln { P({ W }_{ 2 }) } )&=0\ { (x-{ \mu }_{ 1 }) }^{ T }{ { \Sigma }_{ 1 } }^{ -1 }(x-{ \mu }_{ 1 })-{ (x-{ \mu }_{ 2 }) }^{ T }{ { \Sigma }_{ 2 } }^{ -1 }(x-{ \mu }_{ 2 })-\ln { \frac { \left| { \Sigma }_{ 2 } \right| }{ \left| { \Sigma }_{ 1 } \right| } } +2\ln { \frac { P({ W }_{ 1 }) }{ P({ W }_{ 2 }) } } &=0 \end{align}]

뭔가 식이 엄청 복잡해보이죠? 일단은 범주 각각의 분산이 동일하다고 가정해보겠습니다. 그러면 둘의 분산은 합동분산(pooled variance) 공식에 의해 아래와 같이 같이 쓸 수 있습니다.

[{ \Sigma }{ 1 }={ \Sigma }{ 2 }={ \Sigma }=\left[ \frac { { n }{ 1 }-1 }{ ({ n }{ 1 }-1)+({ n }{ 2 }-1) } \right] { \Sigma }{ 1 }+\left[ \frac { { n }{ 2 }-1 }{ ({ n }{ 1 }-1)+({ n }{ 2 }-1) } \right] { \Sigma }{ 2 }]

이를 판별함수 식에 넣어 정리하면 아래와 같습니다.

[{ { (\mu }{ 1 }-{ \mu }{ 2 }) }^{ T }{ \Sigma }^{ -1 }x-\frac { 1 }{ 2 } { { (\mu }{ 1 }-{ \mu }{ 2 }) }^{ T }{ \Sigma }^{ -1 }{ { (\mu }{ 1 }+{ \mu }{ 2 }) }-\ln { \frac { P({ W }{ 1 }) }{ P({ W }{ 2 }) } } =0]

위 식은 복잡해보이지만 자세히 뜯어보면 $Ax+b=0$의 선형식(linear equation)이 됩니다. $x$를 제외하면 미지수가 전혀 없는 상수항이기 때문입니다. 결정경계가 직선 모양이라는 뜻인데요. 이 상수항들은 모두 학습데이터의 패턴이 녹아들어 있는 결과입니다. 위 식에 $x$를 넣어 0보다 큰 값이 나오면 $W_1$ 범주, 그렇지 않으면 $W_2$ 범주로 분류하는 방식입니다.

한편 $Σ_1$과 $Σ_2$가 각각 다르다고 놓고 풀면 아래와 같은 식이 됩니다.

[-\frac { 1 }{ 2 } { x }^{ T }({ { \Sigma }{ 1 } }^{ -1 }-{ { \Sigma }{ 2 } }^{ -1 })x+({ \mu }{ 1 }{ { \Sigma }{ 1 } }^{ -1 }+{ \mu }{ 2 }{ { \Sigma }{ 2 } }^{ -1 })x-\frac { 1 }{ 2 } ({ \mu }{ 1 }^{ 2 }{ { \Sigma }{ 1 } }^{ -1 }-{ \mu }{ 2 }^{ 2 }{ { \Sigma }{ 1 } }^{ -1 })+\frac { 1 }{ 2 } \ln { \frac { \left { \Sigma }_{ 2 } \right }{ \left { \Sigma }_{ 1 } \right } } -\ln { \frac { P({ W }{ 1 }) }{ P({ W }{ 2 }) } } =0]

위 식도 자세히 보면 $Ax^2+bx+c=0$의 2차식 형태입니다. 따라서 결정경계는 곡선 형태가 됩니다.

Comment  Read more