* 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)