숫자를 원소로 가지는 리스트(list) 또는 배열(array)
또는
공간에서 한 점으로, 원점으로부터의 상대적 위치
특징
원점에서부터의 거리
L1-norm
각 성분의 변화량의 절대값을 모두 더한다.
L2-norm
피타고라스 정리를 이용해 유클리드 거리를 계산한다.
파이썬 코드
def l1_norm(x):
x_norm = np.abs(x)
x_norm = np.sum(x_norm)
return x_norm
def l2_norm(x):
x_norm = x*x
x_norm = np.sum(x_norm)
x_norm = np.sqrt(x_norm)
return x_norm
벡터 x의 정사영 길이를 백터 y의 길이만큼 조정한 값
두 벡터의 유사도(similarity)를 측정하는데 사용 가능하다
벡터를 원소로 가지는 2차원 배열
특징
벡터가 공간에서 한 점을 의미한다면 행령은 여러 점들을 나타낸다.
행렬의 는 번째 데이터의 번째 변수의 값을 말한다
번째 행벡터와 번째 열벡터 사이의 내적을 성분으로 가지는 행렬 계산
X의 열의 개수와 Y의 행의 개수가 같아야 한다.
행렬도 내적이 있을까?
※ 전치행렬이란?
행과 열의 인덱스가 바뀐 행렬
파이썬 코드
X = np.array([])
Y = np.array([])
# numpy에서 @ 연산을 사용한다
X @ Y
# 내적
np.inner(X,Y)
벡터공간에서 사용되는 연산자(operator)로 이해
행렬곱을 통해 벡터를 다른 차원의 공간으로 보낼 수 있다 → 패턴 추출, 데이터 압축 가능!
어떤 행렬의 연산을 거꾸로 되돌리는 행렬
파이썬 코드
X = np.array([])
np.linalg.inv(X)
# 항등행렬이 나오는데 0은 아니지만 가까운 숫자로 나온다
X @ np.linalg.inv(X)
유사역생렬(pseudo-inverse) 또는 무어-펜로즈(Moore-Penrose)역행렬을 이용
행의 개수(n)가 많을 경우와 열의 개수(m)가 많을 경우 다르게 계산
※ 는 역행렬이 계산이 되는 행렬!
Y = np.array([])
np.linalg.pinv(Y)
데이터를 선형모델(linear model)로 해석하는 선형회귀식을 찾을 수 있다
선형회귀분석은 연립방정식과 달리 행이 더 크므로 방정식으로 푸는건 불가능
에 근접한 를 찾는다!
L2-노름을 최소화! →
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X,y)
y_test = model.predict(x_test)
moore-penrose을 사용하려면 y절편항을 더해줘야된다.