ํƒœ๊ทธ ๋ณด๊ด€๋ฌผ: scikit-learn

scikit-learn

๊ต์ฐจ ๊ฒ€์ฆ, ํ•™์Šต ๊ณก์„  ๋ฐ ์ตœ์ข… ํ‰๊ฐ€๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋ถ„ํ• ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? random_state=0) 5. ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ

๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋ถ„ํ• ํ•˜๊ธฐ์œ„ํ•œ ์ ์ ˆํ•œ ์ „๋žต์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ‘๊ทผ ๋ฐฉ์‹์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์š”์ฒญ (์•ˆ ๊ฐ™์€ ๊ฐœ๋ณ„ ๋งค๊ฐœ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ test_size๋˜๋Š” n_iter,ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ X, y, X_train, y_train, X_test, ๊ทธ๋ฆฌ๊ณ  y_test์ ์ ˆํ•˜๊ณ  ์ˆœ์„œ๊ฐ€ ์˜๋ฏธ๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ) :

( scikit-learn ๋ฌธ์„œ ์—์„œ์ด ์˜ˆ์ œ๋ฅผ ํ™•์žฅ )

1. ๋ฐ์ดํ„ฐ ์…‹๋กœ๋“œ

from sklearn.datasets import load_digits
digits = load_digits()
X, y = digits.data, digits.target

2. ๊ต์œก ๋ฐ ํ…Œ์ŠคํŠธ ์„ธํŠธ๋กœ ๋ถ„ํ•  (์˜ˆ : 80/20)

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

3. ๊ฒฌ์ ์ž๋ฅผ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค

from sklearn.svm import SVC
estimator = SVC(kernel='linear')

4. ๊ต์ฐจ ๊ฒ€์ฆ ๋ฐ˜๋ณต์ž๋ฅผ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค

from sklearn.cross_validation import ShuffleSplit
cv = ShuffleSplit(X_train.shape[0], n_iter=10, test_size=0.2, random_state=0)

5. ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐ์ •

ํ›ˆ๋ จ ์„ธํŠธ ์— ๊ต์ฐจ ๊ฒ€์ฆ ๋ฐ˜๋ณต์ž๋ฅผ ์ ์šฉ

from sklearn.grid_search import GridSearchCV
import numpy as np
gammas = np.logspace(-6, -1, 10)
classifier = GridSearchCV(estimator=estimator, cv=cv, param_grid=dict(gamma=gammas))
classifier.fit(X_train, y_train)

6. ํ•™์Šต ๊ณก์„ ์œผ๋กœ ๋””๋ฒ„๊ทธ ์•Œ๊ณ ๋ฆฌ์ฆ˜

X_trainํ›ˆ๋ จ๊ณผ ํ…Œ์ŠคํŠธ ์„ธํŠธ๋กœ ๋ฌด์ž‘์œ„๋กœ 10 ํšŒ ๋ถ„ํ• ๋ฉ๋‹ˆ๋‹ค ( n_iter=10). ํ›ˆ๋ จ ์ ์ˆ˜ ๊ณก์„ ์˜ ๊ฐ ์ง€์ ์€ ๋ชจ๋ธ์ด ์ฒซ i ํ›ˆ๋ จ ์˜ˆ์ œ ์—์„œ ํ›ˆ๋ จ๋˜๊ณ  ํ‰๊ฐ€ ๋œ ํ‰๊ท  10 ์  ์ž…๋‹ˆ๋‹ค. ๊ต์ฐจ ๊ฒ€์ฆ ์ ์ˆ˜ ๊ณก์„ ์˜ ๊ฐ ์ง€์ ์€ ๋ชจ๋ธ์ด ์ฒซ ๋ฒˆ์งธ i ํ›ˆ๋ จ ์˜ˆ์ œ์—์„œ ํ•™์Šต๋˜๊ณ  ํ…Œ์ŠคํŠธ ์„ธํŠธ์˜ ๋ชจ๋“  ์˜ˆ์ œ์—์„œ ํ‰๊ฐ€ ๋œ ํ‰๊ท  10 ์  ์ž…๋‹ˆ๋‹ค.

from sklearn.learning_curve import learning_curve
title = 'Learning Curves (SVM, linear kernel, $\gamma=%.6f$)' %classifier.best_estimator_.gamma
estimator = SVC(kernel='linear', gamma=classifier.best_estimator_.gamma)
plot_learning_curve(estimator, title, X_train, y_train, cv=cv)
plt.show()

ํ•™์Šต ๊ณก์„ 

plot_learning_curve () ๋Š” ํ˜„์žฌ ๊ฐœ๋ฐœ ๋ฒ„์ „์˜ scikit-learn (0.15-git)์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

7. ์‹œํ—˜ ์„ธํŠธ์— ๋Œ€ํ•œ ์ตœ์ข… ํ‰๊ฐ€

classifier.score(X_test, y_test)

7a. ์ค‘์ฒฉ ๊ต์ฐจ ๊ฒ€์ฆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ ์„ ํƒ์—์„œ ์˜ค๋ฒ„ ํ”ผํŒ… ํ…Œ์ŠคํŠธ (์ „์ฒด ๋ฐ์ดํ„ฐ ์„ธํŠธ ์‚ฌ์šฉ)

from sklearn.cross_validation import cross_val_score
cross_val_score(classifier, X, y)

์ถ”๊ฐ€ ์งˆ๋ฌธ : 7 ๋‹จ๊ณ„๋ฅผ ์ค‘์ฒฉ ๊ต์ฐจ ๊ฒ€์ฆ์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๊นŒ? ๋˜๋Š” ์ค‘์ฒฉ ๋œ cv๊ฐ€ 7 ๋‹จ๊ณ„๋ฅผ ๋ณด์™„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

(์ฝ”๋“œ๋Š” scikit-learn์—์„œ k-fold cross validation์œผ๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ shuffle & split์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ cv์ฝ”๋“œ๋ฅผ ์ž‘๋™ ์‹œํ‚ค๋ ค๋ฉด ์œ„์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค)

8. ์ „์ฒด ๋ฐ์ดํ„ฐ ์„ธํŠธ์—์„œ ์ตœ์ข… ๋ชจ๋ธ ํ›ˆ๋ จ

classifier.fit(X, y)

ํŽธ์ง‘ : ์ด์ œ 7a ๋‹จ๊ณ„ ๊ฐ€์ด ์ˆœ์„œ์—์„œ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค๋Š” ๋งน์„ธ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ฑ„ํƒํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.



๋‹ต๋ณ€

7a ๋‹จ๊ณ„์—์„œ ์ˆ˜ํ–‰ ํ•  ์ž‘์—…์ด ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ ์ดํ•ดํ•˜์ง€๋งŒ ์ดํ•ด๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„ค๋ช…์„ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 7 ๋‹จ๊ณ„์—์„œ ํ™€๋“œ ์•„์›ƒ ์„ฑ๋Šฅ์„ 4-6 ๋‹จ๊ณ„๋ฅผ ํฌ๊ด„ํ•˜๋Š” ๊ต์ฐจ ๊ฒ€์ฆ ๊ฒฐ๊ณผ์™€ ๋น„๊ตํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋น„๊ต๊ฐ€ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ฃผ๋œ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ด ๋น„๊ต๋Š” ์‹ค์ œ๋กœ ๊ฒฝํ—˜ํ•  ์ˆ˜์žˆ๋Š” ๊ณผ๋„ํ•˜๊ฒŒ ๋‚™๊ด€์  ์ธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ์˜ ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์›์ธ์„ ๊ฐ์ง€ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    • ๊ณ„์ธต ์  (์ผ๋ช… ํด๋Ÿฌ์Šคํ„ฐ ๋œ) ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๊ต์œก ๋ฐ์ดํ„ฐ์™€ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์œ ์ถœ (์ข…์†์„ฑ). ํ•„์ž์˜ ๋ถ„์•ผ์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์ผํ•œ ํ™˜์ž ๋˜๋Š” ์ƒ๋ฌผํ•™์  ๋ณต์ œ ์‹คํ—˜์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ๋ฒˆ (๋•Œ๋กœ๋Š” ์ˆ˜์ฒœ ๊ฐœ)์˜ ํŒ๋… ๊ฐ’ (= ๋ฐ์ดํ„ฐ ๋งคํŠธ๋ฆญ์Šค์˜ ํ–‰)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ๋…๋ฆฝ์ ์ด์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฒ€์ฆ ๋ถ„ํ• ์€ ํ™˜์ž ์ˆ˜์ค€์—์„œ ์ˆ˜ํ–‰๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ ์œ ์ถœ์ด ๋ฐœ์ƒํ•˜๋ฉด ํ™€๋“œ ์•„์›ƒ ์„ธํŠธ ๋ถ„ํ• ๊ณผ ๊ต์ฐจ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ถ„ํ•  ๋ชจ๋‘์—์„œ ๋ฐ์ดํ„ฐ ์œ ์ถœ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ™€๋“œ ์•„์›ƒ์€ ๊ต์ฐจ ๊ฒ€์ฆ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‚™๊ด€์ ์œผ๋กœ ๋ฐ”์ด์–ด์Šค๋ฉ๋‹ˆ๋‹ค.

    • ์ „์ฒด ๋ฐ์ดํ„ฐ ๋งคํŠธ๋ฆญ์Šค์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ „์ฒ˜๋ฆฌ. ๊ณ„์‚ฐ์€ ๊ฐ ํ–‰์— ๋Œ€ํ•ด ๋…๋ฆฝ์ ์ด์ง€ ์•Š์ง€๋งŒ ๋งŽ์€ / ๋ชจ๋“  ํ–‰์ด ์ „์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ „ํ˜•์ ์ธ ์˜ˆ๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด โ€œ์‹ค์ œโ€๋ถ„๋ฅ˜ ์ด์ „์˜ PCA ํˆฌ์˜ ์ผ ๊ฒƒ์ด๋‹ค.
      ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ด๋Š” ํ™€๋“œ ์•„์›ƒ ๋ฐ ์™ธ๋ถ€ ๊ต์ฐจ ๊ฒ€์ฆ์— ๋ชจ๋‘ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฏ€๋กœ์ด๋ฅผ ๊ฐ์ง€ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ๋‘ ๊ฐ€์ง€ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์ž˜๋ชป ๋ถ„๋ฅ˜๋˜๋Š” ๋ถ€๋ถ„์ด ์‰ฝ๊ฒŒ ๊ณผ์†Œ ํ‰๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

  • ์ด ๊ณ„์‚ฐ ๋œ ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€ ์œ ํ˜•์˜ ์„ฑ๋Šฅ ์œ ํ˜•์œผ๋กœ ์ œํ•œ๋˜๋Š” ๊ฒฝ์šฐ ๋ชจ๋ธ ๋น„๊ต์—๋Š” ๋งค์šฐ ๋งŽ์€ ์ˆ˜์˜ ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€ ๋˜๋Š” ์‹ค์ œ ์„ฑ๋Šฅ์˜ ์—„์ฒญ๋‚˜๊ฒŒ ํฐ ์ฐจ์ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์ œํ•œ์˜ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ 2 ๊ฐœ์˜ ๋ถ„๋ฅ˜๊ธฐ๋ฅผ ๋น„๊ต ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ฝ๊ธฐ์— ์ข‹์€ ์ถœ๋ฐœ์ ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋ธ ํ’ˆ์งˆ์„ โ€œ์ตœ์ โ€๋ชจ๋ธ์— ๋Œ€ํ•œ ๋‚ด๋ถ€ ๊ต์ฐจ ๊ฒ€์ฆ ์ฒญ๊ตฌ์™€ ์™ธ๋ถ€ ๊ต์ฐจ ๊ฒ€์ฆ ๋˜๋Š” ํ™€๋“œ ์•„์›ƒ ๊ฒ€์ฆ์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆ์ผ์น˜๊ฐ€ ๋†’์œผ๋ฉด ๊ทธ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ ์ตœ์ ํ™”๊ฐ€ ์ž‘๋™ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ์˜๋ฌธ์ด ์ƒ๊น๋‹ˆ๋‹ค ( ์„ฑ๋Šฅ ์ธก์ •์˜ ๋†’์€ ๋ถ„์‚ฐ์œผ๋กœ ์ธํ•œ ๋ถ„์‚ฐ ์ฐจ์ด). ๋‚ด๋ถ€ ๋น„๊ต๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ์— ๋น„ํ•ด ์—„์ฒญ๋‚˜๊ฒŒ ์ข‹์€ ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ์ด ๋น„๊ต๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ตœ์ ํ™”์— ๋Œ€ํ•ด ๊ทธ๋‹ค์ง€ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด์จŒ๋“  ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์™ธ๋ถ€ (7) ์ธก์ •์ด ์ •์งํ•˜๊ณ  ๊ฑด์ „ํ•œ ๊ฒฝ์šฐ, ํš๋“ ํ•œ ๋ชจ๋ธ์ด ์ตœ์ ์ธ์ง€ ์•„๋‹Œ์ง€์— ๋Œ€ํ•œ ์œ ์šฉํ•œ ์ถ”์ •์น˜๊ฐ€ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

ํ•™์Šต ๊ณก์„ ์„ ์ธก์ •ํ•˜๋Š” IMHO๋Š” ์•„์ง ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•™์Šต ๊ณก์„ ์ด ํ•„์š”ํ•œ ๊ฒƒ์„ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ( ์ฃผ์–ด์ง„ ๋ฌธ์ œ, ๋ฐ์ดํ„ฐ ๋ฐ ๋ถ„๋ฅ˜ ๋ฐฉ๋ฒ• ์˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ ๋˜๋Š” ํ•™์Šต ๊ณก์„ ์— ๋Œ€ํ•œ ํ•™์Šต ๊ณก์„ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ๋Œ€ํ•œ ์ด ) ๋ฌธ์ œ, ๋ฐ์ดํ„ฐ ๋ฐ ๋ถ„๋ฅ˜ mehtod ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ ์„ธํŠธ ๋ฐ ์ถ”๊ฐ€ ๊ฒฐ์ •์˜ ๋ฌด๋ฆฌ (์˜ˆ : ํ›ˆ๋ จ ์ƒ˜ํ”Œ ํฌ๊ธฐ์˜ ํ•จ์ˆ˜๋กœ ๋ชจ๋ธ์˜ ๋ณต์žก์„ฑ์— ๋Œ€์ฒ˜ํ•˜๋Š” ๋ฐฉ๋ฒ•? ์ตœ์ ํ™” ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ณ ์ • ๋œ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๊ฒฐ์ • ํ›ˆ๋ จ ์„ธํŠธ ํฌ๊ธฐ์— ๋”ฐ๋ผ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ธฐ๋Šฅ?)

(๋‚ด ๋ฐ์ดํ„ฐ์—๋Š” ์‹ค์ œ๋กœ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ์ •ํ™•ํ•œ ํ•™์Šต ๊ณก์„  ์ธก์ •์„ ์–ป์„ ์ˆ˜์žˆ๋Š” ๋…๋ฆฝ์  ์ธ ์‚ฌ๋ก€๊ฐ€ ๊ฑฐ์˜ ์—†์ง€๋งŒ 1200 ํ–‰์ด ์‹ค์ œ๋กœ ๋…๋ฆฝ์  ์ธ ๊ฒฝ์šฐ ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)


์—…๋ฐ์ดํŠธ : scikit-learn ์˜ˆ์ œ์—์„œ โ€œ์ž˜๋ชป๋œโ€๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์šฐ์„ , ์ค‘์ฒฉ ๊ต์ฐจ ๊ฒ€์ฆ์—๋Š” ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ค‘์ฒฉ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋Š” ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์ตœ์ ํ™”์— ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋ฉฐ ๊ต์ฐจ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋Š” ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค (ํŠนํžˆ ๋ฐ˜๋ณต / ๋ฐ˜๋ณต๋˜๋Š” ๊ฒฝ์šฐ).

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฌธ์ œ๊ฐ€ ์ „ํ˜€ ์—†๋Š”์ง€ ์—ฌ๋ถ€๋Š” ๊ด€์ ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ •์งํ•œ ์ค‘์ฒฉ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ (์™ธ๋ถ€ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์—„๊ฒฉํ•˜๊ฒŒ ๋…๋ฆฝ์ ์œผ๋กœ ์œ ์ง€)๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•œ ์™ธ๋ถ€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋Š” โ€œ์ตœ์ ์˜โ€๋ชจ๋ธ ์„ฑ๋Šฅ์˜ ์ ์ ˆํ•œ ์ฒ™๋„์ž…๋‹ˆ๋‹ค. ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ SVM์˜ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹์„์œ„ํ•œ ์ด๋Ÿฌํ•œ ๋น„๋ก€ ์œ ํ˜• ์„ฑ๋Šฅ ์ธก์ •์— ๋Œ€ํ•œ ๊ทธ๋ฆฌ๋“œ ๊ฒ€์ƒ‰์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ๋“ค์€ (์•„๋งˆ?) ์ตœ์ ํ™”์— ์˜์กด ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์™ธ๋ถ€ ๋ถ„ํ• ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰ ๋œ ๊ฒฝ์šฐ์—๋Š” ๋ชจ๋ธ์ด ์ตœ์ƒ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ํš๋“ ํ•œ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ์ •์งํ•˜๊ฒŒ ์ถ”์ • ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ ํ™”๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜์žˆ๋Š” ์ด์œ ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์„ค๋ช…ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ˆ˜ํ•™์ ์œผ๋กœ / ํ†ต๊ณ„์ ์œผ๋กœ ๋งํ•˜๋ฉด, ๋น„์œจ์˜ ๋ฌธ์ œ๋Š” ์ธก์ • ๋œ ๋น„์œจ ๊ฐ€ ์œ ํ•œ ํ…Œ์ŠคํŠธ ์ƒ˜ํ”Œ ํฌ๊ธฐ (๋ชจ๋ธ์˜ ์‹ค์ œ ์„ฑ๋Šฅ ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„) ์œผ๋กœ ์ธํ•ด ํฐ ์ฐจ์ด๋ฅผ ๊ฒช์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค . N, P์˜VR( P์€ )=P(1โ€“P)

    p^

    n

    p


    Var(p^)=p(1โˆ’p)n

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

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

  • SVM์˜ ๊ฒฝ์šฐ ์„ฑ๋Šฅ ์ธก์ •๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋ธ์ด์ด ๋พฐ์กฑํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ฐ˜์‘ํ•œ๋‹ค๋Š” ์ถ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์กฐ๊ธˆ๋งŒ ๋ณ€๊ฒฝํ•ด๋„ ์•„๋ฌด๋Ÿฐ ๋ณ€ํ™”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์–ด๋–ค ๊ฒฝ์šฐ์— ์„œํฌํŠธ ๋ฒกํ„ฐ๊ฐ€๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์„œํฌํŠธ ๋ฒกํ„ฐ๊ฐ€ ๋  ์ˆ˜์žˆ์„ ์ •๋„๋กœ ๋ณ€ํ•  ๋•Œ๋งŒ ๋ชจ๋ธ์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ, ์ด๋Ÿฌํ•œ ๋ชจ๋ธ์€ ์ตœ์ ํ™”ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๋ฌธํ•™:


์—…๋ฐ์ดํŠธ II : ์Šคํ‚ค๋ฐ ์ฐจ์ด

๋ชจ๋ธ ๋น„๊ต ์ธก๋ฉด์—์„œ ๊ฐ๋‹นํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ๋…๋ฆฝ์  ์ธ ์‚ฌ๋ก€์˜ ์ˆ˜์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ‚ค๋ฐ ๋ถ„์‚ฐ์˜ ์œ„ํ—˜์— ๋Œ€ํ•œ ๋น ๋ฅด๊ณ  ๋”๋Ÿฌ์šด ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

scikit.learndigits๋ฐ์ดํ„ฐ์— 1797 ๊ฐœ๊ฐ€ ์žˆ๋‹ค๊ณ ํ•ฉ๋‹ˆ๋‹ค .

  • 100 ๊ฐœ์˜ ๋ชจ๋ธ, ์˜ˆ๋ฅผ ๋“ค์–ด 2 ๊ฐœ์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ๊ทธ๋ฆฌ๋“œ๋ฅผ ๋น„๊ตํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค .
    10ร—10

  • ๋‘ ๋งค๊ฐœ ๋ณ€์ˆ˜ (๋ฒ”์œ„)๊ฐ€ ๋ชจ๋ธ์— ์ „ํ˜€ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฆ‰, ๋ชจ๋“  ๋ชจ๋ธ์˜ 97 % ( digits๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ์ผ๋ฐ˜ ์„ฑ๋Šฅ)์™€ ๋™์ผํ•œ ์‹ค์ œ ์„ฑ๋Šฅ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค .

  • ๋ฐ์ดํ„ฐ ์„ธํŠธ ์—์„œ ํ‘œ๋ณธ ํฌ๊ธฐ = 1797 ํ–‰์œผ๋กœ โ€œ์ด ๋ชจ๋ธ ํ…Œ์ŠคํŠธโ€์— ๋Œ€ํ•œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์‹คํ–‰

    104

    digits

    p.true = 0.97 # hypothetical true performance for all models
    n.models = 100 # 10 x 10 grid
    
    n.rows = 1797 # rows in scikit digits data
    
    sim.test <- replicate (expr= rbinom (n= nmodels, size= n.rows, prob= p.true), 
                           n = 1e4)
    sim.test <- colMaxs (sim.test) # take best model
    
    hist (sim.test / n.rows, 
          breaks = (round (p.true * n.rows) : n.rows) / n.rows + 1 / 2 / n.rows, 
          col = "black", main = 'Distribution max. observed performance',
          xlab = "max. observed performance", ylab = "n runs")
    abline (v = p.outer, col = "red")
    

์ตœ์ƒ์˜ ์„ฑ๋Šฅ์„์œ„ํ•œ ๋ถ„ํฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋นจ๊ฐ„์ƒ‰ ์„ ์€ ๋ชจ๋“  ๊ฐ€์ƒ ๋ชจ๋ธ์˜ ์‹ค์ œ ์„ฑ๋Šฅ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํ‰๊ท ์ ์œผ๋กœ, ์šฐ๋ฆฌ๋Š” 100 ๊ฐœ์˜ ๋น„๊ต ๋œ ๋ชจ๋ธ ์ค‘ ๊ฐ€์žฅ ๊ฒ‰๋ณด๊ธฐ์—๋Š” ์‹ค์ œ ์˜ค๋ฅ˜์œจ์˜ 2/3 ๋งŒ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค (์‹œ๋ฎฌ๋ ˆ์ด์…˜์˜ ๊ฒฝ์šฐ ๋ชจ๋‘ 97 % ์ •ํ™•ํ•œ ์˜ˆ์ธก๊ณผ ๋™์ผํ•˜๊ฒŒ ์ˆ˜ํ–‰๋จ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค).

์ด ์‹œ๋ฎฌ๋ ˆ์ด์…˜์€ ๋ถ„๋ช…ํžˆ ๋งค์šฐ ๋‹จ์ˆœํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ํ…Œ์ŠคํŠธ ํ‘œ๋ณธ ํฌ๊ธฐ ๋ถ„์‚ฐ ์™ธ์—๋„ ๋ชจํ˜• ๋ถˆ์•ˆ์ •์„ฑ์œผ๋กœ ์ธํ•œ ๋ถ„์‚ฐ์ด ์žˆ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์—์„œ ๋ถ„์‚ฐ์„ ๊ณผ์†Œ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค
  • ๋ชจ๋ธ ๋ณต์žก์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ํŠœ๋‹ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋ธ์ด ๋ถˆ์•ˆ์ •ํ•˜๊ณ  ๋ถ„์‚ฐ์ด ๋†’์€ ํŒŒ๋ผ๋ฏธํ„ฐ ์„ธํŠธ๋ฅผ ํฌ๊ด„ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์ œ์˜ UCI ์ˆซ์ž์˜ ๊ฒฝ์šฐ ์›๋ž˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ca. 44 ๋ช…์ด ์“ด 11000 ์ž๋ฆฌ ์ˆซ์ž. ์“ด ์‚ฌ๋žŒ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌถ์ด๋ฉด ์–ด๋–ป๊ฒŒ๋ฉ๋‹ˆ๊นŒ? (์ฆ‰, ๊ทธ ์‚ฌ๋žŒ์ด 3์„ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์“ด 8์„ ๋” ์‰ฝ๊ฒŒ ์ธ์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?) ํšจ๊ณผ์ ์ธ ํ‘œ๋ณธ ํฌ๊ธฐ๋Š” 44๋งŒํผ ๋‚ฎ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŠœ๋‹ ๋ชจ๋ธ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ชจ๋ธ๊ฐ„์— ์ƒ๊ด€ ๊ด€๊ณ„๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์‚ฌ์‹ค ์ˆ˜์น˜ ๊ณ„์‚ฐ ๊ด€์ ์—์„œ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ ๋จ). ๊ทธ ์˜ํ–ฅ์„ ์˜ˆ์ธกํ•˜๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค (์‹ค์ œ ๋ถ„๋ฅ˜๊ธฐ ์œ ํ˜•์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค).

๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ฐ˜์ ์œผ๋กœ ๋…๋ฆฝ ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€ ์ˆ˜๊ฐ€ ์ ๊ณ  ๋น„๊ต ๋ชจ๋ธ ์ˆ˜๊ฐ€ ๋งŽ์œผ๋ฉด ํŽธํ–ฅ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Cawley์™€ Talbot ๋…ผ๋ฌธ์€ ๊ฒฝํ—˜์ ์œผ๋กœ ๊ด€์ฐฐ ๋œ ํ–‰๋™์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.


๋‹ต๋ณ€