[TIL] 2021.02.20

hyelimchoi1223·2021년 2월 20일
1

[TIL] 2021년

목록 보기
15/44
post-thumbnail

✏️ 오늘 공부한 내용

행렬 곱의 특징

import numpy as np
# 1. 교환법칙 성립이 안됨. (Commutative)
A = np.matrix([[1, 2], [3, 4]])
B = np.matrix([[5, 6], [7, 8]])
print(A*B)
# 결과
# [[19 22]
# [43 50]]
print(B*A)
# 결과
# [[23 34]
# [31 46]]
# 2. 결합법칙은 성립이 됨. (Associative)
C = np.matrix([[8, 9], [2, 5]])
print((A*B)*C)
# 결과
# [[196 281]
# [444 637]]
print(A*(B*C))
# 결과
# [[196 281]
# [444 637]]
# 3. 힝등행렬 : 어떤 행렬에 항등행렬을 곱해도 값이 변하지 않음. (Identity Matrix)
I = np.identity(2)
# I = np.eye(2)
print(A)
# [[1 2]
# [3 4]]
print(A*I)
# 결과
# [[1. 2.]
# [3. 4.]]
print(I*A)
# 결과
# [[1. 2.]
# [3. 4.]]
# 4. 역행렬 : A라는 행렬과 곱해서 1을 만드는 행렬 (Inverse Matrix)
# 정방행렬일 경우에 역행렬이 존재함.
# A * A의 역행렬 = A의 역행렬 * A = I
D = np.matrix([[1, 2], [3, 4]]).astype(int)
D_inv = np.linalg.inv(D).astype(float)
print(D_inv)
# 결과
# [[-2.   1. ]
# [ 1.5 -0.5]]
print(D * D_inv)
# 항등행렬이 나올거라 예상했는데 왜 이런 결과가 나온것인지 이해가 안간다;;
# 손으로 풀때는 제대로 나오는데...
# [[1.00000000e+00 1.11022302e-16]
#  [0.00000000e+00 1.00000000e+00]]
# -> 위의 현상에 대한 numpy github issue
# 결론적으로 부동소수점 계산에 의해 위와 같은 결과가 나온다는 이야기
# https://github.com/numpy/numpy/issues/12397
# 5. 전치행렬
D = np.matrix([[1, 2], [3, 4]]).astype(int)
print(D.T)
# 결과
# [[1 3]
# [2 4]]

Multivariate linear regression

📆 오늘 하루 돌아보기

처음 변수가 하나인 선형회귀변수를 했을때 편미분을 이용한 기울기 감소 알고리즘과 공식을 이해한줄 알았는데 2개 이상의 변수가 나타나니 머리가 아파지기 시작했다. 그래서 처음부터 기울기 감소 알고리즘부터 이해해보기로 했다. 내가 이해를 못했던 것은 편미분에 대한 개념이 제대로 안잡혀있었기 때문이었다. 이번 기회에 증명도 하면서 편미분에 대해서 이해를 시키고, 여러개의 변수일때 기울기 감소 알고리즘 공식을 공부했다. 이때를 위해 열심히 행렬을 공부했나보다. 행렬 기초부터 다시 복습했던 것은 괜찮은 선택이었다. 안그랬음 오늘 강의 내내 이해하지 못했을테니!!!
그리고 오늘 드디어 어제부터 고민하던 알고리즘을 풀었다. 어덯게 해야하는지까지 잡혔는데 시간이 너무 오래걸려서 어떻게 시간을 줄이는지 고민을 많이 했다. 오늘 거의 1/3정도는 알고리즘 생각만 한 듯 하다. 그래도 결국 문제를 잘 해결해서 뿌듯하고 오늘 잠이 잘 올 듯 하다!!😆

0개의 댓글