Buscar

Lista teorica

Prévia do material em texto

Lista teórica - Aprendizado de máquina
Rebeca Barros
Questão 3
Letra B
Suponha o caso binário em que Y assume apenas duas classes possívies {c,d}.
LDA
No caso do LDA a equação do discriminante é um polinômio de grau um e a sua fronteira de decisão é o
ponto de encontro entre as duas retas (δc = δd) como mostrado nas contas da letra A e pelo gráfico abaixo.
Então, a sua fronteira de decisão é apenas um ponto mas seu discrimante é linear em x.
delta.LDA = function(x, mu.c, P.c, sigma2) {
(x*mu.c)/sigma2 - (mu.cˆ2)/(2*sigma2) + log(P.c)
}
fd.LDA = function(mu.c, mu.d, P.c, sigma2) {
P.d = 1-P.c
(mu.c + mu.d)/2 - (sigma2/(mu.c - mu.d))*log(P.c/P.d)}
x.seq = seq(-1,3,0.001)
delta.c = delta.LDA(x.seq, 1, 0.4, 0.8)
delta.d = delta.LDA(x.seq, 3, 0.6, 0.8)
fd.x = fd.LDA(1, 3, 0.4, 0.8)
fd.y = delta.LDA(fd.x, 1, 0.4, 0.8)
ggplot() +
geom_line(mapping = aes(x = x.seq, y = delta.c, colour = "Delta.C")) +
geom_line(mapping = aes(x = x.seq, y = delta.d, colour = "Delta.D")) +
geom_point(mapping = aes(x = fd.x, y = fd.y, colour = "Fronteira de decisão")) +
theme_minimal() +
theme(legend.position = "bottom") +
scale_color_manual(values = c("red", "blue", "black")) +
labs(x = "x", y = "y", colour = "")
1
−10
−5
0
5
−1 0 1 2 3
x
y
Delta.C Delta.D Fronteira de decisão
ggplot() +
geom_line(mapping = aes(x = seq(-5,fd.x,0.01), y = 0, color = "C")) +
geom_line(mapping = aes(x = seq(fd.x,10,0.01), y = 0, color = "D")) +
geom_point(mapping = aes(x = fd.x, y = 0, color = "Fronteira de decisão")) +
theme_minimal() +
theme(legend.position = "bottom") +
scale_color_manual(values = c("red", "blue", "black")) +
scale_y_continuous(limits = c(-0.1,0.1), breaks = NULL,labels = NULL) +
labs(x = "x", y = "", colour = "", title = "Regra de decisão")
2
−5 0 5 10
x
C D Fronteira de decisão
Regra de decisão
QDA
Já no caso do QDA a equação do discriminante é um polinômio de grau dois e a sua fronteira de decisão é o
ponto de encontro entre essas duas parábolas (δc = δd). Podemos achar esses pontos, encontrando as raízes
da equação de grau dois descrita na letra A.
Então, a sua fronteira de decisão é dada por dois pontos, mas seu discrimante é quadrático em x.
Abaixo temos o código implementando as equações e um gráfico com um exemplo.
rm(list=ls())
delta.QDA = function(x, mu.c, sigma2.c, P.c) {
-0.5*log(sigma2.c) - 0.5*((x-mu.c)ˆ2/sigma2.c) + log(P.c)
}
fd.QDA = function(mu.c, mu.d, sigma2.c, sigma2.d, P.c) {
P.d = 1-P.c
a = (sigma2.d - sigma2.c)
b = -2*(mu.c*sigma2.d - mu.d*sigma2.c)
c = ((mu.cˆ2)*sigma2.d - (mu.dˆ2)*sigma2.c) -
2*log(P.c/P.d)*(sigma2.d*sigma2.c) +
log(sigma2.c/sigma2.d)*(sigma2.d*sigma2.c)
return(list(a=a,b=b,c=c))
}
3
x.seq = seq(-5,10,0.001)
delta.c = delta.QDA(x.seq, 1, 0.8, 0.4)
delta.d = delta.QDA(x.seq, 3, 0.1, 0.6)
fd.coef = fd.QDA(1, 3, 0.8, 0.1, 0.4) ## coeficientes do polinomio
## de grau 2 da fronteira de decisão
raizes = polyroot(c(fd.coef$c, fd.coef$b, fd.coef$a))
fd.x = Re(raizes)
fd.y = delta.QDA(fd.x, 3, 0.1, 0.6)
ggplot() +
geom_line(mapping = aes(x = x.seq, y = delta.c, color = "Delta.c")) +
geom_line(mapping = aes(x = x.seq, y = delta.d, color = "Delta.d")) +
geom_point(mapping = aes(x = fd.x, y = fd.y, color = "Fronteira de decisão")) +
theme_minimal() +
theme(legend.position = "bottom") +
scale_color_manual(values = c("red", "blue", "black")) +
labs(x = "x", y = "y", colour = "")
−300
−200
−100
0
−5 0 5 10
x
y
Delta.c Delta.d Fronteira de decisão
ggplot() +
geom_line(mapping = aes(x = x.seq, y = delta.c, color = "Delta.c")) +
geom_line(mapping = aes(x = x.seq, y = delta.d, color = "Delta.d")) +
4
geom_point(mapping = aes(x = fd.x, y = fd.y, color = "Fronteira de decisão")) +
theme_minimal() +
theme(legend.position = "bottom") +
scale_color_manual(values = c("red", "blue", "black")) +
scale_x_continuous(limits = c(1,5)) +
scale_y_continuous(limits = c(-25,10)) +
labs(x = "x", y = "y", colour = "", title = "Gráfico ampliado")
−20
−10
0
10
1 2 3 4 5
x
y
Delta.c Delta.d Fronteira de decisão
Gráfico ampliado
Podemos perceber que a variabilidade parece influenciar na abertura da parábola. A variabilidade menor da
classe D deixou a curva mais fechada se comparada com a classe C.
Como falado na parte A da questão, escolhemos a classe C se δc > δd, então a regra de decisão seria como
no gráfico abaixo
ggplot() +
geom_line(mapping = aes(x = seq(-5,fd.x[1],0.01), y = 0, color = "C")) +
geom_line(mapping = aes(x = seq(fd.x[2],10,0.01), y = 0, color = "C")) +
geom_line(mapping = aes(x = seq(fd.x[1],fd.x[2],0.01), y = 0, color = "D")) +
geom_point(mapping = aes(x = fd.x, y = 0, color = "Fronteira de decisão")) +
theme_minimal() +
theme(legend.position = "bottom") +
scale_color_manual(values = c("red", "blue", "black")) +
scale_y_continuous(limits = c(-0.1,0.1), breaks = NULL,labels = NULL) +
labs(x = "x", y = "", colour = "", title = "Regra de decisão")
5
−5 0 5 10
x
C D Fronteira de decisão
Regra de decisão
Um caso interessante de se ver é quando as variâncias são iguais, pois caímos no caso LDA em que só temos
um ponto de encontro (de forma equivalente, temos 2 raízes iguais), como mostra o gráfico abaixo.
rm(list=ls())
delta.QDA = function(x, mu.c, sigma2.c, P.c) {
-0.5*log(sigma2.c) - 0.5*((x-mu.c)ˆ2/sigma2.c) + log(P.c)
}
fd.QDA = function(mu.c, mu.d, sigma2.c, sigma2.d, P.c) {
P.d = 1-P.c
a = (sigma2.d - sigma2.c)
b = -2*(mu.c*sigma2.d - mu.d*sigma2.c)
c = ((mu.cˆ2)*sigma2.d - (mu.dˆ2)*sigma2.c) -2*log(P.c/P.d)*(sigma2.d*sigma2.c) +log(sigma2.c/sigma2.d)*(sigma2.d*sigma2.c)
return(list(a=a,b=b,c=c))
}
x.seq = seq(-20,20,0.001)
delta.c = delta.QDA(x.seq, -3, 1, 0.1)
delta.d = delta.QDA(x.seq, 2, 1, 0.9)
fd.coef = fd.QDA(-3, 2, 1, 1, 0.1) ## coeficientes do polinomio
## de grau 2 da fronteira de decisão
6
raizes = polyroot(c(fd.coef$c, fd.coef$b, fd.coef$a))
fd.x = Re(raizes)
fd.y = delta.QDA(fd.x, -3, 1, 0.1)
ggplot() +
geom_line(mapping = aes(x = x.seq, y = delta.c, color = "Delta.c")) +
geom_line(mapping = aes(x = x.seq, y = delta.d, color = "Delta.d")) +
geom_point(mapping = aes(x = fd.x, y = fd.y, color = "Fronteira de decisão")) +
theme_minimal() +
theme(legend.position = "bottom") +
scale_color_manual(values = c("red", "blue", "black")) +
labs(x = "x", y = "y", colour = "")
−200
−100
0
−20 −10 0 10 20
x
y
Delta.c Delta.d Fronteira de decisão
ggplot() +
geom_line(mapping = aes(x = x.seq, y = delta.c, color = "Delta.c")) +
geom_line(mapping = aes(x = x.seq, y = delta.d, color = "Delta.d")) +
geom_point(mapping = aes(x = fd.x, y = fd.y, color = "Fronteira de decisão")) +
theme_minimal() +
theme(legend.position = "bottom") +
scale_color_manual(values = c("red", "blue", "black")) +
scale_x_continuous(limits = c(-5,5)) +
scale_y_continuous(limits = c(-25,5)) +
labs(x = "x", y = "y", colour = "", title = "Gráfico ampliado")
7
−20
−10
0
−5.0 −2.5 0.0 2.5 5.0
x
y
Delta.c Delta.d Fronteira de decisão
Gráfico ampliado
8
	Questão 3
	Letra B
	LDA
	QDA

Continue navegando