본문 바로가기

공부한 것

선형대수 - 1

그냥 가져다 사용하지 않고, 정확한 개념을 알고, 또 잊지 않기 위해 정리하고자 책을 읽으며 개념을 익히고, 파이썬에서는 어떻게 구현하는지를 메모해두려 한다.

읽는 책은 장철원 작가님의 선형대수와 통계학으로 배우는 머신러닝 with 파이썬

리뷰 중 깊이가 없다는 글도 있지만 기본적인 개념을 잡고 거기서 더 나아가는 것은 학습자의 역할이지 그것까지 저자가 떠먹여줄 수는 없다고 생각한다. 책의 목적 자체도 머신러닝을 위해 선형대수와 통계학을 다루는 것이니 필요 이상으로 깊이 파고들 이유도 없을 것 같고.

Linear Algebra. 기초적이고도 필수적인 요소...지 아마. 개념은 어렵지 않은데, 막상 이용해서 문제를 풀라거나 응용하거나 하면 벽에 부딪힐지도 모르겠다.

Vector, scalar, matrix, tensor

vector는 scalar의 집합니다. 행 방향이면 row vector, 열 방향이면 column vector. matrix는 또 벡터들의 집합. row vectors의 집합이느냐 column vectors의 집합으로 보느냐에 따라 dimension까지도 달라질 수 있다. 예를 들어

// 1, 2, 3, 4, 5, 6 을 행렬로 늘어놓을 때

// 행 벡터의 집합으로 보았을 때 2차원이 되는 경우.
A = ( (1, 5), 
    (3, 4), 
    (5, 2), )

// 물론 실제로 이런 모양으로 표기하지는 않지만, 
// 열 벡터의 집합으로 보았을 때 3차원이 되는 경우.
A = ( (1,    (2,
       3,      4,
       5,),  6,) )

행x열의 2차원 행렬에서 n차원 matrix로 일반화 할 경우 Tensor로 부른다. 위의 예시의 경우 Tensor라고 말할 수 있을 것.

diagonal matrix, identity matrix

  • diagonal matrix | 대각 행렬 : 대각 원소 이외의 모든 elements가 0인 행렬
  • identity matrix | 단위 행렬 : 중앙 대각선 (11, 22, 33...) element가 1이며 나버지 원소는 0인 square matrix
  • numpy.identity(n) 으로 nxn의 단위 행렬을 만들 수 있다.

연산량이 많아졌을 때 행렬을 대각 or 단위 행렬로 변환하여 연산량을 줄여 자원을 아낄 수 있다.

transposed matrix

  • 행과 열을 바꾼 행렬 ex) 32 -> 23
  • numpy.arr.transpose() 로 nparray를 transpose 시킬 수 있다.

multiplication

  • 스칼라곱이 행렬을 구성하는 벡터들의 길이를 늘리는 것과 같다면, matrix multiplication(행렬곱)은 행렬 간의 곱셈이다. 이때, 앞 행렬의 열 크기와 뒷 행렬의 행 크기가 일치해야 곱할 수 있다.
  • matrix element multiplication (element-wise multiplication)(행렬원소곱)은 행렬곱과 달리 차원이 동일한 두 행렬의 동일 위치 원소를 곱한다.
  • numpy.multiply(arr1, arr2), arr1*arr2)은 기본적으로 원소곱이다.
  • 행렬곱을 하고 싶은 경우 numpy.matmul(arr1, arr2)를 이용한다.

determinant

  • determinant(행렬식) == n : 행렬이 단위 공간의 부피의 n배와 같다. == 0 : 부피가 0이다.
  • 행렬식을 구한다는 것은 행렬을 구성하는 벡터로 만들 수 있는 도형의 부피를 계산한다는 것.

inverse matrix

  • AA^-1 = Identity Matrix 를 만족하는 A^-1.
  • 행렬의 행렬식 != 0 일 때 역행렬이 존재 : invertible matrix (가역 행렬)
  • numpy.linalg.inv(arr)를 이용해 역행렬을 구할 수 있다.

'공부한 것' 카테고리의 다른 글

선형대수 - 3  (0) 2021.09.22
선형대수 - 2  (0) 2021.09.20
Data Preprocessing  (0) 2021.09.15
분류와 검증  (0) 2021.09.10
  (0) 2021.09.10