2.1 데이터와 행렬
사용 목적: 대용량 데이터를 간단한 수식으로 서술할 수 있다.
즉, 여러 개의 복잡한 방정식을 간단한 행렬로 나타낼 수 있다.
데이터 유형
데이터 크기 순: 스칼라< 벡터< 행렬< 텐서
- 스칼라(scalar): 숫자 하나로 이뤄진 데이터
- 벡터(vector): 여러 숫자로 이뤄진 하나의 데이터 레코드
- 벡터는 여러 행을 가지고 하나의 열을 가짐 (한 데이터의 여러 요소)
- np.array(), 사이킷런에서는 벡터 표시 시 2차원 배열 객체를 사용해야 함
- reshape(행의 수, 1)를 사용하면 쉽게 벡터화할 수 있다
- 특징 벡터(feature vector): 데이터 벡터가 예측 문제에서 입력 데이터로 사용되는 경우
- 행렬(matrix): 벡터(데이터 레코드)가 여럿인 데이터 집합(여러 개의 데이터 레코드)
- 특징 행렬: 특징 벡터와 설명 동일
- 텐서(tensor): 같은 크기의 행렬이 여러 개 (ex. 3차원의 컬러 이미지 데이터)
- 전치 연산(transpose): 행과 열을 바꾸는 연산
- $x^T$: 행 벡터이면서 동시에 x의 전치 행렬
- 행렬.T
- 기호 정리
행렬의 행 표기법과 열 표기법
열 벡터가 벡터의 기준이 된다. 따라서 행 벡터는 열 벡터의 전치 행렬이라고 취급한다.
열 벡터는 하나의 열로, 데이터가 n개로 이뤄져 있고, feature(특징)이 1개이다.
행 벡터는 하나의 행으로, 하나의 데이터에 여러 개의 특징을 벡터로 표현한 것이다.
특수행 벡터와 행렬
- 영 벡터(Zeors-vector): 모든 원수가 0인 N차원 벡터, np.zeros((N,1))
- 일 벡터(ones-vector): 모든 원소가 1인 N차원 벡터, np.ones((N,1))
- 정방 행렬(square matrix): 행 개수와 열 개수가 같은 행렬
- 대각 행렬(diagonal matrix): 모든 비 대각 요소가 0인 행렬, np.diag([1,2,3])
- 대각(주대각): 행과 열이 같은 위치
- 비 대각: 대각 제외 위치
- 항등 행렬(identity matrix): 대각 성분의 값이 모두 1인 대각 행렬
- 대칭 행렬(symmetric matrix): 전치 행렬과 원래의 행렬이 동일한 행렬
- 항등 행렬, 대칭 행렬은 정방 행렬이어야만 함
- 기호 정리
2.2 벡터와 행렬의 연산
- 덧셈과 뺄셈: 같은 위치의 원소끼리 덧셈과 뺄셈
- 스칼라와 벡터/행렬의 곱셈: 스칼라 값(c)을 벡터/행렬에 분배
- 브로드캐스팅(broadcasting): 스칼라를 벡터로 변환하는 연산이며, 평균 제거 벡터(mean removed) 혹은 0-평균 벡터(zero-mean)계 산시 사용됨
- 예시)
- 선형 조합(linear combination): 벡터/행렬에 스칼라 값을 곱한 후 더하거나 뺀 것
- 예시) $c_{1}x_{1} + ... + c_{n}x_n$
- 벡터끼리의 곱셈(내적(inner product)만 다룸):, np.dot(x.Y,y) 또는 x.T@y
- 두 벡터 내적의 조건
- 두 벡터의 차원(길이)이 같아야 함
- 앞의 벡터가 행 벡터(1xn)이고, 뒤의 벡터가 열 벡터(nx1) 여야 함
- 쉽게 생각하면 행 벡터(a x b)와 열 벡터(b x c)의 (a x c)가 최종 행렬의 크기가 된다.
- 두 벡터 내적의 조건
- 가중합(weighted sum): 각각에 가중치를 곱한 후 곱셈의 결과를 합한 것, 만약 가중치가 모두 1이면 일반적인 합이 됨
- 가중평균(weighted average):가중합의 가중치를 전체 가중치값의 합으로 나눔. 즉, 모든 w를 더하면 1이 됨
- 예시: 0.7x1+ 0.3x2
- 유사도(similarity): 벡터의 내적을 이용해 벡터가 닮은 정도를 정량적으로 나타내는 값이며, 유사도가 클수록 내적 값이 커짐
- 코사인 유사도(cosine similarity): 코사인은 0일 때 최댓값(1)을 가진다. 즉, 두 벡터가 같은 방향을 가리킬 때 최대의 유사도를 가짐
- 선형 회귀 모형(linear regression model): 독립변수 x에서 종속변수 y를 예측하는 방법으로, 가중합을 사용한다
- 예시:
- 단점: 비선형적인 현실 세계의 데이터에서는 적용하기 힘들다는 단점이 있다. 이를 보완하기 위해 수정 선형 회귀 모형을 사용한다
- 제곱합(sum of squares): 데이터의 분산(variance)나 표준 편차(standard deviation)등을 구할 때 사용
- 행렬과 행렬의 곱셈: 벡터와 비슷
- 교환 법칙과 분배 법칙
- AB != BA
- A(B+C) =AB + AC
- (A+B)C = AC + BC
- (A+B)T= AT+ BT
- (AB)T = BTAT
- ABC= (AB)C = A(BC)
- AI = IA = A
- 여러 개의 벡터에 대한 가중합 동시 계산: 여러 개의 식을 행렬과 벡터로 간단하게 나타낼 수 있다
- 잔차(residual, error): 예측치와 실젯값(target)의 차이
- 잔차 제곱합(RSS, Residual sum of Squares): error가 제곱이라는 의미는 오차가 클수록 페널티를 급격하게 준다는 뜻이다
- 이차형식(Quadratic Form): 행 벡터 x 정방 행렬 x 열 벡터 형식으로 되어 있는 것을 말한다
2.3 행렬의 성질
- 정부호와 준정부호: 보통 대칭 행렬에 대해서 정의
- $x^{T}Ax$> 0: 양의 정부호, $x^{T}Ax$>=0: 양의 준정부호
- 행렬 놈(norm): p=2인 경우가 가장 많이 쓰이므로, p표시가 없는 경우 p=2인 놈이라고 생각하면 된다. p=2인 놈을 프로베니우스 놈(frobenius norm)이라 한다.
- np.linalg.norm()
- 성질
- ||A|| >= 0
- ||aA|| = |a|||A||
- ||A+B|| <= ||A|| + ||B||
- ||AB|| <= ||A||||B||
- 대각합(trace): tr(A) = 대각 원소의 합으로 계산됨
- $tr(cA) = c tr(A)$
- $tr(A^T) = tr(A)$
- $tr(A + B) = tr(A) + tr(B)$
- $tr(AB) = tr(BA)$
- $tr((AB)C) = tr(A(BC))$ : 트레이스 트릭(trace trick)
- 이차형식의 트레이스 트릭: $x^{T}Ax= tr(xx^{T}A)$
- 행렬식: det(A), detA, |A|
- 역행렬을 구할 때 사용
- A가 1x1인 경우: def([a]) = a
- A가 스칼라가 아닌 경우: 여인수 전개(cofactor expansion)로 계산하며 재귀적으로 계산
- 2x2 행렬의 def = ad-bc
- 3x3 행렬의 def = aei + bfg + cdh - ceg - bdi - afh
- 성질
- $det(A^T) = det(A)$
- $det(I)$ = 1
- $det(AB) = det(A)det(B)$
- $A^{-1}A= AA^{-1} = I$
- $det(A^{-1}) = 1/det(A)$
- $det(A)det(A^{-1}) = detI = 1$
2.4 선형 연립방정식과 역행렬
선형 예측 모형: 예측값이 실제 출력 데이터와 유사한 값을 출력하도록 하는 모형
- 연립방정식과 역행렬을 이용해 선형 예측모형의 가중치 벡터를 구함
- 선형 연립방정식(system of linear equations) 또는 연립 일차방정식: 역행렬을 이용해 Ax= b에서 x를 찾는다.
역행렬
-
역행렬: AA^-1 = I가 성립하는 행렬을 말한다. 역행렬이 존재하는 행렬을 가역 행렬(invertible matrix), 정칙 행렬(regular matrix) 또는 비특이 행렬(non-singular maatrix)라고 한다. 반대로 역행렬이 존재하지 않는 행렬을 비가역행렬, 특이 행렬(singular matrix), 퇴화 행렬(degenerate matrix)라고 한다
-
성질
- 전치행렬의 역행렬 = 역행렬의 전치행렬
- $(AB)^{-1} = B^{-1} * A^{-1}$
-
계산 A의 역행렬= (1/det(A)) * C^T이다. C는 여인수 행렬이며, C의 전치 행렬은 어드조인트행렬(adjoint matrix)라고 하며 adj(A)라고 표기한다. 또한, det(A)= 0이 아닐 때만 역행렬이 존재한다
-
np.linalg.inv()
- $Ax= b => x= A^{-1}b$
선형 연립 방정식
공식을 사용해 $w= X^{-1}y$로 구할 수 있다
- 미지수와 방정식 수가 다른 경우
- 방정식 수 = 미지수 수: 앞의 경우처럼 풀기
- 방정식 수 < 미지수 수: 무수히 많은 해가 존재할 수 있다
- 방정식 수 > 미지수 수: 모든 조건을 만족하는 해가 존재할 수 없을 수도 있다
보통 데이터의 수가 입력 차원보다 큰 경우가 많다. 즉, 3번의 경우가 많다. 이때는 최소자승문제로 풀어야 한다.
- 최소자승문제(least square problem): 잔차(벡터의 놈)를 최소화하는 문제로 푼다
- x= $argmin e^{T}e = argmin (Ax-b)^{T}(Ax-b)$: 즉, 함수 f(x)를 가장 작게 만드는 x를 찾는 것이 목적
'수학 > 데이터 사이언스 스쿨' 카테고리의 다른 글
라그랑주 승수법, KKT 조건 (Karush-Kuhn-Tucker) (0) | 2020.04.23 |
---|---|
뉴턴 방법, 준 뉴턴 방법 (0) | 2020.04.23 |
테일러 급수, 헤시안 행렬 (1) | 2020.04.17 |
3-1. 고급 선형대수: 선형대수와 해석기학의 기초 (0) | 2020.03.25 |
3-2. 고급 선형대수: 좌표와 변환 (0) | 2020.03.23 |