inner product : 내적
- 벡터와 벡터의 내적 결과 = 스칼라
- <u, v> = u·v = u1v1 + u2v2 + ... + unvn = u^Tv
- 내적을 구할 때 한 행렬의 전치행렬과 나머지 행렬을 벡터곱 시켜 구할 수 있다.
numpy.inner(arr1, arr2)
로 구할 수 있다.- 백터의 길이 및 백터 간 관계 파악이 가능하며 두 벡터 사이 각도 역시 추정 가능하다.
-> 내적 연산으로 두 벡터 수직 여부 판단 가능 if numpy.inner(arr1, arr2) > 0: degree_between_arr1_arr2 < 90 elif numpy.inner(arr1, arr2) == 0: degree_between_arr1_arr2 == 90 else: degree_between_arr1_arr2 > 90
- 백터의 길이 | norm 은 내적값의 제곱근을 구하면 된다.
-> ||u|| = sqrt(u1^2 + u2^2 + ... + un^2) numpy.linalg.norm(arr)
로 구할 수 있다.- 2차원 상의 백터 u = (a, b)라 할 경우 좌표평면에 나타낼 때, 벡터의 길이와 x축 간의 각도를 안다면
-> u = (||u||cosʘ, ||u||sinʘ) 로 나타낼 수 있다. 중, 고등학생 때 배운 sin, cos 구하기 및 피타고라스의 정리를 생각해보면 간단.
projection : 정사영
한 벡터가 다른 벡터에 수직으로 project 되는 것
내적과 정사영한 벡터 길이와 연관이 있다.
위의 u를 x축 벡터 x에 정사영한 벡터의 길이는 u의 x좌표, 즉 ||u||cosʘ가 되며 y축 벡터 y에 정사영한 길이는 y좌표, ||u||sinʘ가 된다.
projection 개념에 따라 inner product를 재정의할 경우, u·v = 벡터 u를 벡터 v에 정사영시킨 벡터의 길이, 즉 ||u||cosʘ*||v||와 같다.
내적값이 음수라면 u의 v에 정사영 한 벡터의 방향이 v의 방향과 반대라는 것.
지도 학습의 support vector machine 개념을 이해할 때 내적은 필수다!
linear transformation : 선형 변환
- 벡터의 확대, 축소, 회전, 반사 등... 변환을 주는 것.
- 2차원 벡터를 3차원으로 이동시키는 등의 변형 역시 linear transformation으로 이해할 수 있다.