일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Redux
- Node
- React
- 기초 수학
- javascript
- Backbone.js
- Babel
- nginx
- CentOS
- deep learning
- webpack
- NCP
- rabbitmq
- mariadb
- Redis
- phpredis
- laravel
- 블레이드 템플릿
- SQL
- Go
- fastapi
- docker
- nodejs
- For
- AWS
- python
- Switch
- php
- linux
- Machine Learning
- Today
- Total
목록Deep Learning, Machine Learning/기초 수학 (10)
개발일기
PCA(주성분 분석)PCA(Principal Component Analysis)는 다차원으로 구성된 데이터를 분석할 때 사용하는 머신러닝 알고리즘이다. 데이터는 기본적으로 여러 차원으로 구성되어 있다. 각 차원은 데이터의 특성을 담고 있는데 상대적으로 덜 중요한 데이터를 담고 있는 차원이 존재한다. 이와 반대로 중요한 데이터를 담고 있는 차원 또한 존재한다. PCA는 덜 중요한 차원의 데이터를 압축하여 차원을 축소시켜 나간다. 이 과정을 통해 생성된 새로운 데이터 세트는 중요한 데이터를 압축하여 담고 있으며 데이터 분석을 진행할 때 효율적으로 분석을 진행할 수 있다. 쉽게 말하면 10차원 데이터를 3차원으로 축소시켜 표현한다고 할 수 있다. Iris 예제Sklearn에서 제공하는 데이터 셋으로 PCA를 ..
Moore Penrose Pseudo Inverse - 유사 역행렬 역행렬은 행렬이 정방 행렬인 경우에만 구할 수 있다는 한계를 가지고 있다. 정방 행렬이 아닌 역행렬이 불가능한 특이 행렬에서도 역행렬과 유사한 행렬을 구해 미지수의 해를 구할 수 있다. 이를 Moore-Penrose Pseudo Inverse라고 한다. 쉽게 말하면 유사 역행렬이라 칭한다. 열보다 행이 큰 $ n_{row} > n_{col} $는 과결정오류(Overdetermined)라 하고 행보다 열이 큰 $ n_{col} > n_{row} $ 는 불충분오류(Underdetermined)라 한다. import numpy as np import matplotlib.pyplot as plt # No Solutions a1 = b1 = 2 ..
SVD Image Compression 특이값 분해 활용을 위해 먼저 matplotlib을 활용하여 이미지 하나를 출력시킨다. # Singular Value Decomposition from PIL import Image, ImageFile import matplotlib.pyplot as plt # ImageFile.LOAD_TRUNCATED_IMAGES = True # image file is truncated (2 bytes not processed) !wget img = Image.open('korea-seoul-jongno-city-c00898e0e8f0998492a96e0c987a672e.jpg') plt.imshow(img) # 원본 이미지 img = img.convert('LA') plt...
특이값 분해 정방 행렬에만 적용이 가능했던 고유값 분해와 달리 특이값 분해는 정방 행렬이 아닌 대부분의 행렬에 적용이 가능한 특징을 가지고 있다. 행렬을 고유 벡터, 고유값과 유사하게 단일 벡터로 분해한다. 특이값 분해는 행렬을 단일 벡터로 분해하며 행렬 A는 $ A = UDV^T $로 구성되게 된다. 행과 열의 개수도 추가하여 더 자세하게 표현하면 $ A_{mn} = U_{mm} D_{mn} V^T_{nn} $로 표현된다. 또한 이러한 방식은 Full Matrix SVD라고 표현한다. U: m x m 크기의 가진 직교 행렬(좌특이행렬) D: m x n 크기의 대각 행렬(대각 원소들은 특이값으로 이루어짐) $ V^T $: n x n 크기의 직교 행렬(우특이행렬) import numpy as np A = ..
고유값 고유값은 행렬의 계수가 행렬의 모든 고유값의 곱과 같다는 특징을 가지고 있다. import numpy as np A = np.array([[4, 5], [2, 6]]) lam, v = np.linalg.eig(A) # EigenValues, EigenVectors det = np.linalg.det(A) # Determinant print("EigenValues product: ", np.product(lam)) print("Determinant: ", det) """ EigenValues product: 14.0 Determinant: 14.000000000000004 """ A 행렬은 2차원 행렬이므로 고유값이 2개가 생성된다. 고유값을 모두 곱하고 행렬 계수와 비교하면 동일한 값이 나오는 것..
Determinant of a Matrix 행렬 판별식은 역행렬의 존재 여부를 판별해주는 식이다. 역행렬을 판별하기에 행렬 판별식은 정방 행렬로 이루어져 있다. 수식으로는 행렬 앞 뒤에 | 절대값 붙여 표시한다. $ A = \begin{bmatrix} a & b \\ c & d \\ \end{bmatrix}, |A|=ad - bc $ 로 표시하며 행렬 판별식으로 행렬의 계수를 구할 수 있으며 A행렬의 ad - bc 공식으로 구할 수 있다. import numpy as np A = np.array([[5, 1], [4, 3]]) print(np.linalg.det(A)) # det()메서드로 행렬식 계산 """ 11.000000000000002 """ 행렬 판별식을 역행렬의 존재 여부를 판별하기에 ad -..
고유벡터 어떤 벡터에 선형 변환이 일어났을 때, 벡터의 방향이 바뀌지 않고 변환 결과가 자기 자신의 상수배이며 0이 아닌 벡터를 고유벡터라 한다. 여기서 선형 변환이란 벡터의 크기 변화없이 돌리거나 뒤집거나 뒤트는 등 벡터를 변형시키는걸 의미한다. 왼쪽 그림을 오른쪽 방향으로 전단 변형하면 그래프는 위와 같이 변형된다. 높이는 유지하되 오른쪽 방면으로 찌그러진 모양의 그림이 나오게 된다. 흰색 벡터는 방향을 그대로 유지하지만 노란색과 초록색 벡터는 방향이 바뀐다. 위의 변형의 결과로 흰색 벡터는 고유 벡터가 된다. 만약 위 그림을 2배로 확대시키는 변형을 가하면 그림이 커진만큼 그래프의 선의 길이도 2배 증가한다. 기존 벡터의 크기가 5, 확대된 벡터의 크기가 10이라 가정했을 때, 확대된 벡터에서 기존..
대칭행렬 전치 행렬이 기존 행렬과 동일하면 대칭행렬이라 한다. 즉 행렬의 전치는 자기 자신이 된다. 수식으로는 $ X = X^T $ 로 표시한다. # Symmetric Matrix import numpy as np X = np.array([[0, 5, 6], [5, 1, 9], [6, 9, 3]]) print("X: \\n", X, "\\n") print("X Transpose: \\n", X.T) """ X: [[0 5 6] [5 1 9] [6 9 3]] X Transpose: [[0 5 6] [5 1 9] [6 9 3]] """ 단위 행렬 행렬 대각선의 주축 요소들은 1이고 이를 제외한 나머지 요소가 0인 행렬을 단위행렬이라 한다. 단위행렬은 수식에서 $I $로 표시하며 $ I_3 = \begin{p..