๐‘๐‘œ๐‘ก๐‘’๐‘๐‘œ๐‘œ๐‘˜

์˜์‚ฌ๊ฒฐ์ •๋‚˜๋ฌด, ๋žœ๋ค ํฌ๋ ˆ์ŠคํŠธ ๋ณธ๋ฌธ

๋จธ์‹ ๋Ÿฌ๋‹ ๐Ÿฆพ

์˜์‚ฌ๊ฒฐ์ •๋‚˜๋ฌด, ๋žœ๋ค ํฌ๋ ˆ์ŠคํŠธ

seoa__ 2025. 1. 21. 21:20

 

 

์˜์‚ฌ๊ฒฐ์ •๋‚˜๋ฌด (Decision Tree, DT)

: ์˜์‚ฌ๊ฒฐ์ •๊ทœ์น™์„ ๋‚˜๋ฌด ๊ตฌ์กฐ๋กœ ๋‚˜ํƒ€๋‚ด์–ด ์ „์ฒด ์ž๋ฃŒ๋ฅผ ๋ช‡ ๊ฐœ์˜ ์†Œ์ง‘๋‹จ์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜๊ฑฐ๋‚˜ ์˜ˆ์ธก์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ถ„์„ ๋ฐฉ๋ฒ•

  • ์„ฑ๋ณ„์˜ ๊ธฐ์ค€์œผ๋กœ ์˜์‚ฌ๊ฒฐ์ •๋‚˜๋ฌด ์‹œ๊ฐํ™”
  • ํƒ€์ด๋‚˜๋‹‰์˜ ์˜ˆ์‹œ
  • ์„ฑ๋ณ„์˜ ๊ธฐ์ค€์œผ๋กœ ์˜์‚ฌ๊ฒฐ์ •๋‚˜๋ฌด ์‹œ๊ฐํ™”

  • ๋ช…์นญ
    • ๋ฃจํŠธ ๋…ธ๋“œ(Root Node): ์˜์‚ฌ๊ฒฐ์ •๋‚˜๋ฌด์˜ ์‹œ์ž‘์ . ์ตœ์ดˆ์˜ ๋ถ„ํ• ์กฐ๊ฑด
    • ๋ฆฌํ”„ ๋…ธ๋“œ(Leaf Node): ๋ฃจํŠธ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒ๋œ ์ค‘๊ฐ„ ํ˜น์€ ์ตœ์ข… ๋…ธ๋“œ
    • ๋ถ„๋ฅ˜๊ธฐ์ค€(criteria): sex๋Š” ์—ฌ์„ฑ์ธ ๊ฒฝ์šฐ 0, ๋‚จ์„ฑ์ธ ๊ฒฝ์šฐ 1๋กœ ์ธ์ฝ”๋”ฉ. ์—ฌ์„ฑ์ธ ๊ฒฝ์šฐ ์ขŒ์ธก ๋…ธ๋“œ๋กœ, ๋‚จ์„ฑ์ธ ๊ฒฝ์šฐ ์šฐ์ธก ๋…ธ๋“œ๋กœ ๋ถ„๋ฅ˜
    • ๋ถˆ์ˆœ๋„(impurity)
    • ์ƒ˜ํ”Œ(samples): ํ•ด๋‹น ๋…ธ๋“œ์˜ ์ƒ˜ํ”Œ ๊ฐœ์ˆ˜(891๊ฐœ์˜ ๊ด€์ธก์น˜)
    • ๊ฐ’(value): Y๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๋ฐฐ์—ด. 549๋ช…์ด ์ฃฝ์—ˆ๊ณ (Y = 0), 342๋ช…์ด ์‚ด์•˜์Œ(Y = 1)
    • ํด๋ž˜์Šค(class)
      • ๊ฐ€์žฅ ๋งŽ์€ ์ƒ˜ํ”Œ์„ ์ฐจ์ง€ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ํ‘œํ˜„
      • ์œ„์—์„œ๋Š” ์ฃผํ™ฉ์ƒ‰ (Y = 0 ๋‹ค์ˆ˜), ํŒŒ๋ž€์ƒ‰(Y=1 ๋‹ค์ˆ˜)๋ฅผ ํ‘œํ˜„

์˜์‚ฌ๊ฒฐ์ •๋‚˜๋ฌด ์ •๋ฆฌ

  • ์žฅ์ 
    • ์‰ฝ๊ณ  ํ•ด์„ํ•˜๊ธฐ ์šฉ์ด
    • ๋‹ค์ค‘๋ถ„๋ฅ˜์™€ ํšŒ๊ท€์— ๋ชจ๋‘ ์ ์šฉ์ด ๊ฐ€๋Šฅ
    • ์ด์ƒ์น˜์— ๊ฒฌ๊ณ ํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ ์Šค์ผ€์ผ๋ง ๋ถˆํ•„์š”(๋ฐ์ดํ„ฐ์˜ ์ƒ๋Œ€์ ์ธ ์ˆœ์„œ๋ฅผ ๊ณ ๋ คํ•ด์„œ)
  • ๋‹จ์ 
    • ๋‚˜๋ฌด๊ฐ€ ์„ฑ์žฅ์„ ๋„ˆ๋ฌด ๋งŽ์ดํ•˜๋ฉด ๊ณผ๋Œ€ ์ ํ•ฉ์˜ ์˜ค๋ฅ˜์— ๋น ์งˆ ์ˆ˜ ์žˆ๋‹ค
    • ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์— ๋ฏผ๊ฐํ•˜๊ฒŒ ๋ฐ˜์‘ํ•˜์—ฌ ์ž‘์€ ๋ณ€ํ™”๊ฐ€ ๋…ธ์ด์ฆˆ์—๋„ ๋‚˜๋ฌด์˜ ๊ตฌ์กฐ๊ฐ€ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง(๋ถˆ์•ˆ์ •์„ฑ)
  • Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    • sklearn.tree.DecisionTreeClassifier
    • sklearn.tree.DecisionTreeRegressor

๋žœ๋ค ํฌ๋ ˆ์ŠคํŠธ ์ด๋ก 

: ์˜์‚ฌ๊ฒฐ์ • ๋‚˜๋ฌด๋Š” ๊ณผ์ ํ•ฉ๊ณผ ๋ถˆ์•ˆ์ •์„ฑ ๋Œ€ํ•œ ๋ฌธ์ œ๊ฐ€ ๋Œ€๋‘ ๋˜์—ˆ์–ด์š”. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์•„์ด๋””์–ด๋Š” ๋ฐ”๋กœ ๋‚˜๋ฌด(tree)๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค์–ด ์ˆฒ(Forest)๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—์š”

 

๋ฐฐ๊น…(Bagging)์˜ ์›๋ฆฌ

  • ์–ธ์ œ๋‚˜ ๋จธ์‹ ๋Ÿฌ๋‹์€ ๋ฐ์ดํ„ฐ์˜ ๋ถ€์กฑ์ด ๋ฌธ์ œ
  • ์ด๋ฅผ ํ•ด๊ฒฐ ํ•˜๊ธฐ ์œ„ํ•œ Bootstrapping + Aggregating ๋ฐฉ๋ฒ•๋ก 
    • Bootstrapping: ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์› ์ถ”์ถœํ•ด์„œ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ง‘๋‹จ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ
    • Aggregating: ๋ฐ์ดํ„ฐ์˜ ์˜ˆ์ธก,๋ถ„๋ฅ˜ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์น˜๋Š” ๊ฒƒ
    • Ensemble(์•™์ƒ๋ธ”): ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์น˜๋Š” ๊ฒƒ

 

 

๋žœ๋ค ํฌ๋ ˆ์ŠคํŠธ ์ •๋ฆฌ

  • ์žฅ์ 
    • Bagging ๊ณผ์ •์„ ํ†ตํ•ด ๊ณผ์ ํ•ฉ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ด์ƒ์น˜์— ๊ฒฌ๊ณ ํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ ์Šค์ผ€์ผ๋ง์ด ๋ถˆํ•„์š”
    • ๋ณ€์ˆ˜ ์ค‘์š”๋„๋ฅผ ์ถ”์ถœํ•˜์—ฌ ๋ชจ๋ธ ํ•ด์„์— ์ค‘์š”ํ•œ ํŠน์ง•์„ ํŒŒ์•… ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹จ์ 
    • ์ปดํ“จํ„ฐ ๋ฆฌ์†Œ์Šค ๋น„์šฉ์ด ํฌ๋‹ค.
    • ์•™์ƒ๋ธ” ์ ์šฉ์œผ๋กœ ํ•ด์„์ด ์–ด๋ ต๋‹ค.
  • Python ํŒจํ‚ค์ง€
    • sklearn.ensemble.RandomForestClassifer
    • sklearn.ensemble.RandomForestRegressor

'๋จธ์‹ ๋Ÿฌ๋‹ ๐Ÿฆพ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋น„์ง€๋„ ํ•™์Šต  (0) 2025.01.23
์ตœ๊ทผ์ ‘ ์ด์›ƒ  (1) 2025.01.23
๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€  (0) 2025.01.20
์„ ํ˜•ํšŒ๊ท€  (0) 2025.01.17
๋จธ์‹ ๋Ÿฌ๋‹ ๊ธฐ์ดˆ  (2) 2025.01.16