Artificial Intelligence/Studying

[๋จธ์‹ ๋Ÿฌ๋‹ ๊ต๊ณผ์„œ] Ch03 ๋‚ด์šฉ ์ •๋ฆฌ (์•„์ง ์ˆ˜์ • ์ค‘)

geum 2020. 9. 29. 16:38

3์žฅ ์ด๋ฆ„์ด ์‚ฌ์ดํ‚ท๋Ÿฐ์„ ํƒ€๊ณ  ๋– ๋‚˜๋Š” ๋จธ์‹  ๋Ÿฌ๋‹ ๋ถ„๋ฅ˜ ๋ชจ๋ธ ํˆฌ์–ธ๋ฐ ๋ญ”๊ฐ€ ๊ท€์—ฝ๋‹ค ใ…‹ใ…‹ใ…‹

๊ณ„์† ์ž„์‹œ์ €์žฅ์ด์—ˆ๋‹ค๊ฐ€ ๋“œ๋””์–ด ์˜ฌ๋ฆฌ๋Š”,,,ใ…Ž ๋จธ์“ฑ ใ€œ(๏ฟฃโ–ฝ๏ฟฃใ€œ)(ใ€œ๏ฟฃโ–ฝ๏ฟฃ)ใ€œ

 

โœ” 3.1 ๋ถ„๋ฅ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ

๋ถ„๋ฅ˜ ๋ชจ๋ธ์˜ ์˜ˆ์ธก ์„ฑ๋Šฅ๊ณผ ๊ณ„์‚ฐ ์„ฑ๋Šฅ์€ ํ•™์Šต์— ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ์— ํฌ๊ฒŒ ์˜์กด

 

< ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ›ˆ๋ จํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์„ฏ ๊ฐ€์ง€ ์ฃผ์š” ๋‹จ๊ณ„ >


1๏ธโƒฃ ํŠน์„ฑ์„ ์„ ํƒํ•˜๊ณ  ํ›ˆ๋ จ ์ƒ˜ํ”Œ ๋ชจ์ง‘
2๏ธโƒฃ ์„ฑ๋Šฅ ์ง€ํ‘œ ์„ ํƒ
3๏ธโƒฃ ๋ถ„๋ฅ˜ ๋ชจ๋ธ๊ณผ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ
4๏ธโƒฃ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ ํ‰๊ฐ€
5๏ธโƒฃ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŠœ๋‹

 

 

โœ” 3.2 ์‚ฌ์ดํ‚ท๋Ÿฐ ์ฒซ๊ฑธ์Œ

์‚ฌ์ดํ‚ท๋Ÿฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ : ๋‹ค์–‘ํ•œ ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ œ๊ณต, ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ๋‚˜ ์„ธ๋ถ€ ์กฐ์ •, ๋ชจ๋ธ ํ‰๊ฐ€๋ฅผ ์œ„ํ•ด ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜ ๅคš

 

โญ ์‚ฌ์ดํ‚ท๋Ÿฐ์ด ์ œ๊ณตํ•˜๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ API

  • Classification : ๋ถ„๋ฅ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ ํด๋ž˜์Šค
  • Regression : ํšŒ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ ํด๋ž˜์Šค
  • Classification + Regression => Estimator ํด๋ž˜์Šค๋ผ๊ณ  ๋ถ€๋ฆ„
  • Clustering
  • Dimensional reduction
  • Model selection
  • Preprocessing
from sklearn import datasets
import numpy as np

iris = datasets.load_iris()
X = iris.data[:, [2, 3]]
y = iris.target

# np.unique(y)๋Š” iris.target์— ์ €์žฅ๋œ ์„ธ ๊ฐœ์˜ ๊ณ ์œ ํ•œ ํด๋ž˜์Šค ๋ ˆ์ด๋ธ” ๋ฐ˜ํ™˜
print('ํด๋ž˜์Šค ๋ ˆ์ด๋ธ” :', np.unique(y))

output

ํด๋ž˜์Šค ๋ ˆ์ด๋ธ”: [0 1 2]

๋ถ“๊ฝƒ ํด๋ž˜์Šค ๋ ˆ์ด๋ธ”(์ด๋ฆ„)์ธ Iris-setosa, Iris-versicolor, Iris-virginica๊ฐ€ 0 1 2 ๋กœ ์ €์žฅ

๐Ÿ‘‰ ์ •์ˆ˜ ๋ ˆ์ด๋ธ”์€ ์‚ฌ์†Œํ•œ ์‹ค์ˆ˜๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์ ๊ฒŒ ์ฐจ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ถŒ์žฅ๋จ

 

 

โœ” 3.3 ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€(ํšŒ๊ท€ X, ๋ถ„๋ฅ˜ ๋ชจ๋ธ O)๋ฅผ ์‚ฌ์šฉํ•œ ํด๋ž˜์Šค ํ™•๋ฅ  ๋ชจ๋ธ๋ง

ํผ์…‰ํŠธ๋ก  ๊ทœ์น™ → ํด๋ž˜์Šค๊ฐ€ ์„ ํ˜•์ ์œผ๋กœ ๊ตฌ๋ถ„๋˜์ง€ ์•Š์„ ๋•Œ ์ˆ˜๋ ดํ•  ์ˆ˜ ์—†๋‹ค๋Š” ํฐ ๋‹จ์ 

 

3.3.1 ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€์˜ ์ดํ•ด์™€ ์กฐ๊ฑด๋ถ€ ํ™•๋ฅ 

 

๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€ : ๊ตฌํ˜„์ด ์‰ฝ๊ณ  ์„ ํ˜•์ ์œผ๋กœ ๊ตฌ๋ถ„๋˜๋Š” ํด๋ž˜์Šค์— ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋‚ด๋Š” ๋ถ„๋ฅ˜ ๋ชจ๋ธ(์ด์ง„ ๋ถ„๋ฅ˜๋ฅผ ์œ„ํ•œ ์„ ํ˜• ๋ชจ๋ธ์ด์ง€๋งŒ ๋‹ค์ค‘ ๋ถ„๋ฅ˜๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ)

 

โ” odds ratio

P/(1-P) → P๋Š” ์–‘์„ฑ ์ƒ˜ํ”Œ์ผ ํ™•๋ฅ , ์–‘์„ฑ ์ƒ˜ํ”Œ์€ ์ข‹์€ ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์˜ˆ์ธกํ•˜๋ ค๋Š” ๋Œ€์ƒ์„ ๋‚˜ํƒ€๋ƒ„

 

โ” logit(P) : ๋กœ์ง“ ํ•จ์ˆ˜, odds ratio์— ๋กœ๊ทธ ํ•จ์ˆ˜(๋กœ๊ทธ ์˜ค์ฆˆ)๋ฅผ ์ทจํ•œ ํ˜•ํƒœ → 0๊ณผ 1 ์‚ฌ์ด์˜ ์ž…๋ ฅ ๊ฐ’์„ ๋ฐ›์•„ ์‹ค์ˆ˜ ๋ฒ”์œ„ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜

โ” ํŠน์„ฑ์˜ ๊ฐ€์ค‘์น˜ ํ•ฉ๊ณผ ๋กœ๊ทธ ์˜ค์ฆˆ ์‚ฌ์ด์˜ ์„ ํ˜• ๊ด€๊ณ„

* P(y=1|x) ๋Š” ํŠน์„ฑ x๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ์ด ์ƒ˜ํ”Œ์ด ํด๋ž˜์Šค 1์— ์†ํ•  ์กฐ๊ฑด๋ถ€ ํ™•๋ฅ 

* ๋กœ์ง“ ํ•จ์ˆ˜๋ฅผ z(=w^{T}x)์— ๋Œ€ํ•ด ์ •๋ฆฌํ•œ ํ•จ์ˆ˜ : (logistic) sigmoid function

import matplotlib.pyplot as plt
import numpy as np

def sigmoid(z):
    return 1.0 / (1.0 + np.exp(-z))

z = np.arange(-7, 7, 0.1)

phi_z = sigmoid(z)
plt.plot(z, phi_z)
plt.axvline(0, 0, color='k')
plt.ylim(-0.1, 1.1)
plt.xlabel('z')
plt.ylabel('$\phi (z)$')

# y์ถ• ๋ˆˆ๊ธˆ๊ณผ ๊ฒฉ์ž์„ 
plt.yticks([0.0, 0.5, 1.0])
ax = plt.gca()
ax.yaxis.grid(True)
plt.tight_layout()
plt.show()

 

โ” ์•„๋‹ฌ๋ฆฐ๊ณผ ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€ ์ฐจ์ด์ 

์ตœ์ข… ์ž…๋ ฅ์„ ํ•œ ๋’ค, ๊ฐ€์ค‘์น˜๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ๊ณผ์ •์—์„œ ํ•„์š”ํ•œ ํ™œ์„ฑํ™” ํ•จ์ˆ˜ ์ฐจ์ด

๐Ÿ‘‰ ์•„๋‹ฌ๋ฆฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์„ ํ˜• ํ™œ์„ฑํ™” ํ•จ์ˆ˜ / ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‹œ๊ทธ๋ชจ์ด๋“œ ํ™œ์„ฑํ™” ํ•จ์ˆ˜

 

 

 

3.3.2 ๋กœ์ง€์Šคํ‹ฑ ๋น„์šฉ ํ•จ์ˆ˜์˜ ๊ฐ€์ค‘์น˜ ํ•™์Šต

 

์ œ๊ณฑ ์˜ค์ฐจํ•ฉ ๋น„์šฉ ํ•จ์ˆ˜

์•„๋‹ฌ๋ฆฐ ๋ถ„๋ฅ˜ ๋ชจ๋ธ : ์ œ๊ณฑ ์˜ค์ฐจํ•ฉ ๋น„์šฉ ํ•จ์ˆ˜ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฐ€์ค‘์น˜ w๋ฅผ ํ•™์Šต

๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€ ๋ชจ๋ธ์„ ๋งŒ๋“ค ๋•Œ ์ตœ๋Œ€ํ™”ํ•˜๋ ค๋Š” ๊ธฐ๋Šฅ๋„(likelihood) L ์ •์˜

L(w)์˜ ์ž์—ฐ ๋กœ๊ทธ๋ฅผ ์ตœ๋Œ€ํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์›€ -> logL(w) ๋กœ๊ทธ ๊ฐ€๋Šฅ๋„ ํ•จ์ˆ˜

cf. ๋กœ๊ทธ ๊ฐ€๋Šฅ๋„ ํ•จ์ˆ˜๋ฅผ ์ตœ๋Œ€ํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šด ์ด์œ 

1๏ธโƒฃ ๋กœ๊ทธ ํ•จ์ˆ˜ ์ ์šฉ ์‹œ ๊ฐ€๋Šฅ๋„๊ฐ€ ๋งค์šฐ ์ž‘์„ ๋•Œ ์ผ์–ด๋‚˜๋Š” ์ˆ˜์น˜ ์ƒ์˜ underflow๋ฅผ ์‚ฌ์ „ ๋ฐฉ์ง€ ๊ฐ€๋Šฅ

2๏ธโƒฃ ๊ณ„์ˆ˜ ๊ณฑ์„ ๊ณ„์ˆ˜ ํ•ฉ์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ

 

 

3.3.3 ์•„๋‹ฌ๋ฆฐ ๊ตฌํ˜„์„ ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ณ€๊ฒฝ

 

๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€ ๊ตฌํ˜„ → ์•„๋‹ฌ๋ฆฐ ๊ตฌํ˜„ ๋น„์šฉ ํ•จ์ˆ˜๋ฅผ ์ƒˆ๋กœ์šด ๋น„์šฉ ํ•จ์ˆ˜๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด O

์ƒˆ๋กœ์šด ๋น„์šฉ ํ•จ์ˆ˜

์ƒˆ๋กœ์šด ๋น„์šฉ ํ•จ์ˆ˜ ์ด์šฉํ•ด์„œ

1๏ธโƒฃ ์—ํฌํฌ๋งˆ๋‹ค ๋ชจ๋“  ํ›ˆ๋ จ ์ƒ˜ํ”Œ์„ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋น„์šฉ ๊ณ„์‚ฐ

2๏ธโƒฃ ์„ ํ˜• ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ฅผ ์‹œ๊ทธ๋ชจ์ด๋“œ ํ™œ์„ฑํ™”๋กœ ๋ณ€๊ฒฝ

3๏ธโƒฃ ์ž„๊ณ„ ํ•จ์ˆ˜๊ฐ€ ํด๋ž˜์Šค ๋ ˆ์ด๋ธ” -1๊ณผ 1์ด ์•„๋‹Œ 0๊ณผ 1์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๋ณ€๊ฒฝ

๐Ÿ‘‰ ์„ธ ๋‹จ๊ณ„ ๋ฐ˜์˜ํ•˜๋ฉด ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€ ๋ชจ๋ธ ์–ป์„ ์ˆ˜ ์žˆ์Œ

 

โŒ p.97 ๋กœ์ง€์Šคํ‹ฑ ๋ชจ๋ธ๋กœ ๋ถ“๊ฝƒ ๊ฒฐ์ • ๊ฒฝ๊ณ„ ๊ทธ๋ฆฌ๊ธฐ error

ใ… ์™œ ์•ˆ๋ผ