๐Ÿฆญ AI&Big Data/ML

๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€

๊ณ„๋ž€์†Œ๋…„ 2025. 3. 5. 15:42

1.  ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€

 

๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€๋Š” ์ด๋ฆ„์—์„œ "ํšŒ๊ท€"๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ๋ถ„๋ฅ˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

์ฃผ๋กœ ์ด์ง„ ๋ถ„๋ฅ˜์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ์˜ˆ์ธก ๊ฐ’์„ 0๊ณผ 1 ์‚ฌ์ด์˜ ํ™•๋ฅ ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณต

์„ ํ˜• ๋ฐฉ์ •์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ์ด ๊ฐ’์„ ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด 0๊ณผ 1 ์‚ฌ์ด์˜ ํ™•๋ฅ  ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜

-> ๋ถ„๋ฅ˜ ๋ฌธ์ œ์—์„œ ๊ฐ ํด๋ž˜์Šค์— ์†ํ•  ํ™•๋ฅ ์„ ๊ณ„์‚ฐ

 

์ž‘๋™ ์›๋ฆฌ

 

์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์„ ํ˜• ๋ฐฉ์ •์‹์„ ํ†ตํ•ด ์˜ˆ์ธก๊ฐ’์„ ๊ณ„์‚ฐ

๊ทธ๋Ÿฌ๋‚˜ ์ด ์˜ˆ์ธก๊ฐ’์€ ํ™•๋ฅ ์ด ์•„๋‹ˆ๋ฏ€๋กœ, ์ด๋ฅผ ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜์— ํ†ต๊ณผ์‹œ์ผœ 0๊ณผ 1 ์‚ฌ์ด์˜ ํ™•๋ฅ ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

  • ์ด์ง„ ๋ถ„๋ฅ˜์—์„œ ํ™•๋ฅ ๊ฐ’์ด 0.5๋ณด๋‹ค ํฌ๋ฉด ์–‘์„ฑ ํด๋ž˜์Šค, ์ž‘์œผ๋ฉด ์Œ์„ฑ ํด๋ž˜์Šค๋กœ ์˜ˆ์ธก
from sklearn.linear_model import LogisticRegression

# ๋ชจ๋ธ ์ƒ์„ฑ
lr = LogisticRegression()

# ๋ชจ๋ธ ํ•™์Šต
lr.fit(X_train, y_train)

# ์˜ˆ์ธก
y_pred = lr.predict(X_test)

# ํ™•๋ฅ  ์˜ˆ์ธก
y_prob = lr.predict_proba(X_test)  # ๊ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ํ™•๋ฅ ์„ ์ถœ๋ ฅ
  • predict_proba()๋Š” ๊ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ํ™•๋ฅ ์„ ๋ฐ˜ํ™˜
  • decision_function()์€ ๊ฐ ์ƒ˜ํ”Œ์— ๋Œ€ํ•ด ์˜ˆ์ธก๊ฐ’ z๋ฅผ ๊ณ„์‚ฐ. ์ด ๊ฐ’์„ ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜์— ํ†ต๊ณผ์‹œ์ผœ์„œ ํ™•๋ฅ ์„ ๊ณ„์‚ฐ

 

๋‹ค์ค‘ ๋ถ„๋ฅ˜์—์„œ์˜ ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€

 

๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€๋Š” ์ด์ง„ ๋ถ„๋ฅ˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค์ค‘ ํด๋ž˜์Šค ๋ถ„๋ฅ˜ ๋ฌธ์ œ์—๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅ

๋‹ค์ค‘ ํด๋ž˜์Šค ๋ฌธ์ œ์—์„œ๋Š” ๊ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์„ ํ˜• ๋ฐฉ์ •์‹์„ ๊ณ„์‚ฐํ•˜๊ณ , ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ํ™•๋ฅ ์„ ๊ณ„์‚ฐ

  • ํ™•๋ฅ ์˜ ์ „์ฒดํ•ฉ = 1

์‚ฌ์ดํ‚ท๋Ÿฐ์—์„œ ๋‹ค์ค‘ ๋ถ„๋ฅ˜ ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด multi_class='multinomial' ์˜ต์…˜์„ ์„ค์ •ํ•˜๊ณ , ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์„ solver='lbfgs'๋กœ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค.

from sklearn.linear_model import LogisticRegression

# ๋‹ค์ค‘ ๋ถ„๋ฅ˜ ๋ฌธ์ œ ์ฒ˜๋ฆฌ
lr = LogisticRegression(multi_class='multinomial', solver='lbfgs', max_iter=200)

# ๋ชจ๋ธ ํ•™์Šต
lr.fit(X_train, y_train)

# ์˜ˆ์ธก ํ™•๋ฅ  ์ถœ๋ ฅ
y_prob = lr.predict_proba(X_test)  # ๊ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ํ™•๋ฅ ์„ ์ถœ๋ ฅ

 

K-์ตœ๊ทผ์ ‘ ์ด์›ƒ(KNN) ๋ถ„๋ฅ˜๊ธฐ

 

๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๊ฐ€ ์†ํ•  ํด๋ž˜์Šค๋ฅผ ๊ฒฐ์ •ํ•  ๋•Œ, ์ฃผ์–ด์ง„ K๊ฐœ์˜ ์ด์›ƒ์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด K๊ฐœ์˜ ์ƒ˜ํ”Œ์„ ์ฐพ์•„ ๊ทธ ์ค‘์—์„œ ๊ฐ€์žฅ ๋นˆ๋„๊ฐ€ ๋†’์€ ํด๋ž˜์Šค(์ด์›ƒ ํด๋ž˜์Šค ๋น„์œจ์— ๋”ฐ๋ผ ํ™•๋ฅ ์„ ๊ณ„์‚ฐ)๋ฅผ ์˜ˆ์ธก

KNN์€ ๊ณ„์‚ฐ์ด ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ด์ง€๋งŒ, ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ๊ณ„์‚ฐ ๋น„์šฉ์ด ์ปค์ง€๋ฉฐ ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

๋น„๊ต

  • KNN
    • ์ฃผ๋ณ€ ์ด์›ƒ์„ ๊ธฐ์ค€์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์˜ˆ์ธก
    • ์ด์›ƒ ํด๋ž˜์Šค์˜ ๋น„์œจ์„ ํ™•๋ฅ ๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์„์ˆ˜๋ก ๊ณ„์‚ฐ ๋น„์šฉ์ด ์ปค์ง€๊ณ  ์˜ˆ์ธก ์†๋„๊ฐ€ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€
    • ์„ ํ˜• ๋ฐฉ์ •์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ™•๋ฅ ์„ ๊ณ„์‚ฐํ•˜๋ฉฐ, ํ•™์Šต ํ›„ ์˜ˆ์ธก์ด ๋น ๋ฅด๊ณ , ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹์—์„œ ํšจ์œจ์ 