LDA 和最大特征数的一个示例

机器算法验证 r 机器学习 数理统计 Python 判别分析
2022-04-10 09:50:07

当我阅读以下帖子时:

消息来源对线性、二次和费舍尔判别分析的似乎不一致

并查看以下注释:

在此处输入图像描述

我们在谷歌上看到的任何减少数量都是类数减一。但是这里这个值是如何达到的?IE:X1

重要的:X<<P在这个例子中。

更新 1:我认为答案是类数减一,但我们最多可以在LDA中使用尽可能多的训练样本(没有限制X1)。

更新 2:我在这个奇怪的链接中看到简而言之,LDA 的目标通常是投影特征空间(数据集n维样本)到一个较小的子空间k(在哪里kn1))...

更新 3:

本书的第 27 页告诉我们n班级和k我们得到的功能k1LDA 的功能。

在此处输入图像描述

1个回答

关于线性判别分析

最小判别分析的一个经典例子是 RA Fisher 1936 年的文章“分类问题中多重测量的使用”这是基于 iris 数据集并且很容易绘制的。

### load library 
### with Edgar Anderson's Iris data set 
### and the lda function
library(MASS)

### Perform lda
lda <- lda(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width  , data = iris)

### Compute the discriminant
predict(lda)

### Plot histogram with result from first discriminant
plot(lda, dimen=1, breaks = seq(-10,10,0.5))

### Plot histogram with only one variable
layout(matrix(1:3,3))
hist(iris$Sepal.Length[iris$Species == "setosa"], breaks = seq(3,9,0.25), 
     main = "", xlab = "group setosa", freq = 0)
hist(iris$Sepal.Length[iris$Species == "versicolor"], breaks = seq(3,9,0.25), 
     main = "", xlab = "group versicolor", freq = 0)
hist(iris$Sepal.Length[iris$Species == "virginica"], breaks = seq(3,9,0.25), 
     main = "", xlab = "group virginica", freq = 0)

第一线性判别式的结果

低密度脂蛋白

单个变量的结果(萼片长度)

标准

Fisher 的想法是使用变量的线性组合,以使类之间的距离更大。这个距离被认为是相对于组的方差。(要了解更多信息,请考虑以下问题:MANOVA 何时最有用

当参数 > 样本时

因此,LDA 背后的直觉是找到组间距离/方差大于组内距离/方差的参数的线性组合。

当你有比样本量更多的参数时,你将能够找到一个完美的线性组合。其内距离为零的一种。

这种线性组合可以通过找到参数的线性组合来找到,其中一类中的线性组合等于 0,而另一类中的线性组合等于 1。

这与解决线性回归问题有关

Y=βX

在哪里Y是一个有 1 和 0 的列,具体取决于类,X是具有特征的矩阵,并且β是要找到的系数。

当特征数量大于样本数量时,这个问题是超定的。这意味着您将能够找到许多特征的线性函数,其中一类等于 0,另一类等于 1(只要没有具有完全相同特征的不同类成员)。

您需要的特征数量与精确拟合回归问题所需的特征数量相似。哪个是X1. 例如,如果你有两个数据点,那么一条直线,一个只有一个特征的函数(和两个参数的函数,因为除了斜率之外,截距也包括在内),将完全适合这些点。

所以x1特征将足以找到 LDA 问题的完美解决方案

正则化

因此,当特征数量大于样本时,问题类似于回归问题。

对于这种过度确定的情况,你可以说X1功能就足够了,但它不是唯一的解决方案。确切的答案将取决于您如何权衡不同的解决方案。您可以通过多种方式做到这一点。正则化是一种方法。如果问题通过套索回归或逐步回归(逐步添加回归量/特征,建立从零回归量开始的解决方案)解决,那么我可以想象极限是x1特征。如果问题通过岭回归(从一开始就使用所有回归量/特征)解决,则情况并非如此。