This commit is contained in:
Jakub Adamski 2021-06-21 19:25:43 +02:00
parent 4d927ae14a
commit 1c575b8ecb
4 changed files with 93 additions and 2 deletions

View File

@ -951,12 +951,103 @@ cor(Girth,Volume)
Zagadnienia:
- klasyfikacja
- wykład 12 na stronie
- wykład 12 na stronie (jest jeszcze więcej wywołań w R)
### R
```r
# liniowa dyskryminacja
library(MASS)
model_lda <- lda(V14 ~ V1 + V2 + V3, data = wina)
# błąd klasyfikacji metodą sprawdzania krzyżowego v=10
library(MASS)
v <- 10
blad_i <- numeric(v)
krok <- floor(nrow(iris) / v)
permutacja <- sample(1:nrow(iris))
temp <- 0
for (i in 1:v) {
if (i != v) {
obs_temp <- permutacja[(temp + 1):(i * krok)]
temp <- i * krok
} else {
obs_temp <- permutacja[(temp + 1):nrow(iris)]
}
model_lda_i <- lda(Species ~ ., data = iris[-obs_temp, ])
pred_i <- stats::predict(model_lda_i, iris[obs_temp, ])$class
blad_i[i] <- sum(pred_i != iris$Species[obs_temp])
}
sum(blad_i) / nrow(iris)
# bootstrap
n_boot <- 100
temp_boot <- numeric(n_boot)
set.seed(1234)
for (i in 1:n_boot) {
numery <- sample(1:nrow(iris), replace = TRUE)
model_lda_i <- lda(Species ~ ., data = iris[numery, ])
temp_boot[i] <- mean(stats::predict(model_lda_i, iris[-numery, ])$class != iris[-numery, ]$Species)
}
mean(temp_boot)
# tablica kontynencji (krzyżowa)
head(stats::predict(model_lda)$posterior)
head(stats::predict(model_lda)$class)
(conf_matrix <- table(stats::predict(model_lda)$class, wina$V14))
# błąd metodą ponownego podstawiania
(1 - sum(diag(conf_matrix)) / nrow(wina))
# klasyfikacja
new_data <- data.frame(V1 = c(13.64, 13.94, 13.08, 12.29),
V2 = c(3.1, 1.73, 3.9, 3.17),
V3 = c(2.56, 2.27, 2.36, 2.21))
stats::predict(model_lda, new_data)
# gotowy bootstrap
library(caret)
ctrl_boot <- trainControl(method = 'boot',
number = 100,
search = 'grid')
ctrl_loo <- trainControl(method = 'LOOCV',
search = 'grid')
ctrl_10CV <- trainControl(method = "repeatedcv",
number = 10,
repeats = 10)
train(V14 ~ V1 + V2 + V3, data = wina, method = 'lda', trControl = ctrl_boot)
train(V14 ~ V1 + V2 + V3, data = wina, method = 'lda', trControl = ctrl_loo)
train(V14 ~ V1 + V2 + V3, data = wina, method = 'lda', trControl = ctrl_10CV)
```
### Zagadnienia
### Zagadnienia
- Klasyfikacja - w zagadnieniach klasyfikacyjnych poszukujemy reguły (klasyfikatora) (zazwyczaj oznaczanego literą d) pozwalającego na przyporządkowanie obiektu ( opisanego przez p wymiarowy wektor obserwowanych cech) do jednej z k klas.
- Tabela krzyżowa (kontyngencji) - tabela przedstawiająca łączny rozkład dwóch lub większej liczby zmiennych. W przykładzie wartości w kolumnie sumują się do 100%, w wierszu już nie muszą.<br/>
![krzyzowa](lab14/krzyzowa.png)
- Estymacja błędu - dzielimy liczbę błędów przez sumę liczby klasyfikacji.
- Szacowanie jakości klasyfikatora:
- Metoda ponownego podstawienia. Korzystając z całej próby (uczącej) uzyskujemy klasyfikator d. Następnie, wykorzystując ten klasyfikator, prognmozujemy etykiety wszystkich elementów próby (obiektów). Miarą jakości jest proporcja poprawnie zaklasyfikowanych obiektów.
- Sprawdzian krzyżowy metoda statystyczna polegająca na podziale próby statystycznej na podzbiory, a następnie przeprowadzaniu wszelkich analiz na niektórych z nich, tzw. zbiór uczący, podczas gdy pozostałe służą do potwierdzenia wiarygodności jej wyników, tzw. zbiór testowy. [link](https://pl.wikipedia.org/wiki/Sprawdzian_krzyżowy)<br/><br/>
- Jak robię lda i dostaję wynik w którym są "coefficients of linear discriminants" to program robi tak że mnoży odpowiednią wartość współczynnika z odpowiednią wartością obserwacji i otrzymany wynik jest używany potem do algorytmu klasyfikacji.
- A posteriori (łac. „z następstwa”) w filozofii termin będący przeciwieństwem wyrażenia a priori, oznaczający tyle co: "po fakcie".
- Wzór Bayesa<br/>
![bayes](lab14/bayes.png)
- Bayesowska reguła klasyfikacyjna<br/>
![regula](lab14/regula.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB