Introduction
โข
Supervised Learning
โฆ
์ ๋ต ๊ฐ ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก input ๋ฅผ ๋ก mapping ํ๋ ํจ์ ๋ฅผ ํ์ต
โฆ
๋ํ์ ์ผ๋ก ์ฐ์ํ ์ ๋ต๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ ํ ํ๊ท๊ฐ ์๋ค.
Linear Regression
โข
๋จ์ ์ ํ ํ๊ท๋ถ์์ ํตํด, ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ค ๋ฉด์ ๋ฐ์ดํฐ(input)์ ์ง ๊ฐ์ผ๋ก mappingํ๋ ํจ์๋ฅผ ์ฐพ๊ณ , ์๋ก์ด ์
๋ ฅ (์์ ์์์๋ )์ ๋ํด ์ฐ์ํ ์ถ๋ ฅ ๊ฐ์ ์์ธก์ ์งํํ ์ ์๋ค.
โข
Input์ผ๋ก ๋ค์ํ ์
๋ ฅ๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ ์ด ๊ฒฝ์ฐ ๋ค์คํ๊ท๋ผ๊ณ ํ๋ค.
์์์ผ๋ก ํํ
โข
์ ํ ํ๊ท ํํ
โฆ
โฆ
โช
์ฌ๊ธฐ์ ์ ๋ ๊ฐ๊ฐ ์ด ๋ฒกํฐ์ด๋ค.
โ ์ ๋ฆฌํ์๋ฉด ์
๋ ฅ์ ์ถ๋ ฅ์ผ๋ก mapping ํ๋ ๊ฐ์ค ํจ์ ๋ฅผ ๊ฐ์ ๋ฐ์ดํฐ ์ ์ผ๋ก๋ถํฐ ํ์ตํ๋ ๊ณผ์ ์ด๋ฉฐ ์ฌ๊ธฐ์ ๊ฐ์ค ํจ์๋ฅผ ์ฐพ๋๋ค๋ ๊ฒ์ ๊ทธ๊ฒ์ ๊ตฌ์ฑํ๋ parameter๋ฅผ ์ฐพ๋๋ค๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฐ์ค ํจ์ ๋ parameterization ๋์ด์๋ค๊ณ ํํํ๋ฉฐ ์ด๋ parameter๋ฅผ ์๋ฉด ๊ทธ ํจ์๋ฅผ ์ ์ ์๋ค๋ ๊ฒ์ด๋ค.
ํ์ต
โข
๋ชฉ์
โฆ
โฆ
๊ฐ์ค ํจ์์ ๊ฒฐ๊ณผ๊ฐ ์ค์ ๊ฐ๊ณผ ๊ฐ๊น์์ง๋๋ก ๋ฅผ ํ์ตํ๋ค.
โข
๋ชฉ์ ํจ์๋ก ํํ
โฆ
SSE :
โช
๋ฐ์ดํฐ ๊ฐ์ ์ฆ๊ฐ ์, Error๋ ์ฆ๊ฐํ๋ ๊ฒฝํฅ์ด ์๋ค.
โฆ
MSE :
โฆ
RMSE :
โช
์ค์ฐจ์ ํฌ๊ธฐ๊ฐ ์ผ์ , ์ ๋ฐ์ดํฐ์ ๋์ผ ๋จ์์ด๋ค.
โฆ
โ ๋ชฉ์ ํจ์๋ฅผ ์ต์๋ก ๋ง๋๋ parameter๋ฅผ ์ต์์ ๊ณฑ๋ฒ์ ํตํด ์ฐพ๋๋ค.
โข
Convex
โฆ
๋ชฉ์ ํจ์๊ฐ convex ํจ์์ธ ๊ฒฝ์ฐ ํธ๋ฏธ๋ถ=0๋ฅผ ํ์ดํ๋ค.
โช
convex, concave ํจ์์ ๊ฒฝ์ฐ ์ต์/์ต๋๊ฐ = ๊ทน์/๊ทน๋๊ฐ ์ด๋ฏ๋ก ํธ๋ฏธ๋ถ์ ํตํด ํ์ดํ ์ ์๋ค.
โช
ํธ๋ฏธ๋ถ์ ๋ชจ๋ parameter์ ๋ํ ๋ฏธ๋ถ ๊ฐ์ด 0์ด ๋๋๋ก ์งํํ์ฌ์ผ ํ๋ค.
โช
๋ชฉ์ ํจ์๊ฐ convex์ผ ๋, ๋ชจ๋ ๋ณ์์ ๋ํ gradient = 0์ธ ์ง์ ์ global minimum์ด๊ธฐ ๋๋ฌธ์ด๋ค.
โฆ
ํธ๋ฏธ๋ถ์ ํตํ ํ์ด๋ parameter ๊ฐ์๊ฐ ๋์ด๋๋ฉด, ๊ณ์ฐ์ด ์ด๋ ค์์ง๋ ๋จ์ ์ด ์์ผ๋ฉฐ, ๋ชฉ์ ํจ์๊ฐ Convex/Concave๊ฐ ์๋ ๊ฒฝ์ฐ ํธ๋ฏธ๋ถ์ ํ์ฉํ๊ธฐ ์ด๋ ต๋ค.
โฆ
์) ๊ฐ์คํจ์ :
โช
๋ฅผ ํตํด ํ์ด
โข
Gradient Descent
โฆ
ํธ๋ฏธ๋ถ์ ํตํ ํ์ด์ ๋จ์ ์ ํด๊ฒฐํ๊ณ ์ ๊ฒฝ์ฌํ๊ฐ๋ฒ์ ์ด์ฉํ๋ค. (์ ์ง์ ์ผ๋ก ์ต์๊ฐ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ)
โฆ
โช
์์์ ์ด๊ธฐ๊ฐ์์ ์์ํ์ฌ gradient vector์ ๋ฐ๋ ๋ฐํฅ์ผ๋ก ์ ๊ฐ์ ์ผ์ ๋()๋งํผ ์ด๋ํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ ์ต์ ํด๋ฅผ ์ฐพ์๋๊ฐ๋ ๋ฐฉ๋ฒ
โช
์ด๋ gradient vector๊ฐ ์์๋ผ๋ฉด, ๊ฐ ์ปค์ง ๋ ํจ์๋ ์ฆ๊ฐํ๋ฏ๋ก ์ต์๊ฐ์ ์ฐพ๊ธฐ ์ํด ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ์ด๋์์ผ์ผ ํ๋ค. (๋ฐ๋์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง)
โช
Gradient vector = 0 ์์ update๋ ๋ ์ด์ ์งํ๋์ง ์๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ง์ฝ ๋ชฉ์ ํจ์๊ฐ Convex๋ผ๋ฉด ๊ทธ ์ง์ ์ด ์ต์ ์ ์ด๋ค. ๊ทธ๋ฌ๋ ๋ชฉ์ ํจ์๊ฐ Convex๊ฐ ์๋๋ผ๋ฉด ์ต์ ์ ์ด ์๋ ์ง์ ์ ๋๋ฌํ ์ ์๋ค.
โช
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ค์ํ ์ด๊น๊ฐ์ ํ์ฉํ๋ค.
โช
(ํ์ต๋ฅ ) : 0~1 ์ฌ์ด์ ๊ฐ์ ๊ฐ์ง๋ฉฐ, ํฐ ๊ฐ์ผ๋ก ์ค์ ํ๋ฉด ์ต์ ์ ์ ์ง๋์น ์ ์๋ค.
โฆ
์ ํจ์์์ ์์ํ๋ค๋ฉด ๊ทน์์ ์ ๋ฉ์ถ๊ฒ ์ง๋ง, ์์ ์์ํ๋ค๋ฉด ์ต์ ์ ์์ ์ค์งํ ๊ฒ์ด๋ค.
โฆ
์) ๊ฐ์คํจ์ : , ๋ชฉ์ ํจ์ : SSE ์ธ ๊ฒฝ์ฐ
โช
โช
Code
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
from sklearn.linear_model import LinearRegression
# Data ์์ฑ
rng = np.random.RandomState(1)
x = 10*rng.rand(50) # ํ์ค ์ ๊ท ๋ถํฌ๋ก๋ถํฐ 50๊ฐ ์ซ์ sampling
y = 2*x -5 + rng.rand(50) # y = 2x -5 ์ฃผ๋ณ์ ํฉ์ด์ ธ์๋ ๋ฐ์ดํฐ
plt.scatter(x,y)
Python
๋ณต์ฌ
# ๋จ์์ ํํ๊ท
model = LinearRegression(fit_intercept=True)
model.fit(x[: , np.newaxis],y) # input์ 2D๋ก ํ๊ธฐ ์ํจ
# newdata
xfit = np.linspace(0,100,1000)
yfit = model.predict(xfit[:,np.newaxis])
plt.scatter(x,y)
plt.plot(xfit,yfit)
plt.ylim(-5,10)
plt.xlim(0,10)
plt.show()
Python
๋ณต์ฌ
# model
a = model.coef_[0]
b = model.intercept_
x_new = np.linspace(0,100,1000)
y = b + a*x_new
plt.scatter(xfit,yfit)
plt.plot(x_new,y)
plt.ylim(-5,10)
plt.xlim(0,10)
plt.show()
Python
๋ณต์ฌ
# ๋ค์คํ๊ท
x = 10*rng.rand(100,3)
y = 10*rng.rand(100,1)
model.fit(x,y)
model.intercept_
model.coef_ # ์
๋ ฅ ๋ฐ์ดํฐ ํ๋ ฌ์ x_feature ์์์ ๋์ผ
Python
๋ณต์ฌ