일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 유니티
- 모두를 위한 RL
- 리스트
- 김성훈 교수님
- Python Programming
- convex optimization
- Laplacian
- Linear algebra
- 데이터 분석
- 강화학습
- statistics
- unity
- David Silver
- Deep Learning
- optimization
- 논문
- neural network
- Hessian Matrix
- reinforcement learning
- rl
- 판다스
- machine learning
- paper
- Series
- 사이킷런
- ML-Agent
- 딥러닝
- Jacobian Matrix
- list
- pandas
RL Researcher
데이터와 행렬 본문
1. 데이터의 유형
선형대수에서 다루는 데이터는 개수나 형태에 따라 크게 스칼라(scalar), 벡터(vector), 행렬(matrix), 텐서 (tensor) 유형으로 나뉩니다.
- 스칼라(Scalar) : 숫자 하나로 이루어진 데이터
- 벡터(Vector) : 여러 숫자로 이루어진 데이터 레코드(data record)
- 행렬(Matrix) : 데이터 레코드가 여럿인 데이터 집합
- 텐서(Tensor) : 같은 크기의 행렬이 여러 개 있는 것
Scalar
예를 들어 어떤 붓꽃 한 송이의 꽃잎 길이를 측정하면 숫자가 하나 나올 것입니다. 이 데이터는 스칼라입니다. 스칼라는 보통 와 같이 알파벳 소문자로 표기하며 실수 (real number)인 숫자 중의 하나이므로 실수 집합 의 원소라는 의미에서 다음처럼 표기합니다.
$$x \in R$$
Vector
붓꽃의 크기 벡터는 4개의 데이터 $(x_{1},x_{2},x_{3},x_{4})$가 하나로 묶여 있는데 이를 선형대수 기호로는 다음처럼 하나의 문자 로 표기합니다.
$$x = \begin{bmatrix}x_{1}
\\ x_{2}
\\ x_{3}
\\ x_{4}
\end{bmatrix}$$
벡터는 복수의 행(row), 하나의 열(column)을 가지는 형태로 위에서 아래 로 내려써서 표기해야 합니다.
하나의 벡터를 이루는 데이터의 개수가 $n$개이면 이 벡터를 n-차원 벡터(n-dimensional vector)라고 하며 다음 처럼 표기합니다.
$$x = \begin{bmatrix}x_{1}
\\ x_{2}
\\ .
\\ .
\\ x_{N}
\end{bmatrix}$$
또는
$$x \in R^{N}$$
Scikit-learn의 iris데이터 셋을 통해서 Vector의 예시를 보겠습니다.
from sklearn.datasets import load_iris # Scikit-learn Package import
iris = load_iris() # Data load
iris.data[0,:] # first flower data
array([5.1, 3.5, 1.4, 0.2])
위의 예제는 벡터 $x$가 실수 4개로 이루어져 있으며 4차원 벡터라고 하고 다음과 같이 표기합니다.
$$x \in R^{4}$$
보통은 벡터의 원소가 되는 스칼라값은 아래 첨자(subscript)를 붙여서 원소의 위치를 표시합니다. 하지만 아래 첨자가 있다고 무조건 스칼라가 아닙니다. 벡터가 여러 개 있으면 서로 다른 벡터를 구별하기 위해 벡터 이 름에 아래 첨자를 붙일 수도 있습니다. 따라서 아래 첨자를 가진 알파벳 소문자 기호는 스칼라일 수도 있고 벡터일 수도 있습니다. 두 경우는 문맥에 따라 구별해야합니다. 책에 따라서는 벡터와 스칼라와 구별하기 위해 볼드체 벡터 기호나 화살표 벡터기호를 사용하기도 합니다.
$$x = \overrightarrow{x}= \begin{bmatrix}x_{1}
\\ x_{2}
\\ .
\\ .
\\ x_{N}
\end{bmatrix}$$
2. 특징 벡터 (Feature Vector)
데이터 벡터가 예측 문제에서 입력 데이터로 사용되면 특징 벡터(feature vector)라고 합니다.
예를 들어 어떤 붓꽃 표본 한 송이를 꺾어 측정하였더니 꽃받침 길이가 5.1cm, 꽃받침 폭이 3.5cm, 꽃잎 길이가 1.4cm, 꽃잎 폭이 0.2cm였다면 이 데이터 레코드를 이라고 이름 붙이고 다음처럼 표시합니다.
$$x = \begin{bmatrix}5.1
\\ 3.5
\\ 1.4
\\ 0.2
\end{bmatrix}$$
만약 이러한 붓꽃 크기 벡터를 이용하여 붓꽃 종을 결정하는 예측 문제를 풀고 있다면 붓꽃 크기 벡터는 특징 벡터입니다.
3. 행렬(Matrix)
Matrix는 복수의 차원을 가지는 데이터 레코드가 다시 여러 개 있는 경우의 데이터를 합쳐서 표기한 것이다. 예를 들어 앞서 말한 붓꽃 예에서 붓꽃 6 송이에 대해 꽃잎과 꽃받침의 크기를 측정하였다면 4차원 붓꽃 데이터 가 6개가 있습니다. 즉, 개의 실수 숫자가 있는 말입니다. 이 숫자 집합을 행렬로 나타내면 다음과 같습니다. 행렬은 보통 와 같이 알파벳 대문자로 표기합니다.
$$X = \begin{bmatrix}
x_{1,1}& x_{1,2}& x_{1,3} & x_{1,4}\\
x_{2,1}& x_{2,2}& x_{2,3} & x_{2,4}\\
x_{3,1}& x_{3,2}& x_{3,3} & x_{3,4}\\
x_{4,1}& x_{4,2}& x_{4,3} & x_{4,4}\\
x_{5,1}& x_{5,2}& x_{5,3} & x_{5,4}\\
x_{6,1}& x_{6,2}& x_{6,3} & x_{6,4}
\end{bmatrix}$$
행렬의 원소 하나하나는 처럼 두 개의 숫자 쌍을 아래첨자(subscript)로 붙여서 표기합니다. 첫 번째 숫자가 행을 뜻하고 두 번째 숫자가 열을 뜻합니다. 예를 들어 은 두 번째 행(위에서 아래로 두 번째), 세 번째 열(왼 쪽에서 오른쪽으로 세 번째)의 숫자를 뜻합니다. 행/열의 개수가 10보다 적을 때는 쉼표 없이 이라고 표기할 때도 있습니다.
벡터는 열의 수가 1인 행렬이라고 볼 수 있으므로 벡터를 다른 말로 열 벡터(column vector)라고도 합니다.
데이터를 행렬로 묶어서 표시할 때는 붓꽃 하나에 대한 하나의 벡터가 열이 아닌 행(row)으로 표시합니다.
만약 이 데이터를 이용하여 붓꽃의 종을 결정하는 예측 문제를 풀고 있다면 이 행을 특징 행렬(feature matrix) 이라고 하기도 합니다. 이 행렬의 크기를 수식으로 표시할 때는 다음처럼 "행의 크기 곱하기 열의 크기"로 나타냅니다.
$$X \in R^{6\times4}$$
스칼라와 벡터도 수학적으로는 행렬에 속합니다. 스칼라는 열과 행의 수가 각각 1인 행렬이고 벡터는 열의 수가 1인 행렬이다. 그래서 스칼라나 벡터의 크기를 표시할 때 다음처럼 쓸 수도 있다.
스칼라는
$$a \in R^{1 \times 1}$$
벡터는 (예를 들어 길이가 4인 붓꽃 벡터의 경우)
$$a \in R^{4 \times 1}$$
로 써도 행렬이 아닌 벡터라는 뜻입니다.
앞에서 예로 들었던 두 송이의 붓꽃 데이터를 하나의 행렬로 합치면 다음과 같습니다.
$$X = \begin{bmatrix}
5.1 & 3.5 & 1.4 & 0.2\\
4.9 & 3.0 & 1.4 & 0.2
\end{bmatrix}$$
4. 텐서 (Tensor)
텐서는 같은 크기의 행렬이 여러 개 같이 묶여 있는 것을 말합니다.
예를 들어 다음 컬러 이미지는 2차원의 행렬처럼 보이지만 사실 빨강, 초록, 파랑의 밝기를 나타내는 3가지의 이미지가 겹친 것입니다. 컬러 이미지에서는 각각의 색을 나타내는 행렬을 채널(channel)이라고 합니다. 예제 이미 지는 크기가 768 x 1024이고 3개의 채널이 있으므로 768 x 1024 x 3 크기의 3차원 텐서입니다.
from scipy import misc # package import
img_rgb = misc.face() # color image load
img_rgb.shape # data shape
(768, 1024, 3)
5. 전치(Transpose) 연산
전치 (transpose) 연산은 행렬에서 가장 기본이 되는 연산으로 행렬의 행과 열을 바꾸는 연산을 말합니다. 전치 연산 은 벡터나 행렬에 라는 위첨자(superscript)를 붙여서 표기합니다. 책에 따라서는 프라임(prime)기호 $'$를 붙이는 경우도 있습니다.
x를 전치연산하면
$$x \rightarrow x^{T}$$
또는
$$x \rightarrow x^{'}$$
$6 \times 4$차원의 행렬을 전치 연산하면 $4 \times 6$차원의 행렬이 됩니다.
$$X = \begin{bmatrix}
x_{1,1} & x_{1,2} & x_{1,3} & x_{1,4} \\
x_{2,1} & x_{2,2} & x_{2,3} & x_{2,4} \\
x_{3,1} & x_{3,2} & x_{3,3} & x_{3,4} \\
x_{4,1} & x_{4,2} & x_{4,3} & x_{4,4} \\
x_{5,1} & x_{5,2} & x_{5,3} & x_{5,4} \\
x_{6,1} & x_{6,2} & x_{6,3} & x_{6,4}
\end{bmatrix}
\rightarrow X^{T}\begin{bmatrix}
x_{1,1} & x_{2,1} & x_{3,1} & x_{4,1} & x_{5,1} & x_{6,1}\\
x_{1,2} & x_{2,2} & x_{3,2} & x_{4,2} & x_{5,2} & x_{6,2}\\
x_{1,3} & x_{2,3} & x_{3,3} & x_{4,3} & x_{5,3} & x_{6,3}\\
x_{1,4} & x_{2,4} & x_{3,4} & x_{4,4} & x_{5,4} & x_{6,4}
\end{bmatrix}$$
전치연산으로 만든 행렬을 원래 행렬에 대한 전치행렬이라고 합니다. (열)벡터 $x$에 대해 전치 연산을 적용하여 만든 $x^{T}$는 행의 수가 1인 행렬이므로 행벡터(row vector)라고 합니다.
$$x = \begin{bmatrix}
x_{1}\\
x_{2}\\
\vdots \\
x_{N}
\end{bmatrix}
= x^{T} = [x_{1} \ x_{2} \ \cdots \ x_{N}]$$
6. 행렬의 행 표기법과 열 표기법
'Mathmatics' 카테고리의 다른 글
수열(Sequence)과 집합의 합(Sum)과 곱(Product) (0) | 2021.02.04 |
---|