본문 바로가기
AI/데이터 사이언스

[AI 부트캠프] DAY 29 - 파이썬 EDA 9

by HOHHOH 2023. 8. 26.

[오늘의 일지]

파이썬 EDA 실시간 강의 -  데이터분석을 위한 선형대수학 강의

[상세 내용]

파이썬 EDA

데이터분석을 위한 선형대수학

- 강의의 제목은 선형대수학이지만 사실 짧은 시간에 선형대수학이라는 과목을 제대로 이해하고 넘어간 다는 것은 불가능하기에 가장 기본적인 벡터라는 것에 대해서 알아보고 앞으로 머신러닝을 하기 위해 필요한 몇 가지 용어들과 공식들에 대해서 간단하게 정의를 정리하고 그 공식들을 파이썬에서 써보는 걸로 강의를 마무리했습니다. 그럼 이제 정리해 보겠습니다.

 

- 벡터 : 백터라는 용어를 처음 접하게 되는 것은 아마도 고등학교 수학이나 물리였던 걸로 기억하는데 사실 그땐 위치, 속도, 힘 등과 같이 크기와 방향성을 갖는 물리량을 나타내는 데 사용하는 기하학적 대상이라고 배웠던 기억이 납니다. 데이터분석적인 측면에서 봤을 때 백터는 여러 개의 숫자를 묶어서 하나의 개념으로 정의하는데 이 말은 여러 개의 모인 숫자가 특정 값을 정의한 다는 것을 의미합니다. 쉽게 말하자면 특정 데이터의 로우와 칼럼에서 모든 혹은 특정 몇 개의 칼럼의 값을 가지고 있는 로우를 벡터라고 표현하는 것 같습니다.

 

- 벡터와 관련된 용어들:

  • 축(axis) = 벡터의 각 원소의 의미 (<=> data profiling)
  • 차원(dimension) = 벡터의 원소 개수 (∈R^3)
  • 벡터 공간(Vector Space) = 벡터들의 집합으로 축을 기준으로 어떤 의미를 가지는 숫자들의 모음을 의미한다. 몇 개의 숫자들을 가지고 있느냐에 따라 해당 공간의 차원이 결정된다.
  • 크기(norm) = 벡터의 길이
  • 방향(direction) = 단위 벡터(unit vector)

 

- 벡터의 기본 연산:

 

- 벡터 간 거리 : 분석측면에서 보면 데이터 사이의 유사성을 측정한 것이라고 볼 수 있다.

 

- Feature Space

  • 주어진 데이터를 input vector라고 가정하고 input vector 중에 필요한 특징만을 추출(또는 선별) 하여 벡터로 표현한 것을 "feature vector" 또는 "feature space(embedding space)"라고 한다.
  • 필요한 특징을 선별하는 방법은 데이터를 잘 이해하고 있는 각 분야의 분석가가 담당한다.(domain knowledge)
  • 필요한 특징을 추출하는 방법은 차원 축소 모델을 사용한다.

 

- 파이썬을 이용한 간단한 실습

# 주로 사용하는 거리 함수(distance function, metric)로는 다음 3가지가 있습니다.

# Manhattan Distance (L1 distance)
def manhattan_distance(x, y):
    """
    x, y : np.array
    return : x와 y 사이의 manhattan distance
    """

    dist = np.sum(np.abs(x - y))

    return dist
    
# Euclidean Distance (L2 distance)    
def euclidean_distance(x, y):
    """
    x, y : np.array
    return : x와 y 사이의 euclidean distance
    """
    dist = np.sqrt(np.sum(np.square(x - y)))

    return dist

# Cosine Distance
def cosine_distance(x, y):
    """
    x, y : np.array
    return : x와 y 사이의 cosine distance
    """
    norms = np.linalg.norm(x) * np.linalg.norm(y)
    dot = x @ y
    dist = dot / norms
    
    return 1 - dist

 

[마무리]

 오늘로써 EDA를 위한 파이썬 수업이 모두 마무리가 되었습니다. 마지막에는 앞으로 머신러닝을 하기 위해 필요한 선형대수학적 측면에서 간단하게 사용될 수 있는 몇 가지 개념들과 공식까지 배우면서 깔끔하게 마무리된 거 같습니다. 이제 다음 주부터 EDA를 직접 적용해야 하는 프로젝트 기간인데 저는 스포츠를 도메인으로 선택했습니다. 평소에 스포츠를 좋아했던 만큼 어떤 식으로 데이터를 스포츠에 접목시킬지 주말에 고민을 많이 해봐야 할 거 같습니다.  

반응형

댓글