
4.1 Numpy에서 행렬 생성과 시각화
행렬 ( 표기 : A 또는 M )
▶ 특수 행렬
- 난수 행렬
: 가우스(정규)와 같은 분포로부터 무작위로 추출된 숫자를 가진 행렬
# 난수 생성 함수
A = np.random.randn(4, 6) # 행 수, 열 수
- 정방 행렬과 비정방 행렬 ( 표기 : RN∗N )
: 행 수와 열 수가 같은 행렬
: 행 수가 열 수보다 더 많으면 높다고 표현, 열 수가 행 수보다 더 많으면 넓다고 표현
- 대각 행렬
: 행렬의 대각은 왼쪽 위에서 시작해 오른쪽 아래로 내려가는 원소들을 말함
: 대각 행렬은 모든 비대각 원소가 0, 대각 원소는 0 또는 그 외의 값을 가질 수 있는 유일한 값
# 대각 행렬 함수
A = np.diag(행렬) # 대각 원소를 벡터로 반환
B = np.diag(벡터) # 대각 원소에 해당 벡터 원소가 있는 행렬 반환
- 삼각 행렬
: 주 대각선의 위 또는 아래가 모두 0인 행렬
: 대각선 위에 0이 아닌 원소가 있으면 상삼각 행렬
: 대각선 아래에 0이 아닌 원소가 있으면 하삼각 행렬
# 삼각 행렬 함수
A = np.triu() # 상삼각 행렬
B = np.tril() # 하삼각 행렬
- 단위 행렬 ( 표기 : I5 )
: 모든 대각 원소가 1인 정방 대각 행렬
: 행렬 또는 벡터에 단위 행렬을 곱하면 동일한 행렬 또는 벡터가 나온다는 점에서 숫자 1과 동등.
# 단위 행렬
A = np.eye()
- 영 행렬 ( 표기 : 0 )
: 모든 원소가 0인 행렬
# 영 행렬 함수
A = np.zeros()
4.2 행렬 수학 : 덧셈, 스칼라 곱셈, 아다마르곱
▶ 행렬의 덧셈과 뺄셈
: 두 행렬을 더하거나 뺄 때는 대응되는 원소끼리 가능. 즉, 크기가 같은 두 행렬 사이에서만 성립함.
▶ 행렬 이동
: 정방 행렬에 스칼라를 더하는 방식
: 대각 원소에 상수를 더하는 것 (대각이 아닌 요소는 변하지 않음)
: A+γI
A = np.array([], [], ..) # 배열
s = 6 # 스칼라
# 행렬 이동
A + s*np.eye(len(A))
# 행렬 이동이 아님!
A + s
: 데이터 과학 분야에서는 행렬의 수치적 안정성을 높이고, 이동의 효과를 보면서 행렬을 가능한 많은 정보를 보존하기 위해 상대적으로 적은 양을 이동함.
: 행렬의 이동을 이용한 주요 응용 2가지 : 1) 행렬의 고윳값을 찾는 메커니즘 2) 모델을 데이터에 적합시킬 때 행렬을 정규화하는 메커니즘
▶ 스칼라 곱셈
▶ 아다마르 곱 ( 표기 : A⊙B )
# 아다마르 곱 함수
A = np.random.randn(3, 4)
B = np.random.randn(3, 4)
# 아다마르 곱
A * B
np.multiply(A, B)
# 아다마르 곱이 아님!
A @ B
4.3 (표준) 행렬 곱셈 ( 표기 : AB )
한 행렬의 행과 다른 행렬의 열 사이 스칼라 곱셈의 조직적 집합
>> 두 행렬의 크기가 서로 짝이 맞을 때 두 행렬을 곱할 수 있음.
▶ 행렬 곱셈
M x N ↔ N x K
행렬 곱셈은 왼쪽 행렬의 열 수가 오른쪽 행렬의 행 수와 같을 때 유효 (N으로 동일)
그 이유는 곱셈 행렬의 (i,j)번째 원소가 행렬의 i번째 행과 오른쪽 행렬의 j번째 열 사이의 내적이기 때문.
+ 일반적인 교환 법칙을 따르지 않음.
곱셈 행렬의 크기는 왼쪽 행렬의 열 수와 오른쪽 행렬의 열 수로 정의됨. (M x K)
▶ 행렬 곱셈 예제
: 행렬 곱셈의 결과는 왼쪽 행렬의 행과 오른쪽 행렬의 열 사이의 모든 쌍에 대한 선형 관계를 저장하는 행렬이 됨.
▶ 행렬-벡터 곱셈
: 행 벡터만 행렬의 왼쪽에 곱할 수 있음 → vTA
: 열 벡터만 행렬의 오른쪽에 곱할 수 있음 → Av
: 행렬-벡터 곱셈의 결과는 항상 벡터임. 결과 벡터의 방향은 곱하는 벡터의 방향에 따라 결정됨.
▶ 행렬-벡터 곱셈의 해석 (선형 가중 결합, 기하학적 변환)
: 행렬-벡터 곱셈이 해당 벡터를 회전하고 확장할 수 있는 역할을 함.
: 행렬은 이러한 변환을 담는 그릇임.
4.4 행렬 연산 : 전치
단순히 행과 열을 바꾸는 것
# 행렬 전치 매서드 및 함수
A = np.array([ [...], [...] ])
A_T1 = A.T # 메서드
A_T2 = np.transpose(A) # 함수
▶ 내적과 외적 표기법
[ 내적 ] ㅡ ㅣ
: 크기가 M x 1인 두 열 벡터에서 하나만 전치하면 1 x M과 M x 1인 두 개의 '행렬'이 존재하게 됨.
'내부' 차원은 일치하고 '외부' 차원을 통해 곱셈의 결과가 1 x 1 스칼라가 됨을 알 수 있음. 이것이 내적을 aTb로 표시하는 이유임.
[ 외적 ] ㅣ ㅡ
: 크기가 M x 1과 1 x N인 열벡터와 행벡터를 곱하면 '내부' 차원은 일치하고, 결과의 크기는 M x N이 됨.
4.5 행렬 연산 : LIVE EVIL (연산 순서)
여러 행렬의 곱의 전치는 각 행렬을 전치하고 역순으로 곱한 것과 같음
L,I,V,E는 모두 행렬임.
(LIVE)T=ETVTITLT
4.6 대칭 행렬
대응되는 행과 열이 같은 행렬
즉, 행과 열을 바꿔도 행렬에는 아무런 변화가 없음.
AT=A
대칭 행렬은 자신의 전치 행렬과 같음.
▶ 비대칭 행렬로부터 대칭 행렬 생성하기
어떤 행렬이든 자신의 전치를 곱하면 정방 대칭 행렬이 생성됨.
ATA와 AAT 모두 정방 대칭 행렬임.
[ 정방 ]
만약 A가 M x N이라면 ATA는 (N x M)(M x N)임. 그러면 행렬의 크기는 N x N으로 정방 행렬이 됨.
[ 대칭 ]
대칭 행렬의 정의는 한 행렬과 전치 행렬이 동일하다는 것.
(ATA)T=ATATT=ATA
결과 행렬인 ATA 은 통계 모델의 특잇값 분해의 핵심임.
'통계학, 인과추론 스터디 > 선형 대수학' 카테고리의 다른 글
선형 대수학 | Chapter 6. 행렬 응용 : 데이터 분석에서의 행렬 (3) | 2024.12.06 |
---|---|
선형 대수학 | Chapter 5. 행렬, 파트 2 : 행렬의 확장 개념 (1) | 2024.12.05 |
선형 대수학 | Chapter 3. 벡터 응용 : 데이터 분석에서의 벡터 (0) | 2024.12.03 |
선형 대수학 | Chapter 2. 벡터, 파트2 : 벡터의 확장 개념 (0) | 2024.12.02 |
선형 대수학 | Chapter 1. 벡터, 파트1 : 벡터와 벡터의 기본 연산 (2) | 2024.11.29 |
댓글