다시 이음

선형대수 -1 (벡터, 매트릭스) 본문

AI 일별 공부 정리

선형대수 -1 (벡터, 매트릭스)

Taeho(Damon) 2021. 7. 22. 21:30

Data structure

1D(1차원)

데이터의 순서가 유지되어야 하는 데이터 구조

주로 list로 이용된다.

 

2D(2차원)

dataframe을 통해 주로 표현하며 행렬과 같다.

 

 

Determinant - 매트릭스를 하나의 수로 표현하는 것

2x2 Determinant

2x2의 Determinant는 위와 같이 실행한다.

 

3x3 Determinant

 

스칼라와 벡터 (Scalar and Vector)

  • 스칼라와 벡터는 선형 대수를 구성하는 기본 단위입니다.
  • 스칼라는 단순히 변수로 저장되어 있는 숫자이며 벡터 혹은 매트릭스에 곱해지는 경우 해당 값에 곱한 값으로 결정됩니다.
  • 한편 벡터는 파이썬에서는 주로 list로 사용 되며, 이전에 다뤘던 것처럼 데이터셋을 구성하고 있는 데이터프레임의 행/열로써 사용되기도 합니다.
  • 매트릭스는 벡터의 모음으로 간주 될 수도 있기 때문에 벡터를 이해하는 것은 매우 중요합니다.

 

Vector

  • n 차원의 벡터는 컴포넌트라 불리는 n개의 원소를 가지는 순서를 갖는 모음입니다. (컴포넌트는 스칼라로 간주 되지 않습니다.)
  • 벡터는 일반적으로 위의 화살표 (→) 를 갖는 소문자의 형태로 표현 됩니다.
  • 물리적으로 벡터는 방향과 크기라는 2가지 속성을 갖고 있습니다.
  • 벡터의 길이(length)는 벡터의 차원수와 동일하다

벡터의 크기 (Magnitude, Norm)

v = [1,2,3,4]

|v| = 각 요소들의 제곱을 총합하여 루트씌운 값

|v| = √1+4+9+16 = √30

 

L1 Norm 은 벡터 p, q 의 각 원소들의 차이의 절대값의 합

L2 Norm 은 벡터 p, q 의 유클리디안 거리(직선 거리)

초록색(L2 norm) 그외(L1 norm)



def NormDif(v): # v = np.array()
    # L2 - L1 = (sum_lst(v**2)**(1/2)) - sum_lst(abs(v))
    return abs((sum(v**2)**(1/2)) - sum(abs(v)))
    
# 예시 : 벡터의 크기(Norms) L2와 L1의 절대값 차이를 구하는 함수를 만들어라

*Error 타입 (두개의 벡터 값을 받아 오류 방식에 따라 결과값을 도출)
#평균 제곱 오차 (Mean Square Error) : MSE
#측정치와 예측치의 각각 차를 구하고 결과값에 제곱을 하고 모두 더한 뒤 , 개수로 나눠준다.

#평균 절대 오차 (Mean Absolute Error) : MAE
#각 측정값과 실제값 사이의 절대 오차를 구하고, 결과값을 모두 더한 뒤 개수로 나눠준다.

벡터의 내적 ( Dot Product )

두 벡터 𝑎⃗   𝑏⃗  의 내적은, 각 구성요소를 곱한 뒤 합한 값과 같습니다.

  • 내적은 교환법칙이 적용 됩니다: 𝑎𝑏=𝑏𝑎
  • 내적은 분배법칙이 적용 됩니다: 𝑎(𝑏+𝑐)=𝑎𝑏+𝑎𝑐
  • 벡터의 내적을 위해서는 두 벡터의 길이가 반드시 동일해야 합니다.
import numpy as np
a = np.array[1,2,3]
b = np.array[4,5,6]
print(np.dot(a,b))
array [ 4+10+18 ] = array [32]

Matrix Transpose

  • 매트릭스의 전치는, 행과 열을 바꾸는 것을 의미합니다. 이는 일반적으로 매트릭스 우측 상단에 𝑇 혹은 tick 마크를 통해 표기 
  •  읽는 방법은 B transpose 혹은 B prime ( 𝐵^T,𝐵′ )

Matrix multiplication

Matrix의 종류

Identity (단위 매트릭스):

  • iagonal 매트릭스 중에서, 모든 값이 1인 경우입니다. 임의의 정사각 매트릭스에 단위 행렬을 곱하면, 그 결과값은 원본 정사각 매트릭스로 나오며,
  • 반대로 임의의 매트릭스에 대해서 곱했을때 단위 매트릭스가 나오게 하는 매트릭스를 역행렬 (Inverse)라고 부릅니다.

𝐴𝐼==𝐴, 𝐴𝐴1=𝐼

inverse 매트릭스 공식

  • 역행렬이 0인 경우가 있는데 그런 경우는 위의 그림에서 a:c, b:d의 비율이 같을때 이루어진다.
  • 예를 들면,a=1 ,b=3, c=3, d=9 -> 1:3 , 3:9로 결국 비율은 같다.
#예시 : inverse행렬을 구하는 함수를 정의해라, 단 값이 error일시 -1로 반환.
def myInverse(m) : # m = np.array() 
    try : return np.linalg.inv(m)
    except : print(-1)