-
[Concept] Vectors/ MetricesAI부트캠프 2021. 1. 13. 00:04
[section1/sprint3]
linear algebra (선형대수학)
인간이 가장 이해하기 쉬운 데이터의 형태는 '선형적'인 관계로 얽힌 정보일 것이다. 선형적이란, 어떤 input이 주어졌을 때, 그에 비례하는 output을 예상하는 것이라고 말할 수 있다. 하지만 output을 도출하는 과정에서 output을 변화 시킬 수 있는 다른 조건이 개입한다면, 우리는 output을 예상하기 어려워진다. 이러한 정보들을 선형적인 인과관계로 나타내는 것을 '미분', 선형화 된 것을 취합하는 것을 '적분'이라 부른다.
선형대수학이란, 선형적인 인과관계로 얽힌 정보(행렬)를 다루는 학문이며, 행렬을 이해하는 수학적 시야와 행렬을 단순하게 표현하는 방법에 대한 고찰이 필요하다.
여기서 우리는 데이터의 패턴을 명확히 이해하고, 공간에 대한 이해를 쉽게 하기 위해 선형대수학을 필요로 한다.
scalar
스칼라는 방향성이 없는 값이다.
vector
크기와 방향성을 가지는 값으로, n차원 벡터는 n개의 컴포넌트(요소)를 가지는 '순서를 갖는' 값들의 모임이라고 할 수 있다.
벡터는 주로 소문자 알파벳 위에 화살표를 그려 표시한다.
magnitude of vector
여기서 벡터의 크기(길이)는 ||a|| 와 같이 표시하며, 아래의 공식으로 계산할 수 있다.
a1, a2, a3, a4는 벡터 a의 컴포넌트이다.
python에서는 numpy library의 linalg을 이용하여 아래와 같이 계산할 수 있다.
from numpy import linalg linalg.norm(vector)
dot product(내적)
벡터의 내적은 두 벡터의 각 구성요소를 곱한 뒤 합한 값과 같다.
a1, a2 ... 는 a의 컴포넌트(순서대로), b1, b2 ... 는 b의 컴포넌트(순서대로)
python에서는 numpy library를 이용하여 아래와 같이 계산할 수 있다. (교환법칙이 성립되므로 순서는 상관 없다)
import numpy numpy.dot(a, b)
matrix
행과 열을 통해 배치되어 있는 숫자들을 의미한다.
행렬은 주로 대문자로 표시한다.
dimensionality
행렬의 차원은 '행, 열'의 순서로, 행과 열의 숫자를 나열한 것을 의미한다.
Transpose
행렬의 transpose 는 왼쪽과 같이 나타내며, 왼쪽 위에서 오른쪽 아래쪽으로 행렬을 가로지르는 대각선을 기준으로 값들을 뒤집은 행렬을 뜻한다.
python에서는 아래와 같이 계산할 수 있다. (둘다 같은 결과를 나타낸다)
a.transpose() a.T
Identity(단위행렬)
모든 값이 1인 diagonal 행렬(값이 대각선에만 있는 정사각행렬)을 말한다. I로 표시하며, 행렬에 곱해도 같은 행렬이 반환된다.
Inverse(역행렬)
어떤 정사각 행렬에 곱했을 때 결과가 I가 되게하는 행렬을 말한다.
python에서는 아래와 같이 계산할 수 있다.
numpy.linalg.inv(A)
Determinant(행렬식)
단위행렬을 구하는데 사용되기도 하고 기하학적으로 부피를 의미하기도 한다. 행렬식과 행렬식을 이용하여 역행렬을 구하는 공식은 다음과 같다.
python에서는 다음과 같이 행렬식을 구할 수 있다.
numpy.linalg.det(A)
만약 행렬식이 0이라면 역행렬이 존재하지 않는다. 이렇듯 역행렬이 존재하지 않는 행렬을 singular 행렬이라고 하며, 이 경우, 선형적인 의미가 같은 데이터가 반복해서 행렬에 입력되어 있는 것으로, 의미없는 데이터를 걸러내는 작업이 필요할 것이다.
matrix calculation
기본적으로 np.array([ ]) 함수를 이용하여 만들어진 array들을 사칙연산에 적용할 경우, 같은 크기의 두 행렬에 대해 컴포넌트들을 사칙연산 하여 반환한다.
matrix multiplication
matrix multiplication 에서는 행렬의 차원에 주의해야 하는데, 2D array ( np.array( [ [ ], [ ] ] ) - 이렇게 대괄호를 중복해서 사용한 것 ) 를 사용하여야만 행과 열이 확실하게 구분된다. 혹은 reshape( , ) 함수를 이용하여 직접 차원을 지정해 줄 수도 있다.
matrix multiplication 공식은 다음과 같다.
python에서는 다음과 같이 계산할 수 있다.
numpy.matmul(A,B)
'AI부트캠프' 카테고리의 다른 글
[Concept] Section review (0) 2021.01.27 [Concept] Intermediate Linear Algebra (0) 2021.01.19 [Concept] Hypothesis Test (2) 2021.01.06 [Method] Feature Engineering (2) 2021.01.04 [Method] Data Visualization (2) 2021.01.02