Datascience/Linear Algebra

[개발자를 위한 실전 선형대수학] 벡터와 기본 연산

hchanryu 2024. 1. 14. 14:38

 

개발자를 위한 실전 선형대수학(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인 벡터 

- 비단위벡터는 하나의 단위벡터와 연관되어 있다.[각주: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임을 알 수 있다.

 

 

 

  1. 영벡터는 연관된 단위벡터가 없다. 방향이 없고 0이 아닌 길이로 늘릴 수 없기 때문이다. [본문으로]