classificação - nequimed/iqsc/usp

25
1 Classificação Nível I: Simples classificação em categoria pré-definidas Nível II: Nível I + deteção de “outliers” Nível III: Nível II + predição de uma propriedade externa Nível IV: Nível II + predição de mais de uma propriedade

Upload: others

Post on 09-Apr-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

1

Classificação

Nível I: Simples classificação em categoria pré-definidas

Nível II: Nível I + deteção de “outliers”

Nível III: Nível II + predição de uma propriedade externa

Nível IV: Nível II + predição de mais de uma propriedade

2

Métodos

Similaridade/distância

Máquinas lineares de aprendizado

Método do vizinho mais próximo (KNN)

Similaridade química por analogia (SIMCA)

Métodos supervisionados.

Instrua-os com PCA

3

Desenvolvimento do modelo com base no banco de dados

Série de treinamento

Amostra representativa para a construção do modelo

Série de avaliação

Novas amostras usadas para testar o modelo (classes já definidas)

Série teste

Amostra verdadeiramente desconhecida

4

Pré-processamento dos dados

Matriz original de dados

EscalonadoPesos iguais para todas as variáveis

PCAPode ser usada para reduzir ruídos e

variáveis não significativas

5

Criação da série de avaliação

Sub-série da série de treinamento Porções escolhidas aleatoriamenteMembros escolhidos aleatoriamente

Validação “leave-one-out”; “leave-two-out”, “leave-many-out” (exclua um, dois ou vários membros/porções)Omita uma amostra da sérieConstrua o modelo Teste-o para a amostra omitidaRepita até que todas tenham sido testadas

6

Classificação simples por similaridade (Nível II)

Inalterada

Adulterada

95% de limite

de confidência

Vetores indicam

quais pesos devem

ser observados

7

Distância Euclidiana

m

j

ljkjkl xxD1

2)(

X1

X2

p1

p2

8

Máquinas de aprendizado linear

9

Vetor com melhor partição

10

Aumento do número de classesRedução do número de vetores úteis

11

Função não-linear:melhor procedimento

12

KNNmétodo de classificação baseado

em similaridade

Atribuição de categorias para amostras desconhecidas com base em proximidade multivariada

Funciona bem para classificação do tipo discreta

K, número de vizinhos mais próximos sendo comparados

13

Distância entre classes

Conexão simplesMembro mais próximo da classe

Conexão completaMembro mais distante da classe

Conexão centróideCentro de agrupamento da classe

14

Conexão simples

15

Conexão centróide

16

Classificação ideal

X2

X1

X1 e X2 não são

intercorrelacionados

Cov(X1,X2) = 0 para as

duas classes

17

Mais do que uma classe?

18

SIMCA(Soft Independent Modeling of Class Analogy)

Classificação apropriada para:

Deteção de “outliers”

Estimativa da confidência da classificação

Determinação da associação potencial em mais do que uma classe

Método supervisionado: PCA

19

Hipervolumes

20

21

SIMCA tutorial no R

22

##SIMCA

## Build the robust SIMCA model. Use RSimca for a robust version

#Package 'rrcovHD'

data(iris)

dfRS = data.frame(iris) ##It is the DB with a categorical column

dim(dfRS) # Number observations

head(dfRS)

tail(dfRS)

library("rrcovHD")

rs <- RSimca(Species~., data=dfRS)

rs

summary(rs)

23

#Print the confusion matrix

cc <- RSimca(Species~., data=dfRS, k=c(1,2,3)) # k = all Species 1,2,3,...

cc

pr <- predict(cc, method=2)

tt <- rrcov::mtxconfusion(cc@grp, pr@classification, printit=TRUE)

plot(tt)

print(tt)

24

## SIMCA missclassification

predict(rs)

## generate a sample from the data set -

## this will be the "new" data to be predicted

smpl <- sample(1:nrow(dfRS), 105) #state how many rows to analyse, 70% of

original data

test <- dfRS[smpl, -5] # extract the test sample. Remove the last (grouping)

variable

grp <- dfRS[smpl, 5] # remember the grouping variable also

print(test)

25

## predict new data to get the miss whose value ca. 1 is great!

pr <- predict(rs, newdata=test)

pr@classification

ctab <- rrcov::mtxconfusion(grp, pr@classification)

ctab

acctab <- t(apply(ctab, 1, function(x) x/sum(x)))

dimnames(acctab) <- dimnames(ctab)

acctab

miss <- 1 - sum(diag(ctab))/sum(ctab)

miss