高斯过程分类器的决策面的形状是什么?

机器算法验证 机器学习 分类 高斯过程
2022-04-03 16:32:12

我有一个二元分类问题,我正在尝试使用生成分类器来解决这个问题。如果我使用高斯判别分析,并将两个高斯分布拟合到我的两个类中,它们之间的决策面将是一个二次函数(解析可导)。

我想对于高斯过程来说,封闭形式的解决方案是不可能的,但我仍然对一般 GP 分类器的决策面形状可以说些什么很感兴趣?它们会是多项式的吗?可以说一下他们的学位吗?Rasmussen & Williams 在他们的书 ( http://www.gaussianprocess.org/gpml/chapters/RW3.pdf )的第 45 页上简要提到了决策边界函数的期望,但他们从未解决它......

我正在使用标准的平方指数内核,但如果其他内核更容易推导出来,我也对其他内核产生的决策表面形状感兴趣。

1个回答

正如您在下面我制作的示例中所看到的,在平方指数(高斯)核作为高斯过程的协方差函数的情况下,概率表面看起来像一个平滑的密度。

关于高斯过程中协方差函数的好读物是第 4 章 - 协方差函数[1]


所以,我将使用 R,特别是kernlab这个例子的包。有一个很好的gausspr函数可以接受不同的内核类型作为参数。我将使用 iris 数据集作为只有二维的二元分类问题。

library(kernlab)
data(iris)

#let's use only two variables plus the target variable so we can accurately plot it
data = iris[, 3:5]
data$Species[data$Species == "virginica"] = "versicolor"
data$Species = factor(data$Species)
levels(data$Species) = c("setosa", "virginica OR versicolor")

#The fitting, you can change kernel and parameters, check the kernlab manual
fit = gausspr(Species~., data = data, kernel = "rbfdot")
pred = predict(fit, data)

N = 250L #integer that gives the number of unique values in each dimension of the grid

grid = expand.grid(
  Petal.Length = seq(min(data$Petal.Length), max(data$Petal.Length), length.out = N),
  Petal.Width = seq(min(data$Petal.Width), max(data$Petal.Width), length.out = N)
)

pred.grid = predict(fit, grid, type = "probabilities")[, 1, drop = FALSE]
#This maps the predictions a matrix representing the dimensions of data
pred.grid = matrix(pred.grid, ncol = N)

#The color part is thanks to http://www.r-bloggers.com/how-to-correctly-set-color-in-the-image-function/
collist<-c("#053061","#2166AC","#4393C3","#92C5DE","#D1E5F0","#F7F7F7","#FDDBC7","#F4A582","#D6604D","#B2182B","#67001F")
ColorRamp<-colorRampPalette(collist)(100L)

tiff(filename = "Rplot_rbfdot.tiff")
image(unique(grid$Petal.Length), unique(grid$Petal.Width), pred.grid, useRaster = TRUE, col = ColorRamp,
  ylab = "Petal.Width", xlab = "Petal.Length", main = "kernel = \"rbfdot\""
)
points(data[,1:2], pch = c(16,17)[as.numeric(pred)], col = adjustcolor("black", alpha = 0.5))
contour(unique(grid$Petal.Length), unique(grid$Petal.Width), pred.grid, add = TRUE,
  levels = c(.4,.5,.6), labcex = 1, lwd = 1.75
)
legend("topleft", legend = levels(data$Species), pch = c(16,17), bg = "white")
dev.off()

这些图是使用上述代码生成的。

决策边界 1

决策边界 2


[1] CE Rasmussen 和 CKI Williams,机器学习的高斯过程,麻省理工学院出版社,2006 年,ISBN 026218253X。© 2006 年麻省理工学院。www.GaussianProcess.org/gpml