0

我对多元统计相当陌生,在 R 的帮助部分中也找不到答案,也不是在 MASS 包的源代码中,所以也许你可以帮助我。

我的数据有很多预测变量(450)和很少的观察值(~200)。我读到由于方差矩阵的必要反转,计算 lda 是不可能的。但只是在知道这表明它有效并且给出了不错的结果之前尝试它。怎么解释?lda正手选择分离影响最大的变量吗?

我正在使用 caret 包添加一个 5 倍的 cv 并预先分离到 train(0.8) 和 test(0.2) 数据中。

Validierung <- trainControl(method = "cv", number = 5)
ldaFit1 <- train(`Species` ~., data= train,
             method= "lda",
             trControl = Validierung,
             metric = "Accuracy")  
4

1 回答 1

1

LDA 有一个内部机制可以将特征数量减少为几个重要的潜在变量:

与 PCA 一样,LDA 使用预测变量的线性组合来创建用于最终分类的新轴。与 PCA 不同,它试图最大化组之间的差异,而 PCA 不关心标签,而是最大化总方差。

此外,如果变量的方差低于容差阈值(选项tol中的选项MASSS::lda),则系数将设置为常数。

通过将原始数据与scaling系数矩阵相乘来对特征进行加权,以获得 LDA 变换空间中的数据。Sepal.Length是区分物种最有用的特征(比例矩阵中 LD1 的最高绝对值),第二个 LDA 轴几乎根本不重要(轨迹比例):

library(MASS)

model <- lda(Species ~ ., iris)
model
#> Call:
#> lda(Species ~ ., data = iris)
#> 
#> Prior probabilities of groups:
#>     setosa versicolor  virginica 
#>  0.3333333  0.3333333  0.3333333 
#> 
#> Group means:
#>            Sepal.Length Sepal.Width Petal.Length Petal.Width
#> setosa            5.006       3.428        1.462       0.246
#> versicolor        5.936       2.770        4.260       1.326
#> virginica         6.588       2.974        5.552       2.026
#> 
#> Coefficients of linear discriminants:
#>                     LD1         LD2
#> Sepal.Length  0.8293776  0.02410215
#> Sepal.Width   1.5344731  2.16452123
#> Petal.Length -2.2012117 -0.93192121
#> Petal.Width  -2.8104603  2.83918785
#> 
#> Proportion of trace:
#>    LD1    LD2 
#> 0.9912 0.0088
model$scaling
#>                     LD1         LD2
#> Sepal.Length  0.8293776  0.02410215
#> Sepal.Width   1.5344731  2.16452123
#> Petal.Length -2.2012117 -0.93192121
#> Petal.Width  -2.8104603  2.83918785

reprex 包于 2021-10-04 创建(v2.0.1)

于 2021-10-04T05:54:36.403 回答