01. ๋ถ„๋ฅ˜ ๋ถ„์„ (classification analysis)

๋‹ค์ˆ˜์˜ ์†์„ฑ(attribute) ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ ๊ฐ–๋Š” ๊ฐ์ฒด๋ฅผ ์‚ฌ์ „์— ์ •ํ•ด์ง„ ๊ทธ๋ฃน ๋˜๋Š” ๋ฒ”์ฃผ(class, category) ์ค‘์˜ ํ•˜๋‚˜๋กœ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

์˜์‚ฌ๊ฒฐ์ •๋‚˜๋ฌด(Decision Tree) ๋ถ„๋ฅ˜ ๋ชจ๋ธ๋ง์— ์˜ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ๊ทœ์น™(rule)๋ฅผ ๊ฐ€์ง€์™€ ์ค„๊ธฐ์˜ ๋‚˜๋ฌด ๋ชจ์–‘์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฐฉ๋ฒ•, ์˜์‚ฌ๊ฒฐ์ •์ด ์ด๋ค„์ง€๋Š” ์‹œ์ ๊ณผ ์„ฑ๊ณผ๋ฅผ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋‹ค

 

ํ™œ์šฉ๋ถ„์•ผ ์•…์„ฑ์ข…์–‘ ์˜ˆ์ธก๋ชจ๋ธ, ๊ณ ๊ฐ์ดํƒˆ ์˜ˆ์ธก๋ชจ๋ธ

ex. ๊ณ ๊ฐ ๋ถ„๋ฅ˜ : ๊ณ ๊ฐ ๋ถ„๋ฅ˜ ๋ณ€์ˆ˜ -> ๊ทœ์น™, ํŠน์„ฑ -> ์ž ์žฌ ๊ณ ๊ฐ ์˜ˆ์ธก

 

 

์˜์‚ฌ๊ฒฐ์ •๋‚˜๋ฌด(Decision Tree) ์•Œ๊ณ ๋ฆฌ์ฆ˜

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘์š”๋ณ€์ˆ˜ ํ‰๊ฐ€์ง€์ˆ˜ ๋น„๊ณ 
CHAID ์นด์ด์ œ๊ณฑ(๋ฒ”์ฃผํ˜•) ๋ฒ”์ฃผํ˜• ์ข…์†๋ณ€์ˆ˜ ํŒจํ‚ค์ง€ : CHAID
CART(Classification And Regression Trees) GINI Index ๋ฒ”์ฃผํ˜•๊ณผ ์ˆซ์žํ˜• ์ข…์†๋ณ€์ˆ˜ ํŒจํ‚ค์ง€ : rpart
C5.0(C4.5) Information Gain ๋ฒ”์ฃผํ˜•๊ณผ ์ˆซ์žํ˜• ์ข…์†๋ณ€์ˆ˜ ํŒจํ‚ค์ง€ : C50

 

 

 

 

 

 

02. Decision Tree ๋ชจ๋ธ ํŠน์ง•

์ข…์†๋ณ€์ˆ˜(y๋ณ€์ˆ˜) ์กด์žฌ

* ๋ฒ”์ฃผํ˜•(๋ช…๋ชฉ ์ฒ™๋„) ๋ณ€์ˆ˜ ์‚ฌ์šฉ : ๋ถ„๋ฅ˜ ํŠธ๋ฆฌ

* ์ˆซ์žํ˜•(๋น„์œจ ์ฒ™๋„) ๋ณ€์ˆ˜ ์‚ฌ์šฉ : ํšŒ๊ท€ ํŠธ๋ฆฌ

๊ทœ์น™(Rule)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜์‚ฌ๊ฒฐ์ •ํŠธ๋ฆฌ ์ƒ์„ฑ ๏ƒ˜ ๋น„๋ชจ์ˆ˜ ๊ฒ€์ • : ์„ ํ˜•์„ฑ, ์ •๊ทœ์„ฑ, ๋“ฑ๋ถ„์‚ฐ์„ฑ ๊ฐ€์ • ํ•„์š” ์—†์Œ

์œ ์˜์ˆ˜์ค€ ํŒ๋‹จ ๊ธฐ์ค€ ์—†์Œ(์ถ”๋ก  ๊ธฐ๋Šฅ ์—†์Œ)

 

์˜์‚ฌ๊ฒฐ์ •ํŠธ๋ฆฌ ์šฉ์–ด

๊ณ„์ธต ๊ตฌ์กฐ, ๋…ธ๋“œ(node)์™€ ์—์ง€(edge) ์ง‘ํ•ฉ

๋…ธ๋“œ : ํƒ€์›, ์—์ง€ : ์„ (line)

 

๋…ธ๋“œ ์œ ํ˜•

๋‚ด๋ถ€(internal) ๋…ธ๋“œ : ์ž์‹๋…ธ๋“œ ์žˆ์Œ

์ข…๋‹จ(leaf) ๋…ธ๋“œ : ์ž์‹๋…ธ๋“œ ์—†์Œ

๋ชจ๋“  ๋…ธ๋“œ์—์„œ ๋“ค์–ด์˜ค๋Š” ์—์ง€๋Š” ํ•˜๋‚˜

๋…ธ๋“œ์—์„œ ๋‚˜๊ฐ€๋Š” ์—์ง€๋Š” 2๊ฐœ ์ดํ•˜

 

 

Decision Tree ๋ชจ๋ธ ํŠน์ง•

๋ชจ๋ธ์˜ ์‹œ๊ฐํ™”๊ฐ€ ์‰ฝ๊ณ , ๊ฐ€๋…์„ฑ ๋†’์Œ(ํ•ด์„ ์‰ฌ์›€)

ํŠน์ง•(๋ณ€์ˆ˜)์˜ ์Šค์ผ€์ผ(์ •๊ทœํ™”๋‚˜ ํ‘œ์ค€ํ™”)์กฐ์ •์ด ํ•„์š” ์—†์Œ

๋…๋ฆฝ๋ณ€์ˆ˜์— ์ด์ง„๊ณผ ์—ฐ์† ๋ณ€์ˆ˜๊ฐ€ ํ˜ผํ•ฉ๋˜์–ด ์žˆ์–ด๋„ ์ž˜ ๋™์ž‘

๋งŽ์€ ํŠน์ง•(์ž…๋ ฅ๋ณ€์ˆ˜)์„ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ ์…‹์€ ๋ถ€์ ํ•ฉ

๋‹จ์ผ๊ฒฐ์ • Tree ํ•™์Šต์œผ๋กœ ๊ณผ์ ํ•ฉ ๋ฐœ์ƒ ์šฐ๋ ค(์ผ๋ฐ˜ํ™” ์„ฑ๋Šฅ ์ €ํ•˜)

๊ณผ์ ํ•ฉ ํ•ด๊ฒฐ๋ฐฉ์•ˆ : ๊ฐ€์ง€์น˜๊ธฐ(CP : Cut Prune)

 

 

 

 

 

3. ํŽธํ–ฅ๊ณผ ๋ถ„์‚ฐ

์ง€๋„ ํ•™์Šต์—์„œ error๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฃผ์š” ํŒŒ๋ผ๋ฏธํ„ฐ

 

ํŽธํ–ฅ : ์˜ˆ์ธก๊ฐ’๊ณผ ์ •๋‹ต๊ณผ์˜ ์ฐจ์ด(์˜ค์ฐจ)

๋ถ„์‚ฐ : ์˜ˆ์ธก๊ฐ’๋“ค๋ผ๋ฆฌ์˜ ๋ถ„ํฌ ํ˜•ํƒœ(ํฉ์–ด์ง„ ์ •๋„)

Trade-off : ๋ถ„์‚ฐ(↑) vs ํŽธํ–ฅ(↓), ๋ถ„์‚ฐ(↓) vs ํŽธํ–ฅ(↑)

 

์ตœ์ ์˜ ๋ชจ๋ธ : ํŽธํ–ฅ๊ณผ ๋ถ„์‚ฐ์ด ๋ชจ๋‘ ์ž‘์€ ๊ฒฝ์šฐ

๋ณต์žกํ•œ ๋ชจ๋ธ : ํŽธํ–ฅ์€ ์ž‘๊ณ , ๋ถ„์‚ฐ์€ ํฌ๋‹ค.(๊ณผ์ ํ•ฉ ๊ฐ€๋Šฅ์„ฑ ๋†’์Œ)

๊ณผ์ ํ•ฉ ํ•ด๊ฒฐ๋ฐฉ์•ˆ : ๋ถ„์‚ฐ์€ ๋‚ฎ๊ฒŒ, ํŽธํ–ฅ์€ ๋†’์€ ๋ฐฉํ–ฅ์œผ๋กœ ์กฐ์ •

* ๋ถ„์‚ฐ์ด ํฌ๋‹ค : ์˜ˆ์ธก ๊ฐ’์ด ์ผ์ •ํ•œ ํŒจํ„ด์ด ์—†๋‹ค๋Š” ๋œป

 

 

๋ชจ๋ธ์˜ ๋ณต์žก๋„(Model Complexity)

 

 

 

 

 

4. ๋ถ„๋ฅ˜๋ถ„์„ ์‹ค์Šต(์ดํ•ญ๋ถ„๋ฅ˜)

5. ๊ต์ฐจ๊ฒ€์ •

install.packages('cvTools')
library('cvTools')


[๋‹จ๊ณ„1] k๊ฒน ๊ต์ฐจ๊ฒ€์ •์„ ์œ„ํ•œ ์ƒ˜ํ”Œ๋ง

cross = cvFolds(n=nrow(iris), K=5, R=1)
cross
#Fold(dataset๊ตฌ๋ถ„)   Index(ํ–‰๋ฒˆํ˜ธ)
# dataset1 : 120, 125, ... 79
# dataset2 : 146, 12, ... 137
str(cross) #List of 5
#$subsets : ํ–‰๋ฒˆํ˜ธ (2์ฐจ์› [nrow,R])
#$which : dataset๊ตฌ๋ถ„์ž ์—ญํ•  (1์ฐจ์›)

dataset1 = cross$subsets[cross$which==1, 1]
length(dataset1) #30
dataset1

dataset5 = cross$subsets[cross$which==5, 1]
length(dataset5) #30
dataset5


[๋‹จ๊ณ„2] k๊ฒน ๊ต์ฐจ๊ฒ€์ •

library(rpart)

r = 1
n = 1:5
ACC = numeric() #vector๋ณ€์ˆ˜
for(k in n){ #5ํšŒ๋ฐ˜๋ณต
  #1. ์ƒ˜ํ”Œ๋ง
  idx = cross$subsets[cross$which==k, r] #ํ–‰๋ฒˆํ˜ธ
  test = iris[idx, ] #๊ฒ€์ •์…‹(1set)
  train = iris[-idx, ] #ํ›ˆ๋ จ์…‹(4set)
  #2.๋ชจ๋ธ ์ƒ์„ฑ
  model = rpart(Species ~ ., data = train) #๋ชจ๋ธ์ƒ์„ฑ
  #3. ์˜ˆ์ธก์น˜
  y_pred = predict(model, test, type="class") #์˜ˆ์ธก์น˜
  #4. ํ˜ผ๋™ํ–‰๋ ฌ
  t = table(test$Species, y_pred)
  #5. ๋ถ„๋ฅ˜ ์ •ํ™•๋„
  ACC[k] = (t[1,1]+t[2,2]+t[3,3]) / sum(t)
}


[๋‹จ๊ณ„3] ๊ต์ฐจ๊ฒ€์ • ํ‰๊ฐ€(์‚ฐ์ˆ ํ‰๊ท )

ACC
cat('๋ถ„๋ฅ˜์ •ํ™•๋„ ์‚ฐ์ˆ ํ‰๊ท  =', mean(ACC)) #๋ถ„๋ฅ˜์ •ํ™•๋„ ์‚ฐ์ˆ ํ‰๊ท  = 0.9333333


#ํšŒ๊ท€ํŠธ๋ฆฌ ํ‰๊ฐ€ (R2 Score, MSE(Y๋ณ€์ˆ˜ ์Šค์ผ€์ผ๋ง))

 

 

 

 

 

6. Entropy

ํ™•๋ฅ  ๋ณ€์ˆ˜ ๊ฐ„์˜ ๋ถˆํ™•์‹ค์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆ˜์น˜

Tree model์—์„œ ์ค‘์š” ๋ณ€์ˆ˜(x) ์„ ์ • ์‹œ ์‚ฌ์šฉ

๋ฌด์งˆ์„œ์˜ ์–‘์˜ ์ฒ™๋„, ์ž‘์„ ์ˆ˜๋ก ๋ถˆํ™•์‹ค์„ฑ์ด ๋‚ฎ๋‹ค.

 

Entropy = -∑ ๐‘๐‘ * log2(๐‘๐‘) (p : ํ™•๋ฅ )

์ •๋ณด์ด๋“ = root ๋…ธ๋“œ Entropy – ๊ฐ ๋ณ€์ˆ˜ Entropy

์ •๋ณด์ด๋“์ด ํด ์ˆ˜๋ก ์ค‘์š”๋ณ€์ˆ˜๋กœ ๋ณธ๋‹ค.

CART(Classification And Regression Tree)์—์„œ๋Š” GINI index ์ด์šฉ

GINI = ∑ ๐‘ (1 − ๐‘) #์ง€๋‹ˆ ๋ถˆ์ˆœ๋„(Gini impurity)

Gini Index = 1 – GINI ๊ณ„์ˆ˜

+ Recent posts