1. Dot product
- 두 벡터가 있을 때, 두 벡터의 1) 길이 2) 사이의 각도 3) 거리를 구하기 위해서는 벡터 공간의 기하학적 특징(geometric properties in a vector space)과 관련이 있는 inner product(내적)가 필요하다.
- transpose를 취하는 것은 행렬간의 곱을 위한 size 조정이다.
- 1) 벡터의 길이는 자기 자신과 자기 자신의 transpose를 곱한 것에 루트를 씌운 것이다.
계산 자체는 각 원소를 제곱하여 더한 것에 루트를 씌운 것과 같다. - 2) 두 벡터 사이의 거리는 두 벡터의 뺄셈의 norm을 구한 것과 같다.
- 3) 이제 코사인 법칙을 이용하여 두 벡터 사이의 각을 구할 수 있다.
코사인 알파(두 벡터 사이의 각)는 "두 벡터의 내적"을 '각 벡터의 길이(distance, norm)의 곱'으로 나눈 것과 동일하다.
코사인 법칙을 어떻게 사용할 수 있었는지는 아래의 캡쳐본과 링크를 참고할 수 있다.
https://proofwiki.org/wiki/Cosine_Formula_for_Dot_Product
2. Dot product(Quiz)
- 열벡터의 길이(length) 구하기: 단순히 자기자신과 내적을 취하면 된다.(1문제)
- + 단순 내적 구하기(1문제)
- numpy로 벡터 x의 길이를 정의하는 문제가 있다.
벡터의 길이는 자기 자신과 곱한 벡터의 원소들을 모두 더하고 루트를 씌운 값이다.
따라서 np.dot(x,x)를 이용할 수 있다.
(또는 행렬곱 x @ x.T 를 이용하여 구해진 벡터의 원소를 전부 더하고 루트를 씌울수도 있다)
- 열벡터의 내적(dot product)을 통해 두 벡터 사이의 각도 구하기(라디안)(2문제)
- 공부한 내용에 따르면 'a = 두 벡터 사이의 각도'로 정의할 때, cos(a) = 내적 / 각 벡터 길이의 곱이다.
결국 우리가 구하고자 하는 것은 a(라디안)이므로 cos의 역함수를 취해줘야 값을 구할 수 있다.
- 공부한 내용에 따르면 'a = 두 벡터 사이의 각도'로 정의할 때, cos(a) = 내적 / 각 벡터 길이의 곱이다.
- 두 벡터 사이의 거리 구하기(1문제)
- 벡터의 차를 내적하면 된다.
맥북의 계산기는(공학 포함) 좀 구린 것 같으니 인터넷 사이트를 이용하도록 하자.
'함수' 탭에서 코사인의 역함수(아크 코사인)을 선택하고 나머지 변수를 입력한 뒤,
'호도법'을 선택했을 때의 값을 소수점 2자리까지 반올림해서 정답을 입력하면 된다.
https://www.desmos.com/scientific?lang=ko
출처: Coursera, Mathematics for Machine Learning: PCA, Imperial College London.
'PCA > 2주차' 카테고리의 다른 글
Inner products(2) (0) | 2022.10.01 |
---|---|
Inner products(1) (0) | 2022.09.30 |