선형대수학/벡터
[선형대수] 정사영 (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..