Codelog

[AIB] Vector/Matrices ๋ณธ๋ฌธ

Boot Camp/section1

[AIB] Vector/Matrices

minzeros 2021. 12. 20. 18:03

๐Ÿ’ก Regression

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.DataFrame(
	[[1, 3, 5, 7, 9],
    [2, 8, 14, 20, 26]],
    index=['mid', 'final']
).T

df['ones'] = np.ones(5)

df

output :

 

X = df[['ones', 'mid']].values
Y = df['final'].values.reshape(-1,1)	# Transpose

# ์œ„์˜ ๊ณต์‹ ๊ณ„์‚ฐ
beta = np.matmul(np.linalg.inv(np.matmul(np.transpose(X), X)), np.matmul(np.transpose(X), Y))

beta

output :

cf.

np.reshape(a, b) : a x b ์ฐจ์›์˜ ๋ฐฐ์—ด๋กœ ์žฌ๊ตฌ์กฐํ™”

  • reshape(-1, b) - ํ–‰ ์œ„์น˜๊ฐ€ -1์ธ ๊ฒฝ์šฐ

     ์—ด ์ฐจ์›์˜ ์ •์ˆ˜(b)์— ๋”ฐ๋ผ์„œ ์›์†Œ๊ฐ€ ๋ฐฐ์น˜๋  ์ˆ˜ ์žˆ๋„๋ก ํ–‰์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ€๋ณ€์ ์œผ๋กœ ์ •ํ•ด์ง

  • reshape(a, -1) - ์—ด ์œ„์น˜๊ฐ€ -1์ธ ๊ฒฝ์šฐ

     ํ–‰ ์ฐจ์›์˜ ์ •์ˆ˜(a)์— ๋”ฐ๋ผ์„œ ์›์†Œ๊ฐ€ ๋ฐฐ์น˜๋  ์ˆ˜ ์žˆ๋„๋ก ์—ด์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ€๋ณ€์ ์œผ๋กœ ์ •ํ•ด์ง

 

np.matmul(x1, x2) : ๋‘ ๋ฐฐ์—ด์˜ ํ–‰๋ ฌ ๊ณฑ ์—ฐ์‚ฐ ํ•จ์ˆ˜

np.linalg.inv(x) : ์—ญํ–‰๋ ฌ์„ ๊ตฌํ•ด์ฃผ๋Š” ํ•จ์ˆ˜

 

Visualize Linear Regression
# Beta๋ฅผ ๋ณ€์ˆ˜๋กœ ์ €์žฅ
beta_0 = beta[0,0]
beta_1 = beta[1,0]

# ๊ทธ๋ž˜ํ”„
plt.scatter(df['mid'], df['final'])
axex = plt.gca()
x_vals = np.array(axes.get_xlim())
y_vals = beta_0 + beta_1 * x_vals
plt.plot(x_vals, y_vals, '-', color='b')

plt.title('Grade')
plt.xlabel('Mid')
plt.ylabel('Final')
plt.show()

output :

 

Linear Regression with Scipy
from scipy import stats

stats.linregress([1, 3, 5, 7, 9], [2, 8, 14, 20, 26])

output :

 

๐Ÿ’ก Dimensionality Reduction : PCA, SVD

์‚ฌ์ด์ฆˆ๊ฐ€ ํฐ ๋ฐ์ดํ„ฐ์…‹์„ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘์€ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„๋Š” ์ž‘์—…์ด๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ๊ฐํ™”๋‚˜ ๋‹ค๋ฅธ ๋ชจ๋ธ๋ง์„ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

 

โœจ CNN

'Convolving' ์€ ํ•„ํ„ฐ, ์ปค๋„(์ž‘์€ ๋งคํŠธ๋ฆญ์Šค)์„ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ์ถ•์†Œํ™”ํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ถ„์„์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

ํ•„ํ„ฐ๋ฅผ ํ†ตํ•ด์„œ ์ˆ˜์ •๋œ ์ด๋ฏธ์ง€๋Š” ํŠน์ˆ˜ํ•œ ๋ถ€๋ถ„์ด ๊ฐ•์กฐ๋˜์–ด ์ด๋ฏธ์ง€ ๋ถ„์„์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. (์„ ํ˜•๋Œ€์ˆ˜ ๊ธฐ๋ฐ˜)

... ์ถ”ํ›„ ํฌ์ŠคํŒ… ์˜ˆ์ • ...

 

๐Ÿ’ก ์Šค์นผ๋ผ, ๋ฒกํ„ฐ

  • ์Šค์นผ๋ผ์™€ ๋ฒกํ„ฐ๋Š” ์„ ํ˜•๋Œ€์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„์ด๋‹ค.
  • ์Šค์นผ๋ผ๋Š” ๋‹จ์ˆœํžˆ ๋ณ€์ˆ˜๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ˆซ์ž์ด๋ฉฐ, ๋ฒกํ„ฐ ํ˜น์€ ๋งคํŠธ๋ฆญ์Šค์— ๊ณฑํ•ด์ง€๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฐ’์— ์Šค์นผ๋ผ ๊ฐ’๋งŒํผ ๊ณฑํ•ด์ง„ ๊ฐ’์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค.
  • ์Šค์นผ๋ผ๋Š” ๋‹จ์ผ ์ˆซ์ž์ด๋ฉฐ, ์‹ค์ˆ˜์™€ ์ •์ˆ˜ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฒกํ„ฐ๋Š” ํŒŒ์ด์ฌ์—์„œ ์ฃผ๋กœ list ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ฐ์ดํ„ฐ์…‹์„ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ ํ–‰/์—ด๋กœ์จ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•œ๋‹ค.
  • n์ฐจ์›์˜ ๋ฒกํ„ฐ๋Š” ์ปดํฌ๋„ŒํŠธ๋ผ ๋ถˆ๋ฆฌ๋Š” n๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ€์ง€๋ฉฐ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ชจ์Œ์ด๋‹ค. (์ปดํฌ๋„ŒํŠธ๋Š” ์Šค์นผ๋ผ๋กœ ๊ฐ„์ฃผ๋˜์ง€ ์•Š์Œ)
  • ๋งคํŠธ๋ฆญ์Šค๋Š” ๋ฒกํ„ฐ์˜ ๋ชจ์Œ์œผ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

 

import math
import matplotlib.pyplot as plt
import numpy as np

# ์‹œ์ž‘ ๋ฒกํ„ฐ (0 ,0) ๊ธฐ์ค€
blue = [0.5, 0.5]

# ์Šค์นผ๋ผ ๊ณฑ
green = np.multiply(5, blue)
red = np.multiply(math.pi, blue)
orange = np.multiply(-3.12, blue)

# scale์ด ๋ฐ”๋€ ๋ฒกํ„ฐ๋ฅผ ๊ทธ๋ฆผ
plt.arrow(0, 0, red[0], red[1], head_width=0.1, head_length=0.1, color='#d63031')
plt.arrow(0, 0, green[0], green[1], head_width=0.1, head_length=0.1, color='#00b894')
plt.arrow(0, 0, blue[0], blue[1], head_width=0.1, head_length=0.1, color='#0984e3')
plt.arrow(0, 0, orange[0], orange[1], head_width=0.1, head_length=0.1, color='#e17055')
plt.xlim(-2, 3)          
plt.ylim(-2, 2)
plt.title("Vector example 1")
plt.grid()
plt.show()

output :

 

# vector ์˜ˆ์‹œ
yellow = [0.4, 0.6]
red = [0.11, 0.12]
blue = [0.1, 0.7]

plt.arrow(0, 0, yellow[0], yellow[1], head_width=0.01, head_length=0.01, color='#fdcb6e')
plt.arrow(0, 0, red[0], red[1], head_width=0.01, head_length=0.01, color='#d63031')
plt.arrow(0, 0, blue[0], blue[1], head_width=0.01, head_length=0.01, color='#0984e3')
plt.title('Vector example 2')
plt.grid()
plt.show()

ouput :

 

๋ฒกํ„ฐ์˜ ํฌ๊ธฐ (Magnitude, Norm)

๋ฒกํ„ฐ์˜ ํฌ๊ธฐ์ธ Magnitude ํ˜น์€ Norm ์€ ๋‹จ์ˆœํžˆ ๊ธธ์ด์— ์ง€๋‚˜์ง€ ์•Š๋Š”๋‹ค.

๋ฒกํ„ฐ์˜ ๊ธธ์ด(Length)๋Š” ๋ฒกํ„ฐ์˜ ์ฐจ์›์ˆ˜์™€ ๋™์ผํ•˜๋‹ค.

 

๋ฒกํ„ฐ์˜ ๋‚ด์  (Dot Product)

๋‘ ๋ฒกํ„ฐ์˜ ๋‚ด์ ์€ ๋ฒกํ„ฐ์˜ ๊ฐ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ณฑํ•œ ๋’ค ํ•ฉํ•œ ๊ฐ’๊ณผ ๊ฐ™๋‹ค.

  • ๋‚ด์ ์€ ๊ตํ™˜๋ฒ•์น™์ด ์ ์šฉ๋œ๋‹ค.   a x b = b x a
  • ๋‚ด์ ์€ ๋ถ„๋ฐฐ๋ฒ•์น™์ด ์ ์šฉ๋œ๋‹ค.   a x (b + c) = a x b + a x c
  • ๋ฒกํ„ฐ์˜ ๋‚ด์ ์„ ์œ„ํ•ด์„œ๋Š” ๋‘ ๋ฒกํ„ฐ์˜ ๊ธธ์ด๊ฐ€ ๋ฐ˜๋“œ์‹œ ๋™์ผํ•ด์•ผ ํ•œ๋‹ค.

 

 

๐Ÿ’ก ๋งคํŠธ๋ฆญ์Šค

๋งคํŠธ๋ฆญ์Šค๋Š” ํ–‰๊ณผ ์—ด์„ ํ†ตํ•ด ๋ฐฐ์น˜๋˜์–ด์žˆ๋Š” ์ˆซ์ž๋“ค์ด๋‹ค.

pandas๋ฅผ ํ†ตํ•ด ๋งŽ์ด ๋‹ค๋ค˜๋˜ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„๊ณผ ์œ ์‚ฌํ•œ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

Square Matrix (์ •์‚ฌ๊ฐ ๋งคํŠธ๋ฆญ์Šค, ์ •๋ฐฉ ๋งคํŠธ๋ฆญ์Šค)

ํ–‰๊ณผ ์—ด์˜ ์ˆ˜๊ฐ€ ๋™์ผํ•œ ๋งคํŠธ๋ฆญ์Šค์ด๋‹ค.

 

 

๐Ÿ’ก Matrix Calculation

Matirx multiplication

 

Matrix Transpose
df

df.T	# df.transpose()

 

Determinant

ํ–‰๋ ฌ์‹์€ ๋ชจ๋“  ์ •์‚ฌ๊ฐ ๋งคํŠธ๋ฆญ์Šค๊ฐ€ ๊ฐ–๋Š” ์†์„ฑ์œผ๋กœ det(A) ํ˜น์€ |A|๋กœ ํ‘œ๊ธฐ๋œ๋‹ค.

 

Inverse Matirx (์—ญํ–‰๋ ฌ)

์—ญํ–‰๋ ฌ์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ, ํ–‰๋ ฌ์˜ ์—ญ์ˆ˜์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งคํŠธ๋ฆญ์Šค์— ์—ญํ–‰๋ ฌ์„ ๊ณฑํ•˜๋ฉด ๋‹จ์œ„ ๋งคํŠธ๋ฆญ์Šค๊ฐ€ ๋œ๋‹ค.

๋‹จ์œ„ ๋งคํŠธ๋ฆญ์Šค๋ž€, ์ฃผ๋Œ€๊ฐ์„ ์˜ ์›์†Œ๊ฐ€ ๋ชจ๋‘ 1์ด๋ฉฐ ๋‚˜๋จธ์ง€ ์›์†Œ๋Š” ๋ชจ๋‘ 0์ธ ์ •์‚ฌ๊ฐ ํ–‰๋ ฌ์ด๋‹ค.

'Boot Camp > section1' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[AIB] High dimensional Data  (0) 2022.01.06
[AIB] Intermediate Linear Algebra  (0) 2021.12.28
[AIB] Bayesian  (0) 2021.11.02
[AIB] Confidence Intervals  (0) 2021.11.02
Type of Error (TP, TN, FP, FN)  (0) 2021.10.10