1.벡터를 배우는 이유?

Data Science에 꼭 필요한 수학과목 : 선형대수학

데이터 사이언스를 공부한다면 선형대수학을 필수적으로 알아야 합니다. 첫번째 이유는 선형대수학을 통해 (1)데이터를 벡터(vector)로 표현할 수 있고, 두번째 이유는 (2)벡터의 모임인 행렬을 통해 방정식 연산을 훨씬 빠르게 할 수 있기 때문입니다. (아직 이해가 안가신다면 후에 예제를 통해 이 말이 무슨 뜻인지 알아볼테니 잠시만 기다려주세요.) 


저는 학부에서 경영학을 전공했기 때문에 경영수학만 수강하여 위 두 과목을 제대로 배우지지 못하였습니다. 따라서 제 입장에서 방학동안에 어떻게 하면 선형대수학을 효과적으로 들을 수 있을까 고민하다가 Coursera의 Mathematics for Machine Learning Specialization 강좌를 들었습니다. 듣고 난 소감을 한마디로 정리하자면 '매우 만족!' 입니다. 


 



이 강좌에 매우 만족했던 이유 자주 사용하는 알고리즘의 수학 기초만 알려주기 때문입니다. 코딩, 데이터 사이언스 알고리즘만 공부하기에도 시간이 부족하기 때문에 이처럼 필요한 부분만 족집게처럼 알려주는 강좌는 그 동안 제가 꼭 찾던 강좌였습니다. USD 49$를 내면 코딩 assignment도 풀 수 있기에 돈이 아깝지 않은 선택이 될 것입니다. 


며칠동안 힘들게 배웠던 선형대수학을 까먹지 않기 위해서 이를 전체적으로 정리해보려 합니다! 혹 제가 잘못 알고 있는 부분이 있다면 따끔히 지적해주세요 ^^


(1) 데이터 → 벡터로 표현 : 2가지 장점

선형대수학을 배워야 하는 첫번째 이유로 '데이터를 백터로 표현할 수 있기 때문'이라고 말씀드렸는데요.  좀 더 자세히 말씀드리면, Data들을 표현하는 '특징(feature)'을 선형대수학의 기본 단위인 vector로 나타낼 수 있습니다. 따라서 선형대수학을 잘하면 벡터와 벡터들의 집합인 행렬을 잘 다룰 수 있습니다. 그렇다면 왜 데이터를 벡터로 다루어야 할까요? 그건 2가지 장점이 있기 때문입니다.  

1번째 장점 : 데이터의 특징을 벡터로 쉽게 표현가능

데이터를 벡터로 표현하는 예를 들어보겠습니다.

 


이 사진에서는 '자동차 1대'라는 데이터를 '가격, 속도, 연비 등'의 피처 5개로 표현하였습니다. 단순히 피처 5개를 목록화 시켜놓은 것이기 때문에 데이터 사이언스에서는 '벡터' = '피처의 리스트(목록)'이라고 생각하셔도 무방합니다. 


2번째 장점 : 데이터 표현 식을 찾는데 도움이 되기 때문에

벡터를 만들면 좋은 점 또 한가지는 데이터들을 표현하는 식(equation)을 찾는데 좌표계를 이용하여 식을 찾기 위한 지도를 만들 수 있다는 점입니다. 무슨 말인지 모르시겠죠? 예를 들어 알아보겠습니다. 아래의 그림은 사람들의 키를 표현한 히스토그램입니다.

 


만약 이 히스토그램의 모양을 나타내는 하얀색 선을 '함수'로 나타낸다면, 이 키라는 데이터를 다 가지고 다니지 않아도 되므로 매우 간편합니다. 하지만 현재 제가 가지고 있는 건 이 빨간색 막대로 표현되는 데이터밖에 없고, 하얀색 선이 매우 구불구불하여 하얀색 선을 표현하는 식을 찾기가 어렵다면 식을 제가 예상해 본 뒤, 데이터들과의 차이가 얼마나 나는지 계산하여 가장 차이가 적은 '함수'를 찾을 수 밖에 없습니다.





다시 위의 '키 분포' 예제로 돌아가 보겠습니다. 데이터의 분포를 나타내는 가장 중요한 통계량(statistic, 위의 빨간색 히스토그램의 자료들은 샘플링의 결과라고 가정할께요!)은 평균분포입니다. 



위 사진의 식에서 빨간 밑줄 친 부분을 보시면 제가 빨간 동그라미를 친 '분포(variance)'와 '평균(mean)'가 식의 모양을 결정한다는 것을 볼 수 있습니다. 분포와 평균을 축으로 하는 좌표평면을 그리고, 분포와 평균을 바꾸어 가면서 원래 데이터 분포와 얼마나 차이가 나는지 오차를 이 좌표평면에 나타냅니다. 그리고 같은 크기의 오차를 연결하면 위 사진의 등고선처럼 보이는 그래프를 얻을 수 있습니다. 


이 등고선 지도가 제가 말한 '식을 찾는데 길을 인도해주는 지도'입니다. 즉, 데이터를 가장 잘 표현하는 확률분포의 파라미터들을 축으로 하는 좌표계를 만듭니다. 위의 예시에서는 학생들의 키가 정규분포를 따른다고 가정했기 때문에 정규분포라는 모델의 파라미터인 평균과 분산을 x축, y축으로 둡니다. 이 좌표평면에서 '정답값과 예측값의 차이(오차)'를 높이로 하는 등고선 지도를 만든 다음에, 오차가 가장 낮은 곳으로 인도하는 기울기가 가장 가파른 곳을 따라 이동하면 되기 때문입니다. '그레디언트 디센트 (gradient descent)'가 이 방법을 사용합니다.  


실제로 머신러닝이나 딥러닝을 할 때는 위 사진의 등고선 그림처럼 좌표평면의 모든 점들에 대해 계산을 할 수 없기 때문에 랜덤한 한 점에 대해서 기울기를 계산한 뒤 가장 경사가 가파른 곳(steepest)으로 벡터를 이동시킵니다. 이 기울기를 계산할 때 필요한 것이 미적분학입니다. 미적분학은 다른 포스팅에서 다루기로 하고, 지금은 벡터에 집중하겠습니다.


벡터의 크기와 방향

위의 등고선 그림에서 보았듯이, 각 feature가 축인 좌표계에 각 데이터가 가지고 있는 피처의 값에 따라 표시할 수 있습니다. 따라서 벡터는 하나의 점으로도 생각할 수 있지만, (0,0)같은 원점에서 이 점까지 화살표를 그려본다면 '화살표'로도 생각할 수 있습니다. 그렇다면 이 화살표의 크기와 방향은 어떻게 구할 수 있을까요?




위의 제 필기에서 볼 수 있듯이 화살표, 즉 벡터의 크기는 벡터의 성분들의 제곱합을 한 뒤, 루트를 씌우거나 자기 벡터에 다시 자신을 내적한 뒤 루트를 씌우면 됩니다. r = (r1, r2) 라면, r.r = (r1 *r1) + (r2 *r2) 이기 때문입니다.


그렇다면 벡터의 방향은 어떻게 구해야 할까요? 사실 벡터의 방향이란 상대적인 개념입니다. 2개의 벡터가 있어야 서로의 방향이 얼마나 차이가 나는지 알아보는 것이 소용이 있기 때문입니다. 예를 들어 어떤 사람의 '영화 취향'을 벡터로 만들었다고 해봅시다. 5점 만점인 영화 평점에 해리포터에 별점 3개를 주고, 반지의 제왕에 별점 5점을 주었으며, 올드보이에 1점을 주었습니다. 그렇다면 이 사람의 영화 취향을 벡터 Pa=(3,5,0) 으로 나타낼 수 있습니다. (물론 벡터는 column 형식으로 써야 하지만, 여기서는 transpose를 해서 row로 나타내었습니다)


만약 저의 영화 취향 벡터는 (5,2,4)라면, 이 사람과 제 영화 취향이 얼마나 비슷할까요? 서로 다른 2개의 벡터가 얼마나 비슷한 방향인지 비교할 때는 cosine을 사용합니다. 왜 cosine을 사용하는 걸까요? 그 이유는 중학교때 배우는 삼각함수 규칙인 cosine rule 때문입니다. 아래 그림의 노란색 삼각형을 보시겠습니다.



r 벡터와 s 벡터가 있을 때, 이 두 벡터의 양 끝을 잇는 선은 (r-s)벡터라 볼 수 있습니다. 이게 바로 이해가 안되신다면, s+c = r 라고 가정해봅시다. 그렇다면 c = r-s 가 됩니다. 따라서 이 3개의 벡터를 삼각형이라고 본다면 cosine 공식을 사용할 수 있습니다. 이 때 |r - s| * |r - s|는 '벡터의 크기'를 공부할 때 배웠던 것처럼 (r-s). (r-s) 즉, (r-s)를 제 자신에 대해 내적한 것과 같습니다. 이를 정리하면 빨간색 밑줄친 식이 나오게 됩니다. 이 식을 이용하면 두 벡터 사이의 방향을 알려주는 를 구할 수 있게 됩니다.


r.s / |r||s|를 해서 나온 결과값이 0이라면 두 벡터가 서로 수직인 것이고, 1이면 두 벡터의 방향이 일치한 것입니다. 또한 -1이라면 두 벡터의 방향이 완전히 반대입니다. 이처럼 cosine을 이용하여 두 벡터의 비슷한 정도를 측정하는 것을 cosine similarity라고 하며 자주 사용되는 개념입니다.


(2) 행렬 연산 : 빠른 연립방정식 계산 가능

두번째 이유는 방정식들의 집합, 즉 연립방정식을 더 잘 풀기 위해서입니다. 데이터와 연립방정식은 무슨 관계가 있을까요? 사실 데이터를 가지고 이리저리 살펴보기 위해서는 수 많은 연산이 필요합니다. 그래픽카드가 발전하기 시작한 이후에야 데이터 사이언스가 대두되기 시작한 이유 중 하나도 그래픽카드가 연산을 굉장히 빨리 할 수 있기 때문입니다. 데이터에서 많은 연산이 필요한 이유를 하나의 예시를 통해 보여드리겠습니다.   



x축 : 독립변수, y축 : 종속변수라고 해보겠습니다. 중학교때 배운 간단한 1차함수입니다. 위의 파란색 점들은 각 데이터들의 (x,y) 좌표를 표시한 것입니다. 그렇다면 이 파란색 점들의 x와 y 관계를 가장 잘 설명할 수 있는 1차 함수를 찾고 싶다면 어떻게 해야 할까요? 참고로 빨간색 직선을 찾는 문제를 Linear regression이라 부릅니다. 


linear regression에서 수행해야 할 계산은 각 파랑색 점들과 빨간색 선 사이의 거리를 최소하는 것입니다. 이를 식으로 나타내면 다음 그림처럼 행렬을 사용합니다.



행렬은 벡터를 모아놓은 것이기 때문에 선형대수학에서는 행렬도 다루는데요, 그래서 역행렬, 판별식의 기하학적 의미 등을 이 강의에서 배우게 됩니다.



이상 여기까지 정리해보고 다음 포스팅에서는 벡터의 projection부터 알아보겠습니다!

728x90
더보기

댓글,

하얀눈곰

프랑스에 살고 있습니다. 낯선 나라에 와서 살다보니 생각들이 많습니다. 이 지나가는 생각들을 붙잡아 두기 위해 블로그를 시작했습니다.