ผมไม่คิดว่าคุณควรจะพบการแสดงออกสำหรับการวิเคราะห์ขอบเขตการตัดสินใจของเบส์สำหรับการสำนึกได้รับของ 's ในทำนองเดียวกันฉันสงสัยว่าคุณควรจะได้รับขอบเขตเหนือการกระจายของเนื่องจากเป็นเพียงโดยสมมาตรตามที่คุณสังเกตmkmkx=y
ผมคิดว่าสิ่งที่คุณต้องการก็คือการแสดงเป็นโปรแกรมที่สามารถคำนวณขอบเขตการตัดสินใจสำหรับการก่อให้เกิดได้รับของ 's สิ่งนี้สามารถทำได้โดยการตั้งค่ากริดของค่าและคำนวณความหนาแน่นของคลาสตามเงื่อนไขและค้นหาจุดที่มีค่าเท่ากันmkxy
รหัสนี้ถูกแทงที่มัน IIRC มีรหัสเพื่อคำนวณขอบเขตการตัดสินใจในสถิติประยุกต์สมัยใหม่กับ Sแต่ตอนนี้ฉันไม่ได้มีประโยชน์
# for dmvnorm/rmvnorm: multivariate normal distribution
library(mvtnorm)
# class-conditional density given mixture centers
f <- function(x, m)
{
out <- numeric(nrow(x))
for(i in seq_len(nrow(m)))
out <- out + dmvnorm(x, m[i, ], diag(0.2, 2))
out
}
# generate the class mixture centers
m1 <- rmvnorm(10, c(1,0), diag(2))
m2 <- rmvnorm(10, c(0,1), diag(2))
# and plot them
plot(m1, xlim=c(-2, 3), ylim=c(-2, 3), col="blue")
points(m2, col="red")
# display contours of the class-conditional densities
dens <- local({
x <- y <- seq(-3, 4, len=701)
f1 <- outer(x, y, function(x, y) f(cbind(x, y), m1))
f2 <- outer(x, y, function(x, y) f(cbind(x, y), m2))
list(x=x, y=y, f1=f1, f2=f2)
})
contour(dens$x, dens$y, dens$f1, col="lightblue", lty=2, levels=seq(.3, 3, len=10),
labels="", add=TRUE)
contour(dens$x, dens$y, dens$f2, col="pink", lty=2, levels=seq(.3, 3, len=10),
labels="", add=TRUE)
# find which points are on the Bayes decision boundary
eq <- local({
f1 <- dens$f1
f2 <- dens$f2
pts <- seq(-3, 4, len=701)
eq <- which(abs((dens$f1 - dens$f2)/(dens$f1 + dens$f2)) < 5e-3, arr.ind=TRUE)
eq[,1] <- pts[eq[,1]]
eq[,2] <- pts[eq[,2]]
eq
})
points(eq, pch=16, cex=0.5, col="grey")
ผลลัพธ์: