2024. 2. 26. 21:17ใ๐งช Data Science/ML, DL
ํฌ๊ฒ ์ ์๋ฏธํ์ง ์์ ์ ๋ณด๋ ๋ฒ๋ฆฌ๊ฑฐ๋ ๋ญ์ณ๋ผ.
์ด๋ฒ ๋ธ๋ก๊ทธ์์ ์ฐจ์ ์ถ์์ ๋ํด ๋ค๋ฃจ๊ณ ์ ํ๋ค.
์ ์ฐจ์์ ์ถ์ํด์ผ ํ๊ณ , ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ค ๋ฐฉ๋ฒ๊ณผ ์ํ์ ์๋ฆฌ๊ฐ ์กด์ฌํ๋์ง ์ดํด๋ณด์.
1) ์ฐจ์์ ์ ์ฃผ
์ฌ๊ธฐ ๋๋ฌผ์ ๋ถ๋ฅํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ์๋ค.
๋๋ฌผ์ ํ๋ จ ์ํ์ด๋ผ ์ง์นญํ๊ณ , ๋๋ฌผ๋ค์ ํน์ฑ 500๊ฐ๊ฐ ์ฃผ์ด์ก๋ค๊ณ ํ๊ฒ ๋ค. ํน์ฑ๋ค์ ๋ฐํ์ผ๋ก ํ ๋ผ, ๊ณ ์์ด, ๊ฑฐ๋ถ์ด๋ฅผ ๋ถ๋ฅํด์ผ ํ๋ค.
ํน์ฑ์ด ๋ง์์๋ก ์ ํํ ๋ถ๋ฅ๋ฅผ ํ ์ ์์ ๊ฒ ๊ฐ์ง๋ง, ์ค์์ ๊ทธ๋ ์ง ์๋ค.
๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋ ๊ณ์ฐ๋์ผ๋ก ์ธํด ๋ชจ๋ธ ํ๋ จ์ด ๋๋ ค์ง๊ณ , ์ข์ ์๋ฃจ์ ์ ์ฐพ๊ธฐ ํ๋ค์ด์ง๋ค.
๋ํ ๊ณผ๋์ ํฉ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. A, B ๊ฐ์ฒด๊ฐ 2๊ฐ์ ํน์ฑ์ ๊ฐ์ก์ ๋, ์๋์ ๊ฐ์ด ๊ทธ๋ํ๋ก ๋ํ๋ผ ์ ์๋ค.
A์ B์ ๊ฑฐ๋ฆฌ๋ \[\sqrt{(5-2)^2+(2-5)^2}=3\sqrt{2}\]
์ด์ A, B ํน์ฑ์ 1๊ฐ ๋ ๋๋ ค๋ณด์.
์ด๋ ๊ฒ ๋๋ฉด A, B ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ \[\sqrt{3^{2}+3^{2}+(4-2)^2}=\sqrt{22}\]
ํน์ฑ์ ํ๋ ๋๋ ธ์ ๋ฟ์ธ๋ฐ, A์ B์ ๊ฑฐ๋ฆฌ๊ฐ ๋ง์ด ๋ฒ๋ ค์ก๋ค.
๋ง์ฝ ํน์ฑ์ด 300๊ฐ-400๊ฐ์ด๊ณ , ๊ทธ ์ฐจ์ ์์์ A์ B์ ๊ฑฐ๋ฆฌ๋ฅผ ๋น๊ตํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
์์ฒญ๋ ๊ฑฐ๋ฆฌ ์ฐจ์ด๊ฐ ๋ ๊ฒ์ด๋ค.
์๋ก ์์ฒญ๋ ๊ฑฐ๋ฆฌ ์ฐจ์ด๊ฐ ๋ ์ํ์์ ๋ชจ๋ธ ํ์ต์ ํ๋ค๋ฉด ๊ณผ๋ ์ ํฉ์ด ๋ฐ์ํ๋ค.
์ด๋ ๋ฏ ๋๋ฌด ๋ง์ ํน์ฑ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ์ฐจ์์ ์ ์ฃผ๋ผ๊ณ ๋งํ๋ค.
2) ์ฐจ์ ์ถ์
์ด ๋๋ฌธ์ ๋ชจ๋ธ ํ๋ จ์ ์งํํ๊ธฐ ์ , ํน์ฑ ์๋ฅผ ํฌ๊ฒ ์ค์ด๋ ์์ ์ ํ๋ค.
์ด ์์ ์ ์ฐจ์ ์ถ์๋ผ ๋งํ๋ค.
์๋ฅผ ๋ค๋ฉด, ์์ ํ๋ จ ์ํ ํน์ฑ๋ค์ 4๊ฐ์ ํน์ฑ์ผ๋ก ์์ถํด ๋ฒ๋ฆฌ๋ ๊ฒ์ด๋ค.
๋ค๋ง, ์ฐจ์ ์ถ์๋ฅผ ์งํํ๋ฉด ์ํ์ ์ผ๋ถ ์ ๋ณด๊ฐ ์ ์ค๋๋ค. ํ๋ จ ์๋๋ ๋นจ๋ผ์ง์ง๋ง, ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ ๊ฒ์ด๋ค. ๋ํ ์ฐจ์ ์ถ์๋ผ๋ ๊ณผ์ ์ ์ถ๊ฐํจ์ผ๋ก์จ ํ์ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ, ๋ชจ๋ธ ํ๋ จ, ๊ฐ์ ๋ฑ ์ผ๋ จ์ ํ์ดํ๋ผ์ธ์ ๋ ๋ณต์กํ๊ฒ ํ ์ ์๋ค.
๋ฐ๋ผ์ ์๋ณธ ๋ฐ์ดํฐ๋ก ๋จผ์ ํ๋ จ์ ํด๋ณด๋ฉฐ, ์ฑ๋ฅ๊ณผ ์๋์ ๋ํ ํ๋จ์ ๋๋ด๊ณ ์ฐจ์ ์ถ์๋ฅผ ์๋ํ๋ ๊ฒ์ด ์ข๋ค.
2-1) ์ฐจ์์ ์ถ์์ํค๋ ๋ ๊ฐ์ง ์ ๊ทผ๋ฒ
2-1-1) ํฌ์
ํ๋ จ ์ํ์ ์ผ๋ถ ์ฐจ์์์ ์ ์๋ฏธํ ์ฐจ์ด๋ฅผ ๋ณด์ด๊ธฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๊ณ ์ฐจ์ ๊ณต๊ฐ(์์: 3์ฐจ์) ์์ ์ ์ฐจ์ ๋ถ๋ถ ๊ณต๊ฐ(์์: 2์ฐจ์)์ ๋์ฌ ์๊ฑฐ๋, ๊ทธ์ ๊ฐ๊น๋ค.
ํ๋ จ ์ํ์ด ๋์ฌ ์๋ ํ๋ฉด์ ์ ํํ๊ณ , ๊ทธ ํ๋ฉด์ ์ํ๋ค์ ์์ง์ผ๋ก ํฌ์ํ ๊ฒ์ด๋ค.
Z1๊ณผ Z2๋ X1๊ณผ X2์ ์๋ก ๋ค๋ฅธ ํน์ฑ์ผ๋ก, ์๋กญ๊ฒ ์๊ฒจ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ํ๋ จ ์ํ์ ๋ถ๋ถ ๊ณต๊ฐ์ด ๋คํ๋ฆฌ๊ฑฐ๋ ํ ๊ฒฝ์ฐ, ํฌ์ ์ ๊ทผ๋ฒ์ ๋ฐ์ดํฐ ์์ค์ ๋ถ๋ฌ์ฌ ์ ์๋ค.
2-1-2) ๋งค๋ํด๋ ํ์ต
๋ฐ์ดํฐ๊ฐ ์๋์ฒ๋ผ ๋์ฌ์๋ค๊ณ ํ์. ์ด๋ฅผ ์ค์์ค๋กค(2D ๋งค๋ํด๋์ ํ ์)์ด๋ผ ํ๋ค. d์ฐจ์ ๋งค๋ํด๋๋ d์ฐจ์ ์ดํ๋ฉด์ผ๋ก ๋ณด์ผ ์ ์๋ n์ฐจ์ ๊ณต๊ฐ์ ์ผ๋ถ์ด๋ค (d<n).
๋ง์ฝ ์์ ๋ฐ์ดํฐ๋ฅผ ํฌ์์ํจ๋ค๋ฉด, ์ผ์ชฝ์ฒ๋ผ 2์ฐจ์ ํ์๊ฐ ๋ ๊ฒ์ด๋ค. ์ผ๋ถ ์ ์๋ฏธํ ํน์ฑ๋ค์ด ๋ญ๊ฐ์ง๋ฉด์ ์ฌ๊ฐํ ๋ฐ์ดํฐ ์์ค์ ๋ถ๋ฌ์ฌ ์ ์๋ค. ๊ทธ๋ ๊ธฐ์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋งค๋ํด๋์ ๊ฐ๊น๊ฒ ๋์ฌ์๋ค๋ ๊ฐ์ ํ์, ๋งค๋ํด๋ ํ์ต์ ํ์ฌ ์ค๋ฅธ์ชฝ๊ณผ ๊ฐ์ด ๋ํ๋ผ ์ ์๋๋ก ํ๋ค.
๋ง์ ์ถ์ ์๊ณ ๋ฆฌ์ฆ๋ค์ด ๋งค๋ํด๋๋ฅผ ๋ชจ๋ธ๋งํ๋ ์์ผ๋ก ์๋ํ๋ค!
3) PCA ์ ์
์ฃผ์ฑ๋ถ ๋ถ์ principal component analysis (PCA)
๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์ถ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ๋ฐ์ดํฐ ํน์ฑ๋ค์ ์ฃผ์ฑ๋ถ์ผ๋ก ์์ถํ์ฌ ๋ํ๋ธ๋ค.
PCA ์คํ ์์
1) ๋ฐ์ดํฐ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ด๋ช ํธ ์ ์
2) ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ํฌ์
3) ๊ทธ๋ค์์ผ๋ก ๋ถ์ฐ์ ๊ฐ์ฅ ๋ง์ด ๋ณด์ ํ๊ณ ์๋ ์ถ(2๋ฒ์งธ ์ฃผ์ฑ๋ถ) ์ฐพ๊ธฐ
4) n๋ฒ ๋ฐ๋ณตํ์ฌ, n๊ฐ์ ์ฃผ์ฑ๋ถ ๋ฐ๊ฒฌํ๊ธฐ
1) ๋ถ์ฐ ๋ณด์กด
๋ฐ์ดํฐ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ดํ๋ฉด์ ๋ค์๊ณผ ๊ฐ์ ์๋ฆฌ๋ก ์ ํํ๋ค.
2D ๋ฐ์ดํฐ์ ์ด ์๋์ ๊ฐ์ด ๋์ฌ์๋ค. ์ด ๋ฐ์ดํฐ๋ฅผ ์ค์ , ํ์ , ์ ์ ์ผ๋ก ์ค๋ช ํ๋ค๊ณ ํ์ ๋, ์ค์ ์ด ๊ฐ์ฅ ์ ์ค๋ช ํ๊ณ ์๋ค๊ณ ๋ณผ ์ ์๋ค. ๋ฐ์ดํฐ์ ๋ถ์ฐ์ ์ต๋๋ก ๋ณด์กดํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ถ์ฐ์ ์ต๋๋ก ๋ณด์ ํ๋ค๋ ๊ฒ์ ์๋ฏธ๋ ์ค์ ๊ณผ ๋ฐ์ดํฐ์ ์ฌ์ด์ ํ๊ท ์ ๊ณฑ ๊ฑฐ๋ฆฌ๊ฐ ์ต์ํ๋๋ค๋ ์๋ฏธ์ด๋ค.
์์ธํ ์ํ์ ์๋ฆฌ๋ ํ์ ๋ค๋ฃฐ ๊ฒ์ด๋ค. ์ง๊ธ์ ๊ฑฐ๋ฆฌ์ ๊ณฑ ํฉ์ด ์ต์๊ฐ ๋๋๋ก ํ๋ ์ถ์ ์ฐ์ ์ผ๋ก ์ ํํ๋ค๋ ๊ฒ๋ง ์์๋๋ฉด ๋๋ค!
2) ์ฃผ์ฑ๋ถ ์ถ์ถ
์ฒซ ๋ฒ์งธ ์ถ์ ํํ๋ค๋ฉด, ๊ทธ๋ค์์ ๋ ๋ฒ์งธ๋ก ๋ถ์ฐ์ ์ ๋ณด์ ํ๊ณ ์๋ ์ถ์ ์ ํํ ๋์ด๋ค.
์ด๋ ๊ฒ ๊ณ์ํด์ ์ถ์ ์ ํํด ๋๊ฐ๋๋ฐ, i๋ฒ์งธ ์ถ์ ์ด ๋ฐ์ดํฐ์ i๋ฒ์งธ ์ฃผ์ฑ๋ถ(PC)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์์ ์์์์ C1์ด 1๋ฒ์งธ ์ฃผ์ฑ๋ถ, C2๊ฐ ๋ ๋ฒ์งธ ์ฃผ์ฑ๋ถ, C3๊ฐ ์ธ ๋ฒ์งธ ์ฃผ์ฑ๋ถ์ด ๋๋ค.
ํ๋ จ ์ธํธ์ ์ฃผ์ฑ๋ถ์ ํน์๊ฐ ๋ถํด singular value decomposition (SVD)๋ผ๋ ํ์ค ํ๋ ฌ ๋ถํด ๊ธฐ์ ๋ก ์ฐพ๋๋ค. ํ๋ จ ์ธํธ ํ๋ ฌ X๋ฅผ ์ธ ๊ฐ์ ํ๋ ฌ์ ํ๋ ฌ ๊ณฑ์ ์ผ๋ก ๋ถํด๋๋ค.
\[ U\sum V^T\]
์ฌ๊ธฐ์ ์ฐพ๊ณ ์ ํ๋ ๋ชจ๋ ์ฃผ์ฑ๋ถ์ ๋จ์ ๋ฒกํฐ๊ฐ V์ ๋ค์๊ณผ ๊ฐ์ด ๋ด๊ฒจ์๋ค.
X_centered = X - X.mean(axis=0)
U, s, Vt = np.linalg.svd(X_centered)
c1 = Vt.T[:, 0]
c2 = Vt.T[:, 1]
# ์ฃผ์ฑ๋ถ์ d์ฐจ์๊น์ง๋ง ์ป๊ณ ์ถ์ ๊ฒฝ์ฐ, d ๊ฐ์ ์ฃผ์ฑ๋ถ์ผ๋ก ์ ์๋ ํ๋ฉด์ ํฌ์
Wd = Vt.T[:, :d]
X2D = X_centered.dot(Wd)
PCA๋ ๋ฐ์ดํฐ์ ์ ํ๊ท ์ด 0์ด๋ผ๊ณ ๊ฐ์ ํ๋ค. ๋ฐ๋ผ์ ํญ์ PCA ์์ ์ ํด์ฃผ๊ธฐ ์ ์, ์ ์ฒด ๋ฐ์ดํฐ์ ํ๊ท ์ 0์ผ๋ก ๋ง์ถ๋ ์์ ์ด ํ์ํ๋ค.
X_centered = X - X.mean(axis=0) ์ฝ๋ ์ฐธ๊ณ .
4) PCA ์์ ์ฝ๋
MINST ๋ฐ์ดํฐ์ (์ซ์ ์๊ธ์จ ์ด๋ฏธ์ง)๊ณผ sklearn์ ์ด์ฉํ์ฌ PCA๋ฅผ ์ค์ตํด ๋ณด์.
4-1) MNIST ๋ฐ์ดํฐ์ ๋ถ๋ฌ์ค๊ธฐ
from sklearn.datasets import fetch_openml
mnist = fetch_openml('mnist_784', version=1)
mnist.keys()
>>
dict_keys(['data', 'target', 'frame', 'categories', 'feature_names', 'target_names', 'DESCR', 'details', 'url'])
4-2) X, Y ๋ฐฐ์ด ์ดํด๋ณด๊ธฐ
X, y = mnist["data"], mnist["target"]
print(X.shape)
print(y.shape)
>>
(70000, 784)
(70000,)
4-3) PCA ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ถ๋ฌ์ค๊ณ , ์ฃผ์ฑ๋ถ์ผ๋ก ๋ณํ
from sklearn.decomposition import PCA
import numpy as np
pca = PCA()
pca.fit(X)
cumsum = np.cumsum(pca.explained_variance_ratio_)
d = np.argmax(cumsum >= 0.95) + 1
์ ์ฝ๋๋ PCA ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์ ์ฐจ์์ 2๋ก ์ค์ด๋ ์ฝ๋์ด๋ค.
ํ์ต์ํค๋ฉด pca.components_ ์์ฑ์ W(์ฃผ์ฑ๋ถ ํ๋ ฌ)์ ์ ์น(T)๊ฐ ๋ด๊ธฐ๊ฒ ๋๋ค.
cumsum์ ๋ถ์ฐ์ ํฉ์ ๋ํ๋ธ๋ค. ์ฐจ์์ด ์ฆ๊ฐํ ์๋ก ์ผ๋ง๋ ๋ถ์ฐ์ด ์ค๋ช ๋๊ณ ์๋์ง ์งํ๋ฅ ์ ๋ํ๋ด๋ ๊ฒ์ด๋ผ ๋ณด๋ฉด ํธํ๋ค.
4-4) ๋ถ์ฐ ์ค๋ช 95%์์ ์ฃผ์ฑ๋ถ ๋ถ์ ์ข ๋ฃ
pca_a = PCA(n_components = d)
X_reduced = pca_a.fit_transform(X)
cumsum_reduced = np.cumsum(pca_a.explained_variance_ratio_)
๋ณ์ d๋ 95% ์ง์ ์ ์ฐจ์์ ๋ปํ๋ค. n_components์ d๋ฅผ ์ ๋ ฅํ๋ฉด, PCA๋ d์ฐจ์๊น์ง๋ง ์ฃผ์ฑ๋ถ ๋ถ์์ ํ๊ณ ์ข ๋ฃํ๋ค.
4-5) ๊ทธ๋ํ๋ก ํ์ธํ๊ธฐ
import matplotlib.pyplot as plt
%matplotlib inline
plt.plot(cumsum)
plt.plot(cumsum_reduced)
cumsum์ n_components์ ์ ํ์ด ์๊ธฐ์, ๋ถ์ฐ 100%๋ฅผ ์ค๋ช ํ ๋๊น์ง ์ฃผ์ฑ๋ถ ๋ถ์์ ์งํํ๋ค.
๊ทธ์ ๋ฐํด, cumsum_reduced๋ n_components 95% ์ ํ์ด ์กด์ฌํ๋ค. ์ฝ 150์ฐจ์์์ ์กฐ๊ธฐ ์ข ๋ฃํ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ง๊ธ๊น์ง ์ฐจ์ ์ ์ฃผ ๋ฐ ์ถ์, PCA ์ ์์ ์์ ์ฝ๋๋ฅผ ์ดํด๋ณด์๋ค.
์ฐจ์ ์ถ์ 2ํ์์ PCA ์ํ ์๋ฆฌ, ์์ถ/๋๋ค/์ ์ง์ PCA์ ๋ํด ๋ค๋ฃจ๋๋ก ํ๊ฒ ๋ค.
'๐งช Data Science > ML, DL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ฐํํ์ต] REINFORCE ์๊ณ ๋ฆฌ์ฆ : ์ฝ๋ ๊ตฌํ (1) | 2024.06.02 |
---|---|
[๊ฐํํ์ต] REINFORCE ์๊ณ ๋ฆฌ์ฆ : ๊ฐ๋ ๋ฐ ์์ (0) | 2024.05.27 |
[์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ] ALS ๊ฐ๋ , Basic ํ๊ฒ feat. ์ฝ๋ X (0) | 2022.05.23 |
[CNN basic] MNIST ๋ฐ์ดํฐ์ ํ์ต, ์์ธก (0) | 2022.04.19 |
[CNN basic] ํฉ์ฑ๊ณฑ ์ธต, ํ๋ง ์ธต (0) | 2022.04.19 |