如何获取两类双变量LDA的实际边界方程?
推导LDA两类分类的边界线公式(Y = bX + c形式)
核心原理
对于两类LDA,决策边界是两类样本的判别得分相等的点集合。当两类先验概率相等时(这里雌性F和雄性M的prior都是0.5),边界满足:w₁*var1 + w₂*var2 = t
其中:
w₁、w₂是LDA输出的线性判别系数t是两类中心在判别轴上的得分中点
从你的LDA结果计算边界
1. 提取关键参数
从你的fit输出中,提取三个核心部分:
- 线性判别系数:
w₁=7.567377(对应var1),w₂=-5.860438(对应var2) - 两类均值:
- 雌性(F):
mu_F_var1=4.4825,mu_F_var2=7.2200 - 雄性(M):
mu_M_var1=4.7600,mu_M_var2=6.4675
- 雌性(F):
2. 计算判别得分的中点t
先计算两类中心在LD1轴上的得分:
- F类得分:
7.567377*4.4825 + (-5.860438)*7.2200 ≈ -8.41 - M类得分:
7.567377*4.7600 + (-5.860438)*6.4675 ≈ -1.88
因为两类先验概率相等,中点t为两类得分的平均值:t = (-8.41 + (-1.88))/2 ≈ -5.145
3. 整理为Y = bX + c形式
把边界方程7.567377*var1 -5.860438*var2 = -5.145变形:
-5.860438*var2 = -7.567377*var1 -5.145 var2 = (7.567377/5.860438)*var1 + (5.145/5.860438)
计算系数:
b ≈ 7.567377 / 5.860438 ≈ 1.291c ≈ 5.145 / 5.860438 ≈ 0.878
最终边界线公式为:var2 = 1.291*var1 + 0.878
验证代码(可选)
如果想在R中直接计算并验证,运行这段代码:
# 提取系数和均值 w <- fit$scaling[,1] mu_F <- fit$means["F",] mu_M <- fit$means["M",] # 计算阈值t score_F <- t(w) %*% mu_F score_M <- t(w) %*% mu_M t <- (score_F + score_M)/2 # 计算b和c b <- w[1]/(-w[2]) c <- t/(-w[2]) # 输出结果 cat("边界线公式:var2 =", round(b,3), "*var1 +", round(c,3), "\n")
运行后会得到和手动计算一致的结果。
内容的提问来源于stack exchange,提问作者Xun
相关产品推荐
相关产品推荐

