Linear Algebra/개발자를 위한 실전 선형대수학 19

[파이썬과 선형대수] 선형판별분석(LDA)의 정의, PCA와의 차이점 그리고 직접 구현하기

선형판별분석(LDA)LDA는 클래스가 나누어진 데이터에서 각 그룹(클래스)을 가장 잘 구분할 수 있는 방향으로 데이터를 변환하는 차원 축소 기법이다. 클래스 내의 데이터 간 거리를 줄이고, 클래스 간의 거리는 최대화하는 방식으로 데이터를 변환한다.예를 들어, 꽃잎의 길이와 너비 등 4개의 특성을 가진 데이터를 2차원으로 축소하면서도 세 개의 꽃(클래스)을 명확히 구분해준다.정의$$\lambda=\frac{||S_B W||^2}{||S_W W||^2}$$$S_B$는 클래스 간의 분산 행렬이고 $S_W$는 클래스 내에서의 분산 행렬이다. $W$는 열벡터들의 집합으로 이루어진 행렬이다. 이 수식을 통해 원하는 것은 $\lambda$가 최댓값이 되는 $W$를 찾는 것이다.LDA의 수학적 이해$S_W$각 클래스 ..

[파이썬과 선형대수] 주성분 분석(PCA)의 정의와 의미, 직접 구현하기

본 글을 이해하기 위해서는 고윳값 분해와 특이값 분해에 대한 지식이 필요합니다. 이전 글을 읽고 이 글을 읽으시기 바랍니다.https://aaaaaaaaaaayowooji.tistory.com/54 [파이썬과 선형대수]고유값과 고유벡터, eig 안쓰고 직접 구현해보기고유값과 고유벡터정의기하학적으로 볼 때, 어떤 벡터 $v_{2}$에 행렬 $A$를 곱하면 벡터의 크기와 방향이 변하게 된다. 그런데 어떤 벡터($v_{1})$를 곱했더니 방향이 바뀌지 않고 크기만 변하는 벡aaaaaaaaaaayowooji.tistory.com https://aaaaaaaaaaayowooji.tistory.com/55 [파이썬과 선형대수]특잇값 분해의 정의, svd 안쓰고 직접 구현해보기특잇값 분해(Singular Value ..

[파이썬과 선형대수] 특잇값 분해의 계층화, Reduced SVD 정의와 직접 구현하기

https://aaaaaaaaaaayowooji.tistory.com/55 [파이썬과 선형대수]특잇값 분해의 정의, svd 안쓰고 직접 구현해보기특잇값 분해(Singular Value Decomposition)정의$$A=U \Sigma V^T$$$M \times N$ 행렬을 $U,\Sigma, V^T$ 의 세 개의 행렬로 분해하는 방법이다.$AV=U\Sigma$에서 $V$가 정규직교행렬이기 때문에 넘겨서 위 식과 같은 꼴로aaaaaaaaaaayowooji.tistory.com이전 글에서 특잇값 분해(SVD) 정의에 대해 알아보고 파이썬으로 구현도 해보았다.SVD의 진정한 의미는 이번 글에서 다루어볼 계층화(layer) 가 진짜라고 생각한다.특잇값 분해의 계층화특잇값 분해를 하면,$$A=\sigma_1u_..

[파이썬과 선형대수]특잇값 분해의 정의, svd 안쓰고 직접 구현해보기

특잇값 분해(Singular Value Decomposition)정의$$A=U \Sigma V^T$$$M \times N$ 행렬을 $U,\Sigma, V^T$ 의 세 개의 행렬로 분해하는 방법이다.$AV=U\Sigma$에서 $V$가 정규직교행렬이기 때문에 넘겨서 위 식과 같은 꼴로 사용한다.$$A=\begin{bmatrix}u_1\;u_2\;u_3...u_m\end{bmatrix}\begin{bmatrix}\sigma_1&0&0&...&0&0&0\\ 0&\sigma_{2}&0&...&0&0&0\\0&0&\sigma_3&...&0&0&0\\0&0&0&...&\sigma_m&0&0\end{bmatrix}\begin{bmatrix}v_1\;v_2\;v_3...v_n\end{bmatrix}^T$$이때, $u$와..

[파이썬과 선형대수]고유값과 고유벡터, eig 안쓰고 직접 구현해보기

고유값과 고유벡터정의기하학적으로 볼 때, 어떤 벡터 $v_{2}$에 행렬 $A$를 곱하면 벡터의 크기와 방향이 변하게 된다. 그런데 어떤 벡터($v_{1})$를 곱했더니 방향이 바뀌지 않고 크기만 변하는 벡터가 존재하더라. 이때의 벡터를 고유벡터라고 하고 그 크기 $\lambda$를 고유값이라고 한다.$$Av=\lambda v$$로 식을 작성할 수 있다. (단, $v$는 0이 아니어야 한다.)하지만 $\lambda$는 스칼라이기 때문에 이대로 계산하지 못한다. 그래서 단위행렬을 곱해서 계산을 진행한다.$$(A-\lambda I)v=0$$위 식을 만족시키는 해가 곧 고유벡터이다.즉, 고유벡터는 고윳값에 의해 이동된 행렬의 영공간에 존재한다.$v$는 non-trival한 해다.$(A-\lambda I)v=0..

[파이썬과 선형대수] 일반선형모델(General Linear Model)과 최소제곱해(Least Square Problem)

일반선형모델(General Linear Model)우리가 흔히 말하는 일반 선형 모델은 독립변수와 종속변수를 연관시킨 방정식의 일종이다. 간단히 예를 들자면, 학생들이 다니는 학원의 개수($n$)과 일주일 동안의 공부 시간($t$)에 따른 전체 과목 평균 성적($y$)를 예측하는 모델이 있다고 가정하자.방정식은 아래와 같을 것이다.$$y= \beta_{1}n+ \beta_{2}t+\beta_{3}$$학원의 개수와 공부 시간은 독립변수이고, 앞에 계수가 붙어서 종속변수 $y$를 이룬다.이때, 새로 측정한 데이터를 입력해서 결과를 예측했을 때, 실제 $y$와 같도록 계수 $\beta$를 정해주는 것이 중요한 과제이다.최소제곱해의 정의앞에서 알아본 일반선형모델의 해를 구하는 방법을 최소제곱해라고 책에서는 소개..

[파이썬과 선형대수] LU분해 그리고 직접 구현해보기

LU 분해(LU decomposition)이전의 QR분해와 비슷하게 주어진 행렬을 두 행렬의 곱으로 분해하는 과정이다.QR분해 때는 직교행렬인 Q와 행렬 R로 분해했었는데 LU분해의 경우 하삼각 행렬 L과 상삼각 행렬 U로 분해하는 것이 차이점이다.$\begin{pmatrix}2&2&4 \\ 1&0&3\\2&1&2\end{pmatrix}=\begin{pmatrix} 1&0&0 \\ \frac{1}{2}&1&0\\1&1&1\end{pmatrix}\begin{pmatrix} 2&2&4\\0&-1&1 \\ 0&0&-3\end{pmatrix}$보는 바와 같이 L은 lower triangular matrix로 대각의 위쪽 성분은 모두 0이다. 반대로 U는 upper triangular matrix로 대각 아래 성..

[파이썬과 선형대수] 기본행렬과 치환행렬

LU분해에 알아보려고 하는데 그전에 알아야 하는 개념인 기본행렬과 치환행렬에 대해 공부했다.기본 행렬(Elementary Matrix)기본 행 연산을 표현하는 행렬이다.각 기본 행렬은 하나의 행 연산과 대응된다.기본 행렬의 종류행 연산에는 세 가지 유형이 있고, 이에 따라 기본 행렬도 세 가지 유형으로 분류된다.행 교환(Row Swapping):두 행을 교환하는 행 연산이다.$R_i \leftrightarrow R_j$​대응하는 기본 행렬은 $i-$번째 행과 $j-$번째 행이 교환된 단위행렬이다.$3 \times 3$ 단위행렬에서 $R_1 \leftrightarrow R_2$ (1행과 2행 교환):$E$를 행렬 $A$에 곱하면, $A$의 1행과 2행이 교환된다.$$E = \begin{bmatrix} 0 ..

[파이썬과 선형대수] 직교 행렬과 QR분해 개념, 직접 구현해보기

이 글을 읽기 위해서는 역행렬과 그람-슈미트 관련 지식이 필요하다.관련된 내용은 이전 글에서 다루었으니 시간이 된다면 읽기를 추천한다. 역행렬에 대한 글https://aaaaaaaaaaayowooji.tistory.com/43 [파이썬과 선형대수] 역행렬(1) (정의, 조건, 구하는 법, 유일성)역행렬의 기초흔히 $ax=b$이면 $\frac{1}{a}\times a x=\frac{b}{a}$로 해결한다.$Ax=b$의 행렬 방정식에서도 비슷하지만 행렬의 역수를 어떻게 구할 것이냐가 문제가 된다.그래서 $A^{-1}A=I$를 만족시키는 행aaaaaaaaaaayowooji.tistory.com   직교 투영법과 그람-슈미트 과정에 대한 글https://aaaaaaaaaaayowooji.tistory.com/4..

[파이썬과 선형대수] 직교 투영법과 그람-슈미트 과정, 직접 구현해보기

직교 투영법(orthogonal projection)직교 투영법이란?벡터는 기본적으로 분해할 수 있다.어떤 벡터가 주어졌을 때, 계산하기 쉬운 벡터로 분해해보자는 것이 직교 투영법의 목적이라고 생각한다.특히 내적값이 0이 되도록 서로 수직인 벡터로 분해하고 싶다는 것이 기본적인 아이디어다.벡터를 분해어떤 벡터 $y$를 서로 수직인 벡터로 분해하고 싶다.그림을 보면 $v2$를 정사영으로 내린 벡터와 그에 수직인 벡터로 분해하면 될 것이다.$$v2=\hat{v2}+z$$$\hat{v2}$가 정사영한 벡터, $z$가 수직인 벡터가 된다.$$\hat{v2}=proj_{v1}v2 $$projection 수식에 대하여정사영은 $proj_{a}b$로 나타낸다. $b$를 $a$에 정사영했다는 의미다.오랜만에 proje..

반응형