* Klasifikace podle maxima aposteriorní pravděpodobnosti * Převod apriorní znalosti a pozorování na aposteriorní pravděpodobnost pomocí bayesova vzorce * Proč je klasifikátor naivní
Příklad: Hráči chodí hrát tenis, ale hrají pouze za příznivého počasí. Příklady jejich rozhodnutí jsou v následující tabulce. Atributy jsou “outlook”, “temperature”, “humidity”, “windy” a rozhodnutí je ve sloupečku “play”.
Vyzkoušejte rozdování pomocí jednoho příznaku ()
| outlook | temperature | humidity | windy | play |
|---|---|---|---|---|
| sunny | hot | high | false | no |
| sunny | hot | high | true | no |
| overcast | hot | high | false | yes |
| rainy | mild | high | false | yes |
| rainy | cool | normal | false | yes |
| rainy | cool | normal | true | no |
| overcast | cool | normal | true | yes |
| sunny | mild | high | false | no |
| sunny | cool | normal | false | yes |
| rainy | mild | normal | false | yes |
| sunny | mild | normal | true | yes |
| overcast | mild | high | true | yes |
| overcast | hot | normal | false | yes |
| rainy | mild | high | true | no |
# naivni Bayes library(e1071) # je treba zkonvertovat "logical" priznak na "numeric" d$windy <- as.numeric(d$windy) mod <- naiveBayes(play~., data) # vyzkousejme klasifikator predict(mod,data) table(predict(mod,data),data$play) # a klasifikujme nove pozorovani: newdata <- data.frame(outlook='sunny',temperature='hot',humidity='normal',windy=0) predict(mod,newdata)
* lineární rozhodovací nadrovina * pod lineární klasifikaci spadá mnoho metod - perceptron, logistická regrese, SVM * učení klasfikátoru - optimalizační úloha (např. minimalizace počtu špatně klasifikovaných pozorování)
* lineární klasifikátor, který predikuje log odds * generalizovaný lineární model * vyzkoušejte v R
data("iris")
iris <- iris[iris$Species %in% c('setosa','versicolor'),]
iris$Species <- factor(as.character(iris$Species))
iris$Species_setosa <- iris$Species == 'setosa'
# loistická regrese
logreg <- glm(Species_setosa ~ Sepal.Length + Sepal.Width,data=iris,family=binomial(link='logit'))
summary(logreg)
logregcoef <- coef(logreg)
plot(iris$Sepal.Length,iris$Sepal.Width,col=iris$Species_setosa + 2)
abline(a=-logregcoef[1]/logregcoef[3],b=-logregcoef[2]/logregcoef[3])
table(predict(logreg) > 0,iris$Species_setosa)