전체 글 52

[백준 2231번 파이썬] '분해합' 모든 풀이 비교 분석

문제자연수 N의 분해합은 N과 N의 각 자리수를 더한 값이다. 예를 들어, 245의 분해합은 다음과 같다.245 + 2 + 4 + 5 = 256이때, 245는 256의 생성자가 된다. 생성자는 여러 개일 수 있으며, 생성자가 없는 경우도 있다.우리의 목표는 주어진 자연수 N에 대해 가장 작은 생성자를 찾는 것이다.배경지식이 문제는 브루트 포스 알고리즘 단계에 들어가 있다. 브루트 포스 알고리즘에 대해 간단히 알아보자면, 브루트(Brute)는 무식한 이라는 뜻이다. 한마디로 무식하게 다 해보는 알고리즘을 브루트 포스 알고리즘이라고 한다.논리 및 아이디어1. 값을 입력받는다.(입력받은 값: n)2. 1부터 n-1까지 해당 숫자와 자릿수를 모두 더해 생성자인지 확인한다.3. 생성자가 맞다면 반복문을 깨고 나온..

[파이썬과 선형대수] 선형판별분석(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..

반응형