개발자를 위한 실전 선형대수학(Practical Linear Algebra for Data Science)
1장 벡터, 파트 1 : 벡터와 벡터의 기본 연산 정리
벡터는 선형대수학 전체의 초석이다.
벡터(Vector) : 순서대로 나열된 수 목록(ordered list of number)
- 차원(dimensionality) : 벡터가 가진 원소의 수(수학적 차원의 개념), (파이썬에서 벡터의 길이, 모양)
▶ 파이썬에서의 차원은 수 객체를 출력하는 데 사용되는 기하학적 차원의 수
- 방향(orientation) : 벡터의 원소들이 나열된 모양 ( 열 방향, 행 방향)
벡터의 기하학적 해석
- 벡터는 특정 길이(또는 크기)와 방향을 가진 직선
"벡터를 기하학적 또는 대수학적으로 개념화하는 것은 단순히 같은 것을 해석하는 관점의 차이일 수도 있지만, 서로 다른 응용 분야에서 직관을 얻는 데 도움이 됩니다. · · · 벡터의 대수학적 해석은 데이터 과학에서 유용합니다."
벡터 연산
- 두 벡터의 덧셈 : 덧셈은 서로 대응되는 원소끼리 더합니다.
- 스칼라-벡터 곱셈 : 스칼라(scalar, 벡터나 행렬에 포함되지 않은 수)를 각 벡터 원소에 곱합니다.
v = np.array([[1,2,3]])
w = np.array([[10,20, 30]])
v+w #array([[11, 22, 33]])
3*v #array([[3, 6, 9]])
Python에서 벡터 브로드캐스팅 연산(Broadcasting)
- 브로드캐스팅 연산은 현대 컴퓨터 기반 선형대수학에서만 존재합니다.
- 브로드캐스팅은 본질적으로 한 벡터를 다른 벡터의 각 원소로 연산을 여러 번 반복하는 것
#브로드캐스팅 연산
v = np.array([[1,2,3]]).T
w = np.array([[10,20]])
v+w
array([[11, 21],
[12, 22],
[13, 23]])
벡터의 크기, 노름(norm)
v = np.array([[1,2,3]])
#len()은 수학의 차원의 크기
v_dim = len(v)
#np.norm은 기하학적 길이, 크기 norm 반환
v_mag = np.linalg.norm(v)
단위 벡터(unit vector)
- 기하학적 길이(노름)가 1인 벡터
임의의 비단위 벡터 v에 대하여, 연관된 단위벡터를 다음과 같은 식으로 구할 수 있다.
내적(dot product, 점곱, 스칼라곱)
- 내적 연산은 두 벡터에서 대응되는 원소끼리 곱한 다음 모든 결과를 더하여 이루어진다.
#inner product
v = np.array([[1,2,3]])
w = np.array([[1,2,3]])
np.dot(v,w)
- 벡터에 스칼라를 곱하면 내적도 그만큼 커진다.
- 내적은 차원이 같은 두 벡터 간의 관계를 인코딩한 단일한 숫자, 두 벡터의 사이의 관계를 나타낸다.
두 벡터 사이의 유사성(similatrity) 또는 매핑(mapping)의 척도로 해석 가능
두 변수 사이의 정규화(단위의 영향 배제)된 내적을 피어슨 상관계수(Pearson Correlation co-efficient)라고 한다.
- 내적의 기하학적 정의 : 두 벡터의 노름을 곱하고, 두 벡터의 사이 각의 코사인값을 곱한 것
- 직교 벡터의 내적은 0이다.
다양한 벡터 곱셈
아다마르 곱(Hardamard product)
- 원소별로 곱하는 것, 여러 개의 스칼라를 곱할 때 유용하다
ex) 서로 다른 가격으로 판매하는 음료수 자판기 데이터가 있을 때(자판기의 판매 가격 행렬, 자판기의 판매량 행렬), 아다마르 곱을 이용하여 자판기 별로 매출을 계산할 수 있다.(전체 매출의 합은 내적)
직교벡터 분해
- "분해를 통해 행렬에 '숨겨진' 정보를 밝혀내거나 행렬을 사용하기 쉬운 형태로 만들기도 하고 또는 데이터를 압축하기도 합니다."
- 직교투영법(orthogonal projection) : 기준 벡터와 직교한 벡터와 기준 벡터와 평행한 벡터로 분해
벡터 v를 기준 벡터 u에 투영한 것을 βu라고 하면(벡터의 스칼라곱), 수직인 성분은 v- βu을 알 수 있다(벡터의 합).
이때 βu, v- βu은 서로 수직이므로, 두 벡터의 내적값이 0임을 알 수 있다.
- 영벡터는 연관된 단위벡터가 없다. 방향이 없고 0이 아닌 길이로 늘릴 수 없기 때문이다. [본문으로]
'Datascience > Linear Algebra' 카테고리의 다른 글
1장 연습문제 (1) | 2024.01.22 |
---|---|
[개발자를 위한 실전 선형대수학] 행렬의 확장 개념(1) (1) | 2024.01.21 |
[개발자를 위한 실전 선형대수학] 행렬과 행렬의 기본 연산 (1) | 2024.01.21 |
[개발자를 위한 실전 선형대수학] 벡터의 응용 (0) | 2024.01.21 |
[개발자를 위한 실전 선형대수학] 벡터의 확장 개념 (0) | 2024.01.14 |