본문 바로가기

프로그래밍/선형대수

1. 데이터

반응형
  • 선형대수

선형대수는 데이터 분석에 필요한 계산을 돕는 학문이다. 데이터를 분석하기 위해서는 수 많은 숫자로 이루어진 데이터를 다루어야한다. 대량의 데이터가 포함된 복잡한 계산 과정을 선형대수를 이용하여 간단한 수식으로 서술할 수 있다.

  • 데이터의 유형

선형대수에서는 다루는 데이터의 개수나 형태에 따라 스칼라, 벡터, 행렬, 텐서 4가지 유형으로 나누어진다.

데이터의 유형을 벤치마크 데이터셋(benchmark dataset) 중 하나인 붓꽃 데이터셋(iris dataset)을 이용하여 설명할 것이다.

이 데이터는 통계학자 피셔(Fisher)의 연구 결과에서 나온 것이다. 붓꽃 150송이에 대해 꽃받침의 길이, 꽃받침의 폭, 꽃잎의 길이, 꽃잎의 폭을 각각 측정한 것이다.

 

  • 스칼라

스칼라는 하나의 숫자로만 이루어진 데이터를 의미한다. 예를 들어 어떤 붓꽃의 꽃잎의 길이를 측정하면 숫자 하나가 나올 것인데 이 데이터가 스칼라이다.

  • 벡터

벡터는 여러 개의 숫자가 특정한 순서로 모여 있는 것을 의미한다. 예를 들어 하나의 붓꽃에는 꽃받침의 길이, 꽃받침의 폭, 꽃잎의 길이, 꽃잎의 폭 총 4가지의 숫자가 측정된다.이 4개의 숫자를 하나의 묶음으로 묶어놓은 것이 벡터이다.

 

 

이때 벡터는 하나의 열, 복수의 행으로 표기해야 한다.

하나의 벡터를 이루는 데이터의 개수가 n개이면 이 벡터를 n차원 벡터라고 한다.

  • 넘파이를 이용한 벡터 표현

넘파이를 이용하여 벡터를 표현할 때 열의 개수가 하나인 2차원 배열 객체로 표현한다.

- 1차원 배열 : 원소의 개수가 몇개이든 한 줄로 표현

+ 지금은 하나의 행으로 표현되었지만 실제로는 열로 표현한다.

 

 

- 2차원 배열 : 원소를 가로와 세로줄로 표현

 

 

사이킷런패키지에서 제공하는 숫자 이미지 데이터로 벡터를 표현할 것이다.

 

 

다음 데이터는 직접 손으로 적은 0부터9까지 숫자 이미지를 8x8 해상도의 이미지로 스캔한 것이다

그 중 0과 1의 이미지 8개를 출력하였다.

+ 코드 설명

plt.figure(): 새로운 창을 띄우게 하는 함수이다. figsize 파라미터로 창의 크기를 조정할 수 있다.

plt.subplot(): 그래프를 여러개 띄울 때 사용하는 함수이다. pltsubplot(1,8,j+1)의 의미는 1행 8열 j+1번째 그래프이다.

plt.imshow(): 2차원 배열 객체를 색깔로 표현해주는 함수이다. digits.images 데이터는 우리가 알고 있는 이미지로 되어 있는 것이 아니라 숫자로 이루어진 배열이다. 그래서 그 배열 객체를 위에 그림처럼 색깔로 표현해주는 것이다. interpolation 파라미터는 보간법으로 이미지를 자연스럽게 해주는 방법인데 nearest가 가장 고해상도인 방법이다. camp파라미터는 어떤 색으로 표현할 것인지를 의미한다.

plt.grid(): 그래프의 격자를 표시해주는 함수이다. True는 격자 생성, False는 격자 제거, plt.xticks() 함수는 x축 눈금에 표시해주는 함수이다.

plt.title(): 각 그래프의 이름 설정

plt.suptitle() : 전체 이름 설정

plt.tight_layout(): subplot들이 겹치지 않도록 여백을 조절

이번에는 2차원의 이미지를 64x1의 크기, 다시 말해 크기가 64인 1차원 벡터로 표현할 것이다.

 

 

주목할 점은 같은 종류의 숫자는 벡터가 서로 닮았다.

  • 행렬

행렬은 복수의 차원을 가지는 데이터 레코드가 다시 여러 개 있는 경우의 데이터를 합쳐서 표기한 것이다.

예를 들어 앞서 말한 붓꽃 예에서 붓꽃 6 송이에 대해 꽃잎과 꽃받침의 크기를 측정하였다면 4차원 붓꽃 데이터가 6개가 있다.

벡터는 열의 수가 1인 행렬이라고 볼 수 있으므로 벡터를 다른 말로 **열 벡터(column vector)**라고도 한다.

하나의 데이터 레코드를 단독으로 벡터로 나타낼 때는 하나의 열(column)로 나타내고 복수의 데이터 레코드 집합을 행렬로 나타낼 때는 하나의 데이터 레코드가 하나의 행(row)으로 표기한다.

 

행렬로 표현

 

붓꽃 데이터를 행렬로 표현

 

  • 텐서

텐서는 같은 크기의 행렬이 여러 개 같이 묶여 있는 것을 말한다.

예를 들어 다음 컬러 이미지는 2차원의 행렬처럼 보이지만 사실 빨강, 초록, 파랑의 밝기를 나타내는 3가지의 이미지가 겹친 것이다. 컬러 이미지에서는 각각의 색을 나타내는 행렬을 채널(channel)이라고 한다. 예제 이미지는 크기가 768 x 1024이고 3개의 채널이 있으므로 768 x 1024 x 3 크기의 3차원 텐서다.

 
  • 전치 연산

전치(transpose) 연산은 행렬에서 가장 기본이 되는 연산으로 행렬의 행과 열을 바꾸는 연산을 말한다. 전치 연산은 벡터나 행렬에 T라는 위첨자(superscript)를 붙여서 표기한다.

 

 

2x3 행렬을 전치하여 3x2 행렬로 표현하였다.

 

 

1차원 배열은 전치연산이 정의되지 않는다.

<출처>

https://datascienceschool.net/02%20mathematics/02.01%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%99%80%20%ED%96%89%EB%A0%AC.html

반응형