- This repository is written and practiced while studying linear algebra.
- What is Linearity
- Learning resource
- Lectures
- 인공지능을 위한 선형대수, 고려대학교 주재걸 교수님 - https://www.boostcourse.org/ai251
- 선형대수학1, 세종대학교 하길찬 교수님 - http://www.kocw.net/home/cview.do?cid=f41a378321625410
- Books
- Lay et al. Linear Algebra and Its Applications, 5th edition, 2015
- HOWARD ANITON. 알기 쉬운 선형대수 제 12판(한티에듀)
- Mike X Cohen. 개발자를 위한 실전 선형대수학
- Lectures
- Current modified: 02/19/2024 Mon.
- Elements in linear algebra - completed
- Linear system - in progress
- Linear combination, vector equation, Four views of matrix multiplication - in progress
- Linear independence, span, and subspace - completed
- Linear transformation
- Least squres solution
- Eigen decomposition
- Singular value decomposition
-
스칼라(scalar): 하나의 수 e.g., 3.8
-
벡터(vector, v): 순서가 정해져 있는 일종의 배열(array), 일반적으로 열벡터로 나타내고 굵은 소문자로 나타냄 ↔ 순서가 정해져 있지 않은 것은 집합(set)
- 기하학적 해석: 특정 길이(크기)와 방향(각도)을 가진 직선
- 벡터의 차원(dimensionality): 벡터가 가진 원소의 수
- e. g., R²: 두 개의 원소가 있는 벡터
- x = [x1, x2] 또는 x = [x1, x2]ᵀ
- e. g., R³: 세 개의 원소가 있는 벡터
- x = [x1, x2, x3] 또는 x = [x1, x2, x3]ᵀ
- R⁰: 영차원 부분공간 (차원 = 0)
- Rⁿ: n차원 공간 (차원 = n)
- n차원 벡터: n개의 원소를 갖는 벡터 = n 순서쌍(n-tuple)
- e. g., R²: 두 개의 원소가 있는 벡터
- 벡터의 방향(orientation): 벡터가 열 방향인지 행 방향인지를 나타냄(n차원의 벡터는 일반적으로 열벡터로 나타냄)
- 열벡터(column vector): 행렬에서 각 열의 값들로 이루어진 벡터 ~ 행벡터를 세로로 쓰면 열벡터
- Column은 기둥이라는 뜻이 있는데, verticacl한 이미지를 상상하면 행과 열이 헷갈리지 않음
- 행벡터(row vector): 행렬에서 각 행의 값들로 이루어진 벡터 e.g., [1, 2, 3, 4]
- 행벡터는 일반적으로 전치(transpose)를 써서 나타냄. Transpose of x(=xᵀ)
- 열벡터(column vector): 행렬에서 각 열의 값들로 이루어진 벡터 ~ 행벡터를 세로로 쓰면 열벡터
- 영벡터(zero vector): 모든 원소가 0인 벡터, denoted by 0
- Practice
x = [ [1], [4], [5], [6] ]라면, x는 4차원 열벡터, x ∈ R⁴ y = [ [.3], [-7] ]라면, y는 2차원 열벡터, y ∈ R² z = [ [1, 4, 5, 6] ]라면, z는 4차원 행벡터, z ∈ R⁴ * x와 z는 동일한 순서로 동일한 원소를 갖고 있지만 방향이 다르기 때문에 다른 벡터임을 주의
-
행렬(matrix, M): 2차원 숫자 배열(벡터를 한 차원 더 끌어올린 것), 굵은 대문자로 나타냄
- 데이터 과학에서는 행렬을 관측 데이터가 있는 행과 특징(feature) 열을 가진 데이터 테이블로 간주함
- 행렬의 크기: 3x2(3 by 2)는 3개의 행과 2개의 열로 이루어진 행렬이라는 뜻
-
행렬의 표기법
-
A(n x n): 정사각행렬(square matrix), 행렬의 행의 개수와 열의 개수가 같은 행렬(#rows = #columns)
-
A(m x n): 직사각행렬(rectangular matrix), 정사각행렬이 아닌 행렬, 즉 행렬의 행의 개수와 열의 개수가 다른 행렬
-
Aᵀ: 벡터 또는 행렬의 전치, 주대각 성분들을 기준으로 행렬을 회전 ~ 즉, 행과 열을 교환하는 것(a(i,j)ᵀ = a(j,i))
-
Aij: i번째 행, j번째 열의 요소
-
Ai,: - i번째 행벡터
-
A:,j - j번째 열벡터
-
-
특수 행렬
-
난수 행렬(random number matrix): 가우스(정규) 분포 등으로부터 무작위로 추출된 숫자를 가진 행렬(선형대수학을 코드로 공부할 때 유용, 임의의 크기와 계수(rank)로 쉽고 빠르게 생성 가능하기 때문)
-
정방 행렬(square matrix)과 비정방 행렬(nonsquare matrix)
- 정방 행렬: 행 수와 열 수가 같은 행렬. 즉, R(N*N) 행렬
- 비정방 행렬: 행 수와 열 수가 다른 행렬, 행 수 > 열 수: '높다'고 표현, 행 수 < 열 수: '넓다'고 표현
-
대각 행렬(diagonal matrix)
-
삼각 행렬(triangular matrix)
-
단위 행렬(unit matrix)
-
영 행렬
- 영벡터와 유사하게 모든 원소가 0인 행렬, 굵은 체를 사용하여 0으로 나타냄(NumPy의 zeors() 함수를 사용해서 생성)
-
대칭 행렬
-
곱셈 기법(비대칭 행렬로부터 대칭 행렬 생성, multiplicative method)
- 어떤 행렬(비정방 행렬 또는 비대칭 행렬)이든 자신의 전치를 곱하면 정방 대칭 행렬이 생성됨(AᵀA 또는 AAᵀ)
- 단, AᵀA와 AAᵀ는 같은 행렬이 아니라는 것을 주의!
- 증명
- 정방 증명: A 행렬의 크기가 M x N이라면, AᵀA는 (N x M)(M x N)이므로 N x N, 반대로 AAᵀ는 (M x N)(N x M)이므로 M x M 크기의 행렬
- 대칭성 증명: (AᵀA)ᵀ = AᵀAᵀᵀ = AᵀA 또는 (AAᵀ)ᵀ = AᵀᵀAᵀ = AAᵀ
-
-
벡터 & 행렬의 덧셈과 곱셈
-
덧셈은 동일한 차원을 갖는 벡터끼리만 연산이 가능하며, 서로 대응되는 원소끼리 합하면 됨
-
벡터의 덧셈과 뺄셈의 기하학적 해석: 삼각형 법칙, 평행사변형 법칙
- 특히, 벡터의 뺄셈은 직교벡터 분해의 기초이며 선형 최소제곱법의 기초가 되기 때문에 아주 중요한 개념
-
행렬 이동(shifting a matrix) - 행렬의 고윳값을 찾는 메커니즘과행렬을 정규화하는 메커니즘으로 응용
- 정방 행렬에 스칼라를 더하는 방식으로 단위 행렬에 스칼라를 곱해서 더하는 방식으로 구현
A = np.array([ [4, 5, 1], [0, 1, 11], [4, 9, 7] ]) s = 6 A + s * np.eye(len(A))
- 데이터 과학에서는 행렬의 수치적 안정성을 높이고 이동의 효과를 보면서 행렬의 가능한 많은 정보를 보존하기 위해 상대적으로 적은 양을 이동
- 정방 행렬에 스칼라를 더하는 방식으로 단위 행렬에 스칼라를 곱해서 더하는 방식으로 구현
-
스칼라배 곱셈도 가능(아주 간단함, 각 벡터나 행렬의 원소에 스칼라를 곱하면 됨). denote by α, β, λ, ... ~ e. g., λw = [36, 16, 4] (λ = 4, w = [9, 4, 1].T)
-
행렬의 대각합(trace)
- 대각 원소의 합(정방 행렬에 대해서만 존재), denoted by tr(A)
- 특성: 행렬의 대각합은 행렬의 고윳값의 합과 같음(결국 행렬의 고유공간(eigenspace)의 '부피'에 대한 측정치가 됨)
-
-
표준 행렬 곱셈(matrix multiplication) - 다른 행렬 곱셈들(e.g., 아다마르곱 등)과 구분하기 위해 표준 행렬 곱셈이라 함
- 행렬 곱셈: 왼쪽 행렬의 행과 오른쪽 행렬의 열 사이의 모든 쌍에 대한 선형 관계를 저장하는 행렬
- 행렬 곱셈 유효성에 관한 규칙
- '내부' 차원의 수가 일치할 때만 유효하고 곱셈 행렬의 크기는 '외부' 차원의 수로 정의
- 내부 차원의 수가 일치할 때만 유효한 이유: 곱셈 행렬의 (i, j)번째 원소가 왼쪽 행렬의 i번째 행과 오른쪽 행렬의 j번째 열 사이의 내적이기 때문
- 내적: 두 벡터 사이의 관계를 인코딩한 숫자
- 내부 차원의 수가 일치할 때만 유효한 이유: 곱셈 행렬의 (i, j)번째 원소가 왼쪽 행렬의 i번째 행과 오른쪽 행렬의 j번째 열 사이의 내적이기 때문
- e.g., 3x2 크기의 A 행렬과 2x2 크기의 B 행렬이 있을 때, 두 행렬의 곱 AB는 3x2 크기의 행렬이 생성
- 이때, 앞에 있는 행렬의 열의 크기와 뒤에 있는 행렬의 행의 크기가 동일해야만 곱 연산이 가능
- 만약 2x3의 크기의 A 행렬과 2x2 크기의 B 행렬을 곱하면(AB) 크기가 같지 않으므로 연산할 수 없음
- 또한, AB와 BA는 완전 다른 연산인데, 이를 통해 교환법칙이 성립하지 않는다는 것을 알 수 있다.(NOT commutative)
- 같은 크기의 두 정사각행렬을 곱했을 때 AB와 BA 모두 연산이 가능한 경우가 있는데 이 경우에도 일반적으로 연산 결과는 같지 않음
- Practice
- '내부' 차원의 수가 일치할 때만 유효하고 곱셈 행렬의 크기는 '외부' 차원의 수로 정의
-
행렬과 벡터 곱셈
- 표준 행렬 곱셈과 동일한 메커니즘으로 행렬과 벡터 곱셈의 결과는 항상 벡터. 데이터 과학, 머신러닝 등 많은 곳에서 사용됨
- 행렬-벡터 곱셈은 행렬 공간의 기저
- 행벡터가 아닌 열벡터만 행렬의 오른쪽에 곱할 수 있고 열벡터가 아닌 행벡터만 행렬의 왼쪽에 곱할 수 있음
- 행렬에 행벡터를 곱하면 행벡터가 생성되고 열벡터를 곱하면 열벡터가 생성됨
- 즉, Av 및 vᵀA는 유효하지만 Avᵀ 및 vA는 유효하지 않음(행벡터는 오직 왼쪽, 열벡터는 오직 오른쪽만 가능)
- MxN 크기의 행렬과 1xM 크기의 행벡터를 곱할 수 없지만 1xM 크기의 행벡터에 MxN 크기의 행렬을 곱하면 결과로 1xN 크기의 행벡터가 나옴
- 역으로, MxN 크기의 행렬과 Nx1 크기의 열벡터를 곱하면 Mx1의 열벡터가 나와서 연산이 가능하지만 Nx1 크기의 열벡터에 MxN크기의 행렬을 곱하는 것은 불가능
- 즉, Av 및 vᵀA는 유효하지만 Avᵀ 및 vA는 유효하지 않음(행벡터는 오직 왼쪽, 열벡터는 오직 오른쪽만 가능)
- 행렬-벡터 곱셈의 두 가지 구체적인 해석
- 선형 가중 결합
- 각 벡터를 행렬에 넣고 가중치를 벡터의 원소로 넣은 후 곱하는 것
- 기하학적 변환
- 행렬-벡터 곱셈은 해당 벡터를 회전하고 확장할 수 있는 역할을 함
- 선형 가중 결합
-
벡터 크기와 단위 벡터(Norm and Unit vector)
-
벡터의 내적(dot product, scalar product), 선형대수학 전체에서 가장 중요한 연산
- 합성곱(convolution), 상관관계(correlation), 푸리에 변환(Fourier transform), 행렬 곱셈, 선형 특징 추출, 신호 필터링 등 많은 연산과 알고리즘의 기본
- denoted by vᵀw (otherwise, v·w or < v, w >)
-
- 두 벡터에서 대응되는 원소끼리 곱한 다음 모든 결과를 더함(즉, 원소별로 곱하고 합하는 것)
- 동일한 차원의 두 벡터 사이에서만 성립
- 두 벡터에서 대응되는 원소끼리 곱한 다음 모든 결과를 더함(즉, 원소별로 곱하고 합하는 것)
- Practice
- 즉, 내적은 두 벡터 사이의 유사성(similarity) 또는 매핑(mapping)의 척도로 해석할 수 있음
- ex: 20명의 키와 몸무게를 수집하여 두 개의 벡터에 저장했다면 두 변수들은 서로 관련이 있다고 예상할 수 있음(키가 큰 사람이 더 무거운 경향이 있음)
- 따라서 위와 같이 서로 관련이 있으면 두 벡터의 내적은 클 것
- 그런데, 그램(g)과 센티미터(cm)로 측정된 데이터의 내적은 단위의 차이로 인해 킬로그램(kg)과 미터(m)로 측정된 데이터의 내적보다 큼.
- 이러한 단위의 차이는 정규화 계수로 제거할 수 있음
- ex: 20명의 키와 몸무게를 수집하여 두 개의 벡터에 저장했다면 두 변수들은 서로 관련이 있다고 예상할 수 있음(키가 큰 사람이 더 무거운 경향이 있음)
- 두 변수 사이의 정규화된 내적: 피어슨 상관계수(pearson correlation coefficient)
- 내적의 분배 법칙
- 내적의 기하학적 해석: 두 벡터의 노름(크기)를 곱하고 두 벡터 사이의 각도에서 코사인값만큼 크기를 늘린 것
-
그 외 벡터 곱셈
-
직교벡터 분해
-
벡터 또는 행렬을 '분해'하면 여러 간단한 조각으로 나뉘어짐
- 숨겨진 정보를 밝혀내거나 행렬을 사용하기 쉬운 형태로 만들거나 데이터를 압축하기 위해 사용
- 그람-슈미트 과정(Gram-Schmidt Process), QR 분해와 직접적인 연관이 있음
-
정사영(직교 투영법, orthogonal projection) = 최소 거리 투영 ~ 벡터 분해를 배우기 위해 꼭 필요한 기초 내용
- 표준 위치에 두 벡터 a, b가 있을 때, a에서 b의 머리와 최대한 가까운 점을 찾아야 함
- 즉, 투영 거리가 최소가 되도록 벡터 b를 벡터 a에 투영. 그 점은 a의 크기를 줄인 βa가 됨
- 중요한 것은 벡터 뺄셈을 통해 b에서 βa까지의 선을 정의할 수 있음
- b-βa가 βa와 직교한다 = 이 벡터들은 수직. 즉, 두 벡터 사이의 내적이 0
- aᵀ(b - βa) = 0
- aᵀb - βaᵀa=0 (내적의 분배 법칙)
- βaᵀa = aᵀb
- ∴ β = aᵀb / aᵀa
- aᵀ(b - βa) = 0
- 직교 투영법(orthogonal projection): β = aᵀb / aᵀa
- 최소제곱식, 통계학, 머신러닝 등의 많은 분야에서 기초가 됨
-
직교벡터 분해: '목표벡터' t와 '기준벡터' r이 있을 때, 목표벡터를 두 개의 다른 벡터로 분해하는 것
- 두 벡터의 합은 목표벡터
- 하나의 벡터는 기준벡터와 직교하지만 다른 벡터는 기준벡터와 평행
- 목표벡터로부터 만들어진 두 벡터는 수직 성분 t⊥r, 평행 성분 t||r
- 평행 성분 t||r 찾는 방법: r과 평행한 벡터는 t를 r에 투영한 것
- t||r = r(tᵀr / rᵀr)
- 수직 성분 t⊥r 찾는 방법: 목표벡터 t에서 평행 성분 t||r을 뺀 것(두 성분의 합이 목표 벡터가 된다는 것을 활용)
- t = t⊥r + t||r
- ∴ t⊥r = t - t||r
-
-
기타 법칙
- A(B + C) = AB + AC: 분배법칙이 성립한다(distributive).
- A(BC) = (AB)C: 결합법칙이 성립한다(associative).
- (AB)ᵀ = BᵀAᵀ: AB를 전치(transpose)하면 A와 B의 순서가 바뀐다.
- (AB)^-1 = B^-1A^-1: 전치와 마찬가지로 AB의 역행렬은 순서가 바뀐다.
- 선형 방정식(lienar equation): x1, x2, ..., xn의 미지수가 있을 때 미지수를 풀기 위한 방정식으로 a1x1 + a2x2 + ... + anxn = b 와 같이 표기한다.
- 위 방정식의 표기법을 선형대수에서는 aᵀx = b로 간결하게 표기한다.
- a1, a2, ..., an를 계수(coefficient)라고 하고 실수나 복소수이며 이미 알고 있는 경우가 일반적이다.
- b는 상수(constant)라고 한다.
- x1, x2, ..., xn과 같이 한개의 미지수 혹은 미지수의 집합을 포함하고 있는 방정식 선형방정식(linear system)이라 한다.
- 선형방정식은 머신러닝에서 input data를 통해 target data의 가중치를 구하고자할 때 활용된다.
- e.g., 사람의 키(x1), 몸무게(x2), 흡연 여부(x3)를 통해 수명을 구하고자 할 때 사용
- 60x1 + 5.5x2 + 1x3 = 66
- 65x1 + 5.0x2 + 0x3 = 74
- 55x1 + 6.0x2 + 1x3 = 78
- 위와 같은 연립방정식을 아래와 같이 계수의 집합 행렬 A, 미지수의 열벡터 x, 상수의 열벡터 b로 나타내어 Ax = b와 같이 표기할 수 있다.
- Ax = b에서 x를 구하기 위해서 A의 역행렬을 구하여 좌변과 우변에 곱하면 AA^-1 = I(항등행렬) 이므로, x=bA^-1로 구할 수 있다.
- 항등행렬(identity matrix)
- 역행렬(inverse matrix) - 행렬 방정식의 만능 키
- 역행렬은 정사각행렬에서만 존재한다.
- 직사각행렬이라면 행 축소(row reduction)와 같은 방법으로 근사값을 계산할 수 있음(Book Chap 1.2, 1.5 추가 학습)
- AA^-1 = A^-1A = In
- 역행렬은 기존 행렬의 곱하는 위치와 상관없이 항상 결과는 항등행렬이 나온다.
- 역행렬을 통해 선형방정식을 해결하는 방법: 역행렬을 구해서 역행렬에 상수 벡터인 b를 곱하면 해를 구할 수 있음!
-
- Ax = b
- A^-1Ax = A^-1b
- Inx = A^-1b
- x = A^-1b
-
- 2x2 크기의 역행렬은 공식으로 빠르게 구할 수 있음. 이보다 더 큰 크기의 역행렬을 구하고 싶다면, 가우시안 소거법(gaussian elimination)을 활용하면 빠르게 역행렬을 구할 수 있음
- 역행렬은 정사각행렬에서만 존재한다.
- 행렬식(determinant)
- 행렬식은 행렬이 가역적인지 비가역적인지 판별하는 식이다. 예를 들어, 2x2 행렬 A가 있다면 det A = bc-ad이다.
- det A ≠ 0이라면 A는 invertible하다고 표현하고, det A = 0이라면 non-invertible하다고 표현한다.
- 어떠한 행렬 A가 가역적(invertible)이면 그 해는 항상 자명하다(uniquely obtained). - 즉, 해가 오직 하나이다.
- 비가역적(non-invertible)인 행렬이라면, 해가 무수히 많거나(infinitely many solutions) 해가 없다(no solution).
- 해가 무수히 많은 경우(under-determined system): 계수들의 비율이 같은데, 상수값도 같아 0x + 0y = 0과 같이 나오는 경우
- 머신러닝을 예로 들면, data(방정식)보다 feature(미지수)가 더 많은 경우 - 방정식이 미지수보다 적은 경우
- 해가 없는 경우(over-determined system): 계수들의 비율이 같은데 상수값이 달라 0x + 0y = 2와 같이 나오는 경우
- 머신러닝을 예로 들면, feature(미지수)보다 data(방정식)이 더 많은 경우 - 방정식이 미지수보다 많은 경우
- 해가 무수히 많은 경우(under-determined system): 계수들의 비율이 같은데, 상수값도 같아 0x + 0y = 0과 같이 나오는 경우
- 추가 학습자료
3. Linear combination, vector equation, Four views of matrix multiplication(선형 결합, 벡터 방정식, 행렬 곱셈을 바라보는 4가지 관점)
- 벡터 집합(vector space): 벡터들의 모음.(유한하거나 무한한 수의 벡터가 존재) denoted by V = { v1, ..., vn }
- 선형 결합(linear combination): 여러 변수마다 가중치를 다르게 주어 정보를 혼합하는 방법
-
w = λ1v1 + λ2v2 + ... + λnvn (즉, 스칼라와 벡터를 곱한 후 값들을 합하는 것을 선형 결합이라고 함)
-
선형 종속적(linearly dependent): 벡터 집합 V에서 적어도 하나의 벡터를 집합의 다른 벡터들의 선형 결합으로 나타낼 수 있을 때 벡터 집합을 선형 종속적(linearly dependent)이라고 함
-
선형 결합 응용 분야
- 통계 모델로부터 예측된 데이터는 최소제곱 알고리즘을 통해 계산되는 회귀변수(독립변수)와 계수(스칼라)의 선형 결합으로 생성됨
- 차원 축소 과정(e.g., 주성분 분석)에서 각 성분(인자 또는 모드)은 성분의 분산을 최대화하는 가중치(계수)와 데이터 채널의 선형 결합으로 도출됨
- 인공 신경망(ANN)에는 입력 데이터의 선형 결합과 비선형 변환의 2가지 연산이 있음. 가중치(w)는 비용 함수(loss function)을 최소화하도록 학습됨
- 비용 함수(loss function): 모델 예측과 실제 목표 변수 사이의 차이
-
- 벡터 방정식
- 행렬 곱셈을 바라보는 4가지 관점
-
선형 독립적(linearly independent): 집합에 있는 벡터들의 선형 결합으로 집합의 아무런 벡터도 나타낼 수 없을 때 벡터 집합을 '선형 독립적(linearly independent)'이라고 함 ↔ 선형 종속적(linearly dependent)
-
위의 경우는 집합 내의 벡터의 수가 적어서 선형 배수로 나타낼 수 있는지 없는지를 눈으로만 계산하여도 쉽게 선형 종속적인지 선형 독립적인지 판단할 수 있음. 하지만 아래와 같이 훨씬 복잡한 벡터 집합이라면?
-
수학에서의 선형 독립성: 벡터를 선형적으로 결합해서 영벡터를 생성할 수 있는 방법이 없다면 벡터 집합은 선형 독립적
- 선형 종속의 수학적 정의
- 0 = λ1v1 + λ2v2 + ... + λnvn, λ ∈ R, λ1 ≠ 0
- λ1 ≠ 0이며 자명하지 않은 해(nontrivial solution)가 존재. 즉, 벡터 집합이 선형 종속적이라면 선형 결합으로 영벡터를 만들 수 있다는 뜻.
- 선형 종속의 수학적 정의
-
If columns are dependent, rows are dependent too.
-
부분공간(subspace): (유한한) 벡터 집합의 벡터들을 사용하여 수많은 다른 가중치를 사용해 무한히 선형 결합하여 만든 공간(벡터 집합으로 생성된 결과)
- 벡터 집합에서 생성되는 부분공간의 차원은 선형 독립 집합을 형성하는 데 필요한 최소한의 벡터 수
- 벡터 집합이 선형 독립적일 때: 부분 공간의 차원 = 집합의 벡터수
- 벡터 집합이 선형 종속적일 때: 부분 공간의 차원 < 집합의 벡터수
-
생성(span): 가능한 모든 선형 결합을 구성하는 메커니즘
-
기저(basis): 행렬의 정보(e.g., 데이터)를 설명하는 데 사용하는 기준의 집합. 즉, 벡터 공간을 생성하는데 필요한 최소한의 벡터들을 나타냄(마인크래프트에서 건물을 지을 때 사용되는 블록들과도 같음)
-
행렬 노름(||A||)
-
행렬 노름은 벡터 노름(유클리드 기하학적 길이로 벡터 원소의 제곱합의 제곱근)의 확장
-
행렬은 여러 개의 서로 다른 노름을 가짐(원소별 계열, 유도 계열)
-
원소별 노름: 행렬의 개별 원소를 기반으로 계산되는 노름 → 행렬의 원소의 크기를 반영해서 해석
- 프로베니우스 노름(Frobenius Norm, 유클리드 노름, L2 norm)
-
모든 행렬 원소의 제곱합의 제곱근으로 계산
-
아래 식에서 i, j는 각각 행과 열을 나타내며 F는 프로베니우스 노름을 나타냄
-
머신러닝과 통계 분석 등에서 응용 → 가장 중요한 응용은 정규화(모델 적합성을 개선하고 모델의 일반화 성능을 높이는 것이 목표)
- L2 정규화(릿지 회귀, ridge regression): 모델 매개변수가 너무 커지는 것을 방지
- L1 정규화(라쏘 회귀,lasso regression): 희소 결과가 나오는 것을 방지
-
'행렬 거리'를 계산할 때도 응용 - 동일한 행렬 사이의 거리는 0이고 행렬 안의 숫자 차이가 클수록 노름이 커짐
- 머신러닝의 최적화 기준으로 사용: 축소된 행렬과 원래 행렬 사이의 프로베니우스 거리를 최소화하면서 데이터 크기를 줄이는 방식
-
프로베니우스 노름은 어떤 행렬의 전치와 그 행렬을 곱한 결과의 대각합의 제곱근으로 계산할 수 있음
-
- 프로베니우스 노름(Frobenius Norm, 유클리드 노름, L2 norm)
-
유도별 노름: 벡터의 변환으로 인해 벡터의 노름이 얼마나 조정되는지에 대한 측정치
-
-
행렬 공간
- 행렬의 서로 다른 특징들 사이의 선형 가중 결합(행렬 공간 또한 벡터 부분공간의 확장)
- 열공간(column space)
- 열벡터의 집합으로 구성된 행렬에 무한 개의 스칼라를 선형 결합한 결과로 생성된 무한 벡터의 집합, C(A)로 나타냄
- 행렬에 N개의 열이 있다고 해서 열공간이 무조건 N차원이 되는 것은 아니라는 점이 중요
- 열공간의 차원 수는 열들이 선형 독립 집합을 형성하는 경우에만 열수와 동일
- 집합 내의 어떤 벡터도 해당 집합의 다른 벡터들의 선형 결합으로 표현될 수 없을 때 lineary independent 하다.
- 행공간(row space)
- 열공간과 완전히 동일한 개념이고 단지 열 대신 행으로 가능한 모든 가중 결합을 다룸
- 행공간은 R(A)로 나타냄, R(A) = C(Aᵀ)
- 영공간(null space) ~ 고유벡터와 특이벡터를 찾는 데 핵심적인 역할을 함
- 열을 선형으로 결합하여 영벡터를 생성하는 벡터 집합
- Ay = 0, N(A)
- 위 식을 만족시킬 수 있는 벡터 y는 A의 영공간에 존재함
- 영공간 벡터와 각 행 사이의 내적은 0(행공간과 영공간은 직교함)
- 행렬의 영공간의 빈 집합 표현법: N(A) = { }
- 계수-영공간의 차원 정리
- 행렬의 열이 선형 독립 집합이라면 영공간이 비어 있다.
- 최대계수와 최대열계수 행렬은 빈 영공간을 가지지만 축소계수 행렬의 영공간은 비어 있지 않음
- 행렬의 열이 선형 독립 집합이라면 영공간이 비어 있다.
-
계수(rank): 행렬 안에 서로 일차독립인 열벡터의 수
- 하나의 행렬과 연관된 고유한 숫자로, 행렬 부분공간의 차원의 수와 관련이 있으며 역행렬이나 방정식의 정답의 수를 결정하는 등의 행렬 연산에서 중요한 의미를 가짐
- 계수는 음이 아닌 정수
- 모든 행렬은 하나의 고유한 계수를 가짐
- 행렬의 계수는 r(A) 또는 rank(A)로 나타내고 'A는 계수-r 행렬이다'라고 읽음
- 행렬이 최대로 가능한 계소는 행 또는 열의 개수 중에서 더 작은 값. 즉 r = min{M, N}이 되는 행렬
- 최대로 가능한 계수를 갖는 행렬을 최대계수(full rank)라고 함
- 계수가 r < min{M, N}인 행렬은 '축소계수', '계수부족' 또는 '특이' 등 다양하게 불림
- 스칼라 곱셈은 행렬 계수에 영향을 미치지 않음
- 행렬 계수에 대한 동일한 해석과 정의
- 선형 독립 집합을 형성하는 최대 열(또는 행)의 수
- 열공간의 차원의 수(행공간의 차원의 수와 동일)
- 행렬 안에 정보를 포함하는 차원 수. 선형 종속적일 가능성이 있으므로 행렬의 전체 열 또는 행 수와 동일하지 않음
- 행렬에서 0이 아닌 특잇값의 수
- Practice
A = [[1], [2], [3]], r(A) = 1 B = [[1, 3], [2, 6], [4, 12]], r(B) = 1 C = [[1, 3.1], [2, 6], [4, 12]], r(C) = 2 D = [[1, 3, 2], [6, 6, 1], [4, 2, 0]], r(D) = 3(full-rank) E = [[1, 1, 1], [1, 1, 1], [1, 1, 1]], r(E) = 1 F = [[0, 0, 0], [0, 0, 0], [0, 0, 0]], r(F) = 0
-
특수 행렬의 계수
- 벡터: 모든 벡터의 계수는 1임(벡터는 정보의 열 또는 행이 단 하나밖에 없기 때문임. 유일한 예외는 영벡터)
- 영 행렬: 어떤 크기든 영 행렬(영벡터 포함)의 계수는 0임
- 단위 행렬: 단위 행렬의 계수는 행의 수(=열의 수)와 같음. 즉, r(IN) = N임
- 대각 행렬: 대각 행렬의 계수는 0이 아닌 대각 원소의 수와 같음 ~ 이 속성은 방정식을 풀거나 특잇값 분해를 해석할 때 유용하게 사용
- 삼각 행렬: 모든 대각선 원소에 0이 아닌 값이 있는 경우에만 최대계수, 대각선에 0이 하나 이상 있는 삼각 행렬은 축소계수
- 무작위 행렬: 무작위 행렬의 계수는 알 수 없지만 최대로 가능한 계수가 보장되도록 행렬을 만드는 방법이 있음(가우스 또는 균일한 분포 등에서 임의로 부동 소수점을 도출하면 됨)
- 계수-1 행렬: 0이 아닌 두 벡터 사이에서 외적을 취하면 계수-1 행렬을 만들 수 있음
-
덧셈 및 곱셈 행렬의 계수
- 개별 행렬의 계수를 알고 있다고 해서 덧셈 행렬 또는 곱셈 행렬의 정확한 계수를 알 수는 없음(영 행렬은 예외)
- 대신 개별 행렬의 계수로 원하는 행렬이 가질 수 있는 최대로 가능한 계수를 구할 수 있음
- rank(A+B) ≤ rank(A) + rank(B)
- 덧셈 행렬의 계수는 개별 행렬의 계수보다 클 수 있음
- rank(AB) ≤ min{rank(A), rank(B)}
- 곱셈 행렬의 계수는 개별 행렬의 가장 큰 계수보다 클 수 없음(외적이 항상 계수-1 행렬을 생성하는 이유)
-
이동된 행렬의 계수
- 행렬을 이동시키면 보통 최대계수가 됨(정방 행렬을 이동하는 주된 목표는 r < M에서 r =M으로 계수를 늘리는 것)
-
계수 응용
-
벡터가 행렬의 열공간에 있는지 여부를 확인하는 알고리즘
- 벡터로 행렬을 확장(~A: 확장한 행렬)
- 행렬을 확장한다: 행렬의 오른쪽에 열을 추가한다는 뜻
- 두 행렬의 계수를 계산
- 두 계수를 비교
- rank(A) = rank(~A): 벡터는 행렬 A의 열공간에 있음
- rank(A) < rank(~A): 벡터는 행렬 A의 열공간에 없음
- 벡터로 행렬을 확장(~A: 확장한 행렬)
-
벡터 집합의 선형 독립성
- 벡터 집합이 선형적으로 독립적인지 여부를 확인하는 알고리즘
- 벡터를 행렬에 넣고 행렬의 계수를 계산한 다음 해당 행렬의 최대로 가능한 계수와 비교(min{M, N})
- r = N: 벡터 집합은 선형적으로 독립
- r < M: 벡터 집합은 선형적으로 종속
- 벡터 집합이 선형적으로 독립적인지 여부를 확인하는 알고리즘
-
-
행렬식(determinant)
- 행렬식은 정방 행렬과 관련된 숫자, det(A) 또는 |A|로 나타냄
- 중요한 특성
- 행렬식은 정방 행렬에 대해서만 정의됨
- 2x2나 3x3 행렬의 경우 비교적 간단하게 구할 수 있지만 크기가 커지면 점점 계산하기 복잡해짐
- 행렬식을 계산해야 할 경우 np.linalg.det() 또는 scipy.linalg.det()을 사용
- 모든 특이(축소계수) 행렬에 대해서 행렬식은 0임
- r < M이라면 Δ = 0
-
행렬의 특성 다항식(characteristic polynomial)
- 행렬 이동과 행렬식을 결합하는 것
- det(A - λI)Δ
- Δ = 0이 되는 특성 다항식에 대한 해는 행렬의 고윳값(eigenvalue)
- 벡터는 열 또는 행에 숫자를 나열한 것으로 순서가 중요. 벡터의 원소 수는 차원이라고 함. 벡터는 차원과 동일한 수의 축을 가진 기하학적 공간에서 하나의 선으로 나타낼 수 있음.
- 덧셈, 뺄셈, 아다마르곱과 같은 벡터 산술 연산은 원소별로 계산함.
- 내적은 차원이 같은 두 벡터 간의 관계를 인코딩한 단일 숫자로, 원소별로 곱하고 합해서 구함(내적은 매우 중요. 내적은 유사도와 관련이 있음).
- 두 벡터가 직교하면 내적은 0이며 기하학적으로 벡터가 직각으로 만나는 것을 의미함(분해에 활용).
- 직교벡터 분해는 하나의 벡터를 기준벡터와 직교하는 벡터, 평행한 벡터로 나누는 것임(공식은 기하학적으로 도출 가능하나, 공식이 내포한 개념인 '크기에 대한 매핑'을 기억해야 함).
- 벡터 집합은 벡터들의 모음이며, 벡터 집합에는 유한하거나 무한한 수의 벡터가 존재함.
- 선형 결합은 집합의 벡터들에 스칼라를 곱하고 합하는 것으로 선형대수학에서 가장 주요한 개념임.
- 집합에서 하나의 벡터가 집합의 다른 벡터들의 선형 결합으로 기술될 수 있으면 해당 벡터 집합은 선형 종속적임. 만약 이러한 선형 결합이 없다면 벡터 집합은 선형 독립적임.
- 부분공간은 벡터 집합의 가능한 모든 선형 결합으로 만들어진 무한 집합임.
- 기저는 공간을 측정하기 위한 일종의 자와 같은 개념임. 벡터 집합이 (1) 어떤 부분공간을 생성하고 (2) 선형 독립적이라면 해당 부분 공간에 대한 기저가 됨. 데이터 과학의 주요 목표는 데이터 집합을 설명하거나 문제를 해결하기 위한 최상의 기저 집합을 찾는 것임.
- 행렬은 행과 열로 이루어진 숫자의 표
- 여러 특수 행렬(난수, 정방, 비정방, 대각, 삼각(상삼각, 하삼각), 단위, 영, 대칭 행렬)이 존재
- 행렬의 덧셈, 스칼라 곱셈, 아다마르곱과 같은 산술 연산은 원소별로 동작
- 행렬의 이동은 대각 원소에 상수를 더하는 것(대각이 아닌 요소는 변경 X), 이동은 주로 고윳값을 찾거나 통계 모델의 정규화와 같은 분야에 응용
- 행렬 곱셈은 왼쪽 행렬의 행들과 오른쪽 행렬의 열들 사이의 내적, 행렬 곱셈의 유효성 규칙: (M x N)(N x K) = (M x K)
- LIVE EVIL: 여러 행렬의 곱의 전치는 각 행렬을 전치하고 역순으로 곱한 것과 동일
- 대칭 행렬은 대각을 거울로 보고 반사된 형태로 각 행은 대응되는 열과 같으며 A = Aᵀ로 정의
- 모든 행렬에 자신의 전치 행렬(Aᵀ)을 곱하면 대칭 행렬을 만들 수 있음, 결과 행렬인 AᵀA는 통계 모델과 특잇값 분해의 핵심
- 행렬 노름에는 많은 종류가 있는데 원소별과 유도별로 크게 분류할 수 있음
- 전자는 행렬의 원소의 크기를 반영하는 반면 후자는 벡터에 대한 행렬의 기하학적 변환 효과를 반영함
- 가장 일반적으로 사용되는 원소별 노름은 프로베니우스 노름(즉, 유클리드 노름 또는 l2 노름)이라고 하며 원소의 제곱합의 제곱근으로 계산됨
- 행렬의 대각합은 대각 원소의 합
- 네 개의 행렬 공간(열, 행, 영, 왼쪽-영)이 있으며, 이들은 행렬의 서로 다른 특징의 선형 가중 결합 집합으로 정의됨
- 행렬의 열공간은 행렬에 있는 열의 모든 선형 가중 결합으로 구성되며 C(A)로 나타냄
- 선형대수학에서 중요한 부분은 어떤 벡터 b가 행렬의 열공간에 존재하는지 여부. 그렇다면 Ax = b를 만족하는 벡터 x가 존재하는 것
- 행렬의 행공간은 행렬의 행에 대한 선형 가중 결합 집합이며 R(A) 또는 C(Aᵀ)로 나타냄
- 행렬의 영공간은 열을 선형으로 결합하여 영벡터를 생성하는 벡터 집합. 즉, 방정식 Ay = 0을 만족하는 벡터 y(y=0인 자명한 해는 제외). 영공간은 다른 응용중에서도 고유벡터를 찾는 데 중요함
- 계수는 행렬과 관련된 수로 음이 아닌 정수. 계수는 선형 독립 집합을 형성할 수 있는 가장 많은 열(또는 행)의 수. 최대로 가능한 계수보다 작은 계수를 갖는 행렬을 축소계수 또는 특이라고 함
- 정방 행렬의 대각에 상수를 더해서 이동시키면 보통 최대계수가 됨
- 행렬의 열공간에 벡터가 존재하는지를 결정할 때도 계수를 응용할 수 있음. 행렬의 계수와 벡터로 확좡된 행렬의 계수를 비교하면 됨
- 행렬식은 정방 행렬과 관련된 숫자임(비정방 행렬에는 행렬식이 없음).
- 가장 중요한 것은 모든 축소계수 행렬에 대해 0이고 모든 최대계수 행렬에 대해 0이 아니라는 것
- 특성 다항식 λ로 이동된 정방 행렬의 행렬식이 어떠한 값이 되도록 하는 방정식으로 변환함.
1.1.1. x, y, z가 Rⁿ의 벡터이고 h와 k가 스칼라일 때,
- (1) x + y = y + x
- (2) (x + y) + z = x + (y + z)
- (3) x + 0 = x = 0 + x
- (4) x + (-x) = 0 = (-x) + x
- (5) k(x + y) = kx + ky
- (6) (h + k)x = hx + kx
- (7) (hk)x = h(kx)
- (8) 1x = x
1.1.2 x가 Rⁿ의 벡터이고 k가 스칼라일 때,
- (1) 0x = 0
- (2) k0 = 0
- (3) (-1)x = -x
etc) 직사각행렬을 축소된 행사다리꼴 행렬로 만들면 단 하나의 기약 행사다리꼴 행렬만 갖는데, 즉, 다른 기약 행사다리꼴은 존재하지 않는다.(Lay p.13)
-
상관관계
- 상관관계는 통계와 머신러닝에서 가장 근본적이면서 중요한 분석 방법, 변수의 크기로 정규화된 두 변수 사이의 내적
- 상관계수(correlation coefficient): 두 변수 사이의 선형 관계를 정량화한 숫자(-1(음의 상관관계)부터 +1(양의 상관관계) 사이의 범위)
- 상관계수가 기대하는 범위 -1 ~ +1 사이에 존재하려면 정규화(normalization)가 필요
- 각 변수의 평균중심화: 각 데이터값에서 평균값을 빼는 것
- 피어슨 상관계수(벡터 노름 곱으로 내적을 나누기)
- 상관관계는 통계와 머신러닝에서 가장 근본적이면서 중요한 분석 방법, 변수의 크기로 정규화된 두 변수 사이의 내적
-
코사인 유사도
-
상관관계와 코사인 유사도 차이
- 피어슨 상관관계의 관점에서는 한 쪽 변수에 의해 다른 변수가 변한다면 변수 간의 숫자 차이는 결과에 영향을 미치지 않음
- 코사인 유사도의 관점에서는 한 쪽 변수에 의해 다른 변수가 변한다면 변수 간의 숫자 차이가 결과에 영향을 미침
-
시계열 필터링과 특징 탐지
- 필터링은 본질적으로 특징 탐지 기법
- 템플릿(커널)이 시계열 신호의 일부와 일치하는 특징을 찾음(특정 기준에 최적화되도록 커널을 구성, e.g., 매끄러운 변동, 날카로운 에지, 특정 파형 모양)
- 이렇게 필터링된 결과는 또 다른 시계열이 되어 이를 통해 신호의 특성이 커널의 특성과 얼마나 일치하는지 알 수 있음
- 커널과 시계열 신호 사이의 내적을 계산하는 것이 필터링 메커니즘
- 필터링은 본질적으로 특징 탐지 기법
-
k-평균 클러스터링
- k-평균 클러스터링: 그룹 중심까지의 거리를 최소화하도록 다변량 데이터를 상대적으로 적은 수(k)의 그룹 또는 범주로 분류하는 비지도 기법
- 알고리즘
- 데이터 공간에서 임의의 k개 클러스터 중심점을 초기화(이때, 중심은 클래스 또는 범주, 다음 단계에서는 각 데이터 관측치를 각 클래스에 할당)
- 각 데이터 관측치와 각 중심 사이의 유클리드 거리를 계산
- 하나의 데이터 관측치와 중심 사이의 유클리드 거리를 계산할 때 선형대수학 개념을 사용함
- 각 데이터 관측치를 가장 가까운 중심의 그룹에 할당(이중 for문 대신 벡터와 브로드캐스팅을 사용하여 효율적으로 수행 가능)
- 각 중심을 해당 중심에 할당된 모든 데이터 관측치의 평균으로 갱신
- 수렴 기준을 만족할 때까지 또는 N회까지 2~4단계를 반복
- 다변량 데이터 공분산 행렬
- 행렬-벡터 곱셈을 통한 기하학적 변환
- 이미지 특징 탐지