{{indexmenu_n>7}} Obsah této stránky bude přístupný od 16. 11. 2017. ====== Cvičení 7 - Naivní bayesovská klasifikace a lineární klasifikátor ====== Test: https://goo.gl/forms/4ofwjWzWByjk3MIo1 ===== Naivní baysevskový klasifikátor ===== * 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í klasifikátor ===== * 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í) === Logistická regrese === * 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)