데이터 분석

벡터와 시리즈 기초 개념

25G 2023. 4. 4. 10:02

시리즈

판다스에서 1차원 데이터를 담는 시리즈 자료형을 제공한다. 1차원 데이터 배열, 인덱스와 값을 가지는 데이터 구조. 시리즈는 열 단위로 데이터를 다루는 데이터프레임에서 각 열을 나타내는 자료형

  • 데이터를 일련의 레이블(인덱스)에 매핑합니다.
  • NumPy 배열과 비슷한 구조이나, 인덱스를 사용하여 각 데이터에 접근할 수 있습니다.
  • 데이터의 순서가 보장됩니다.
    예시
`import pandas as pd`

# 데이터와 인덱스를 지정하여 시리즈 생성

s = pd.Series(\[1, 2, 3, 4\], index=\['a', 'b', 'c', 'd'\])  
print(s)

결과


a 1  
b 2  
c 3  
d 4  
dtype: int64

백터

2차원 배열이며 다음과같이 예시를 들 수 있습니다.
벡터는 순서쌍(order pair)의 모음으로 이루어진 집합으로 생각할 수 있습니다.

예를 들어, 다음과 같은 2차원 벡터 A와 B가 있다고 해봅시다.

A = (3, 4)
B = (1, 2)

이 벡터들은 아래와 같이 좌표평면에서 나타낼 수 있습니다.


(1, 2)  
B  
|  
|  
|  
|  
|  
(3, 4)------A

여기서 첫 번째 원소를 x좌표, 두 번째 원소를 y좌표라고 생각하면, 이 벡터들은 각각 (3, 4), (1, 2)라는 좌표를 가진 점으로 이루어져 있습니다. 이 점들은 각각 수직선과 수평선이 교차하는 지점으로 생각할 수 있습니다.

2차원 벡터는 이와 같은 좌표를 가지고 있기 때문에, 평면 상의 여러 점들을 다루는 문제에서 많이 활용됩니다. 2차원 벡터는 다음과 같은 연산이 가능합니다.

  1. 벡터의 덧셈: 두 벡터의 대응되는 원소를 더한 후 새로운 벡터를 생성합니다.

A + B = (3+1, 4+2) = (4, 6)

  1. 벡터의 뺄셈: 두 벡터의 대응되는 원소를 뺀 후 새로운 벡터를 생성합니다.

A - B = (3-1, 4-2) = (2, 2)

  1. 벡터의 내적: 두 벡터의 대응되는 원소를 곱한 후, 그 결과들을 모두 더합니다.

A · B = 3_1 + 4_2 = 11

  1. 벡터의 외적: 두 벡터의 대응되는 원소를 곱하여 새로운 벡터를 생성합니다. 이 때 생성된 벡터는 두 벡터가 이루는 평행사변형의 면적을 나타냅니다.

A x B = 3_2 - 4_1 = 2

백터의 내적과 외적의 활용 분야

백터의 내적과 외적은 여러 분야에서 활용됩니다.

백터의 내적은 두 백터의 각 성분을 곱한 후 모두 더한 것으로, 두 백터가 이루는 각도에 대한 정보를 가지고 있습니다. 이를 활용하여 코사인 유사도(cosine similarity)를 계산할 수 있습니다. 코사인 유사도는 자연어 처리 분야에서 문서 간 유사도를 계산하거나 추천 시스템에서 아이템 간 유사도를 계산하는 등 다양한 분야에서 사용됩니다.

백터의 외적은 두 백터가 이루는 평면에 수직인 백터를 반환합니다. 이를 활용하여 면적이나 부피를 계산하는 데 사용됩니다. 예를 들어, 두 개의 벡터의 외적을 통해 얻은 벡터는 이루는 평면의 면적을 나타내는데, 이를 이용하여 삼각형의 넓이나 사변형의 면적을 계산할 수 있습니다. 또한, 물리학에서는 토크나 각운동량 등을 계산하는 데에도 활용됩니다.

코사인 유사도?

코사인 유사도는 두 벡터간의 유사성을 비교하기 위한 방법 중 하나입니다. 주로 자연어 처리 분야에서 문서나 문장 등을 비교하는 데 사용됩니다.

코사인 유사도는 두 벡터간의 각도를 이용하여 유사성을 계산합니다. 두 벡터가 이루는 각도가 작을수록(즉, 벡터가 서로 가까울수록) 코사인 유사도 값은 1에 가까워지고, 두 벡터가 이루는 각도가 커질수록(즉, 벡터가 서로 멀어질수록) 코사인 유사도 값은 0에 가까워집니다.

두 벡터 a, b 각각의 크기를 ||a||, ||b||라고 할 때, 코사인 유사도는 다음과 같이 계산됩니다.

cosine similarity = (a • b) / (||a|| ||b||)

여기서 '•'는 내적(dot product)을 나타냅니다. 코사인 유사도의 값은 -1에서 1까지의 범위를 가지며, 1에 가까울수록 유사하다는 의미입니다.

자연어 처리 분야에서는 코사인 유사도를 이용하여 문서간 유사도를 비교하거나, 검색 엔진에서 검색어와 문서 간의 유사도를 계산하는 등 다양한 용도로 활용됩니다.

cosine similarity = (a • b) / (||a|| ||b||)에 대한 예제

cosine similarity = (a • b) / (||a|| ||b||)

여기서 a와 b는 두 벡터를 나타내며, ||a||는 벡터 a의 크기(노름), ||b||는 벡터 b의 크기(노름), 그리고 •는 두 벡터의 내적(dot product)을 나타냅니다.

간단한 예를 들어보겠습니다. 벡터 a = [3, 2]와 벡터 b = [1, 4]가 있다고 가정해 봅시다. 이 때, 각 벡터의 크기는 다음과 같이 계산됩니다.

||a|| = sqrt(3^2 + 2^2) = sqrt(13) = 3.6055
||b|| = sqrt(1^2 + 4^2) = sqrt(17) = 4.1231

두 벡터의 내적(dot product)은 다음과 같이 계산됩니다.

a • b = (3 x 1) + (2 x 4) = 11

따라서, 두 벡터 간의 코사인 유사도(cosine similarity)는 다음과 같이 계산됩니다.

cosine similarity = (a • b) / (||a|| ||b||) = 11 / (3.6055 x 4.1231) = 0.732

결과적으로, 벡터 a와 벡터 b 간의 코사인 유사도는 약 0.732가 됩니다. 이 값은 -1부터 1까지의 범위를 가지며, 1에 가까울수록 두 벡터가 서로 유사하다는 것을 의미합니다.

sqrt는 제곱근을 의미합니다.

'데이터 분석' 카테고리의 다른 글

생성형 AI. 앞으로는 어떻게 될까?  (2) 2024.01.25