1. 데이터의 유형
스칼라(Scalar) : 숫자 하나로 이루어진 데이터
벡터(Vector) : 여러개의 숫자가 특정 순서로 모여있는 데이터 하나를 의미
행렬(Matrix) : 여러 데이터가 합쳐저 쌓여있는 형태
예를 들어,
x(철수) = [철수의 몸무게, 철수의 키, 철수의 성별,......] → 벡터(Vector)
- 특정 철수라는 데이터 하나(x)는 몸무게, 키, 성별 등 특징을 가진다. → 철수라는 데이터 하나, 특징의 갯수 = 차원의 수
- 즉, 위 예시는 3차원 벡터이다.
from sklearn.datasets import load_digits digits = load_digits() samples = [0, 10, 20, 30, 1, 11, 21, 31] d = [] for i in range(8): d.append(digits.images[samples[i]]) plt.figure(figsize=(8, 2)) for i in range(8): plt.subplot(1, 8, i + 1) plt.imshow(d[i], interpolation='nearest', cmap=plt.cm.bone_r) plt.grid(False); plt.xticks([]); plt.yticks([]) plt.title("image {}".format(i + 1)) plt.tight_layout() plt.show()
위의 이미지를 1열로 쫙 펴면 아래와 같다.
v = []
for i in range(8): v.append(d[i].reshape(64, 1)) # reshape으로 한줄로 펴준다. plt.figure(figsize=(10, 8)) for i in range(8): plt.subplot(1, 8, i + 1) plt.imshow(v[i], aspect=0.4, interpolation='nearest', cmap=plt.cm.bone_r) plt.grid(False); plt.xticks([]); plt.yticks([]) plt.title("image {} vector".format(i + 1)) plt.tight_layout(w_pad=7) plt.show()
해당 이미지의 특징들의 값을 한줄로 쭉 펼친 것이다.
2. Linear Combination(선형 조합) 과 내적(inner Product, dot product)
: 선형조합은 벡터/행렬에 다음처럼 스칼라 값을 곱한 후 더하거나 뺀 것을 말한다.
: 벡터의 선형조합의 경우, 내적의 형태로 표현이 가능하다.
: 벡터간 내적이 가능하려면, 두 벡터의 길이가 같아야하고
: 앞 벡터는 행벡터(Transpose 형태), 뒷 벡터는 열벡터여야한다.
: 이렇게 되면, 두 벡터 내적의 결과는 스칼라 값이 나온다.
: -(row vector) x |(column vector)
형태의 내적 결과는 스칼라, |(column vector)x -(row vector)
형태의 내적 결과는 행렬이 된다.
# 2차원 배열로 표시된 벡터의 내적 x = np.array([[1], [2], [3]]) y = np.array([[4], [5], [6]]) np.dot(x.T, y) # Transpose를 해줘야한다.
# 출력 : array([[32]])
# 1차원 배열로 표시된 벡터의 내적 x = np.array([1, 2, 3]) y = np.array([4, 5, 6]) np.dot(x, y) # 앞의 벡터 x를 행벡터로 가정한다. Transpose할 필요가 없다.
# 출력 : 32
이미지로 보는 Linear Combination(선형조합)
from sklearn.datasets import fetch_olivetti_faces faces = fetch_olivetti_faces() f, ax = plt.subplots(1, 3,figsize=(10,5)) ax[0].imshow(faces.images[0]) ax[0].grid(False) ax[0].set_xticks([]) ax[0].set_yticks([]) ax[0].set_title("image 1: x1") ax[1].imshow(faces.images[10]) ax[1].grid(False) ax[1].set_xticks([]) ax[1].set_yticks([]) ax[1].set_title("image 2: x2") ax[2].imshow(0.6 * faces.images[0] + 0.4 * faces.images[10]) ax[2].grid(False) ax[2].set_xticks([]) ax[2].set_yticks([]) ax[2].set_title("image 3: 0.6x1 + 0.4x2") plt.show()
image1, image2 두 이미지의 선형조합()으로 만들어진 이미지 image3
3. 잔차(Residual)와 이차형식(Quadratic Form)
: 선형 회귀 분석(linear regression) 결과로 나온 예측치()와 실제값 ()의 차이를 잔차(Residual) 혹은 오차(error)라고 한다.
: 이를 로 표기한다
※잔차제곱합(Residual Sum of Squares : RSS)
※이차형식(Quadratic Form)
RSS를 전개하면,
이때 마지막 에서 는 정방행렬이 된다. 이를 로 놓으면,
이처럼 행벡터 x 정방행렬 x 열벡터 형태가 되는데, 이를 이차형식(Quadratic Form)이라 한다.
'수학 > 선형대수' 카테고리의 다른 글
PCA(Principle Component Analysis) (0) | 2018.10.27 |
---|