선형대수학

    고윳값과 고유벡터

    고윳값, 고유벡터는 데이터 분석 분야에 다양하게 활용된다. 특히 다변량(변수가 많이 존재하는) 경우에서 활용가치가 무궁무진하다고 할 수 있다. 이는 바로 ‘데이터의 좋은 성질을 공유하고, 이 좋은 성질을 최대한 보존한 채로 행렬을 단순화 할 수 있는 방법’을 공유할 수 있기 때문이다 [ 고윳값, 고유벡터, 고윳값 분해 ]에 대해서 본격적으로 알아보기 위해서라면 행렬대수의 기본적인 공부를 선행할 필요가 있다. (역행렬, 가역행렬, 일차독립, 행렬연산 등등..) 임의의 행렬 A와 임의의 행렬 B가 어떤 경우에 ‘닮은 행렬’이 되는지에 대해서도 이해할 필요가 있으며, 닮은 행렬이 되었을 경우 두 행렬의 행렬식이 같고, 대각합(trace)이 똑같음을 직관적으로 이해할 수 있어야 한다. ‘닮은 행렬’을 이해했다면..

    [선형대수] 정사영 (Projection)

    정사영에 관해 알아봅시다. 필자는 단순하게 선형대수 계산을 위해서만 정사영을 이해했었는데요. 데이터를 공부하고, 계량경제학을 접하면서 정사영의 쓰임새에 대해서 더 넓게 이해할 수 있었습니다. 데이터 분야에서 정사영이 중요한 이유는 무엇보다도 선형회귀 (최소제곱법)에 대한 이론적 근거를 제시하기 때문입니다. 어떻게 제시를 하느냐? 정사영은 임의의 두 벡터 x와 y에 대해서 y가 x로 갈 수 있는 가장 짧은 거리를 제시합니다. 그림으로 이해를 해보자면 y벡터에서 선 x로 가는 가장 짧은 거리를 검은색 실선으로 나타내고 있습니다. 바로 수직으로 떨어뜨리는 것이죠. 따라서 내적의 정의에 의해서 x에 수직인 검정색 실선을 의미하는 벡터 w와 x의 내적의 값은 0이 될 수밖에 없습니다. 실제로 정사영의 식은 위 원..

    내적과 코사인유사도 (dot product & cosine similarity)

    벡터끼리의 내적은 매우 유용한 정보를 줄 수 있다. 이를 테면, 인공지능의 다양한 연산에 기초가 되기도 하며, 이미지 인식, 음성 인식 그리고 구매 이력에 기반한 상품 등을 추천할 때 최종 엔진에서 활용되는 연산이기도 하다. 이게 어떻게 가능한 지에 대한 원리를 알아보려면, 우선 내적의 식을 유도할 필요가 있다. 간단하게 내적을 정의해보자 정의) 내적(inner product = dot product) 임의의 두 벡터 \( \mathbf{a}=(a_1, a_2) \) 와 \( \mathbf{b}=(b_1, b_2) \)에 대해서 내적은 다음과 같이 정의될 수 있다. $$ \mathbf{a} \cdot \mathbf{b} = a_1b_1 + a_2b_2 = \mathbf{b}^T \mathbf{a} $$ ..

    Norm, 노름, 거리, euclidean distance, 데이터 유사도

    필자는 처음 선형대수학을 공부할 때 내적이라는 개념이 나오면 도대체 왜?? 해야하는지 궁금했던 것 같다. 직교나 정사영에 대해 배우기 전에는 당최 이해가 되질 않았다. 벡터로써 norm은 자기 자신의 크기(magnitude)가 얼마나 큰 지 알 수 있을 뿐만 아니라, 다른 벡터와 같이 사용될 때 그 의미가 체감되는 것을 알 수 있었다. 예를 들면 데이터의 유사도(similarity)를 구한다고 생각해보자. 어떤 기준으로 임의의 두 데이터 A와 B가 유사하다고 판단할 것인가? 사람의 고향, 나이, 학력, MBTI 등과 같은 것을 알수 있다면, 조금 더 쉽게 유사한 사람인지 아닌지를 알 수 있지 않을까 생각한다. 이걸 선형대수학에서는 크게 두가지 관점에서 확인할 수 있는데, 바로 거리를 활용한 데이터 유사도..

    정형데이터 관점에서의 벡터

    선형대수의 개념을 모르는 사람이더라도, 엑셀은 사용해봤으리라 생각이 든다. 우리는 어떠한 정보를 기록해두기 위해서 엑셀을 사용하는데, 엑셀 테이블의 행과 열이 선형대수 관점에서 어떻게 사용되고 있을까? 아래의 사람의 개인정보를 담은 테이블을 보자 각 행은 한 사람에 대한 데이터를 담고 있다. 이 맨 윗 행에 대한 정보를 테이블에서 똑 떼와서 본다면 160cm, 80kg, 19세, 남성 이라는 정보가 --> (160, 80, 19, 1) 이렇게 하나의 벡터로 표현을 할 수 있다. 물론 파이썬 pandas의 관점에서 생각을 해보면, 하나의 열 (키, 몸무게, 연령, 성별) 이라는 변수들이 벡터로서 표현되어 각 열벡터가 하나로 취합되어 테이블(=데이터프레임=행렬)로써 표현이 되고 있다. 마찬가지로 두번째 세번..

    일차결합(linear combination)

    \(v_1, v_2, ..., v_k\)가 \(\mathbb{R}^n\)의 벡터이고, 계수 \(c_1, c_2, ..., c_k\)가 실수일 때, $$ \textbf{x} = c_1v_1+c_2v_2 + ... + c_kv_k $$ 인 형태를 \(v_1, v_2, ..., v_k\)의 일차결합(linear combination)이라고 한다 일차결합은 굉장히 벡터라는 개념이 추가되어 생소해 보일뿐 실수의 연산으로 생각하면 단순한 개념이다. 단순한 예를 들자면, 숫자 10이 있다고 해보자. 이 숫자 10은 무수히 많은 방법으로 일차결합식으로 표현이 가능하다 10 = 1 + 2 + 3 + 4 10 = 11 - 1 10 = 100 - 90 등.. 고차원 벡터의 개념에서 생각해보자면, \(z = c_1 x + c..

    데이터사이언티스트 & 경제학자가 선형대수학을 공부하는 이유

    필자는 세번의 선형대수학 수업을 각기 다른 학교에서 수강했다. 영국의 에딘버러 대학교에선 선형대수학 개론을, 미국의 노스캐롤라이나 대학교에선 상미분방정식을 배우면서 선형대수의 커널까지의 개념을, 그리고 현재 성균관대학교 데이터사이언스융합학과에서 응용 선형대수 수업을 이수했다. 매번 제대로 공부할 때마다 선형대수의 개념들이 매번 새롭게 다가왔는데, 그때마다 이해의 폭이 넓어지는 것이 느껴졌다. 데이터 사이언티스트를 업으로 삼고있는 지금, 매일 시간이 날 때마다 조금씩이라도 선형대수학을 다시 공부하며 공유하는 시간을 가져볼까 한다. 정형데이터를 행렬의 관점에서 바라보며 분석을 진행할 때, 다중공선성, 노이즈 제거의 측면에서 데이터를 압축할 때, 이미지 & 텍스트 처리 시 빈번하게 마주할 수 있는 대용량 데이..