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 ๊ณ์
'๋ฐ์ดํฐ๋ถ์๊ฐ ๊ณผ์ > R' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DAY26. R ๊ตฐ์ง๋ถ์(2) (0) | 2021.10.21 |
---|---|
DAY25. R ๊ตฐ์ง๋ถ์ (0) | 2021.10.21 |
DAY23. R ๋ก์ง์คํฑํ๊ท๋ถ์ (0) | 2021.10.18 |
DAY22. R ๊ธฐ๊ณํ์ต์ด๋ก , ์ ํํ๊ท๋ถ์ (0) | 2021.10.15 |
DAY21. ์ฃผ์ฑ๋ถ๋ถ์, ์์ธ๋ถ์ (0) | 2021.10.14 |