0

我正在对 R 中的 2 个变量和 2 个组进行线性判别分析,即

ldares <- lda(dat[,2:3], grouping=dat[,1])

接下来,我想获得用于分隔组的决策界限的公式。我知道我可以输出线性判别式的系数:

coef(ldares)

但是,鉴于决策界限由以下方式描述:

a*v1 + b*v2 + c = 0,

如何获得偏差阈值权重c?

4

2 回答 2

2

在没有给出先验权重的情况下,我相信您会发现 c=0 并且判别分数是基于设置先验的案例的分布。您可以看到,带有隐式 c=0 假设的分数构造会在 iris 数据集的预测中产生预期的分裂:

require(MASS)
ldares <- lda(iris[ iris[,5] %in% c("setosa", "versicolor"),2:3], 
               grouping=iris[iris[,5] %in% c("setosa", "versicolor") ,5])
scores <- with( iris[ iris[,5] %in% c("setosa", "versicolor") , 2:3],
                 cbind(Sepal.Width, Petal.Length) %*% coef(ldares) )
with( iris[ iris[,5] %in% c("setosa", "versicolor") , c(2:3, 5)], 
              plot(Sepal.Width, Petal.Length, col=c("black", "red")[1+(scores>0)])  )

在此处输入图像描述

于 2012-12-29T17:51:33.737 回答
0

您应该意识到 LDA 是中心变量的线性组合。所以,判别函数实际上是:

\Sigma [w * (x - mean(x))]  >  0

因此:

\Sigma [w * x]  >  \Sigma w * mean(x)

因此阈值是 \Sigma w * mean(x)。不幸的是,LDA 没有报告整个数据集的均值(x),只有两组均值。但这使我们能够以一种相当直观的方式计算阈值。

假设结果是您的 LDA 结果,则阈值介于对两个类的质心的响应之间:

> `sum( result$scaling * result$means[2,] + result$scaling * result$means[1,] )/2`

ps 请注意,在原始问题w1*a1 + w2*a2 + c = 0中,阈值为 -c

于 2014-05-16T14:25:31.140 回答