運用廣義平方距離法,計算距離時根據先驗機率和各個總體的協方差(Covariance)結構進行調整。 協方差用於衡量兩個變數的總體誤差。而(等)方差是協方差的一種特殊情況,即當兩個變數是相同的情況。 需要注意的是,若滿足等方差的假設時,建議使用 LDA,因 LDA 中需要估計的參數比較少。

安裝套件

於 R 中套件 MASS 提供 LDA 函式。

if(!("MASS" %in% rownames(installed.packages()))) {
  install.packages("MASS")
}
library("MASS")

準備資料

使用 R 內建的 iris 資料當例子,其中 iris 由 5 個變數組成,iris 資料維度為 [50,4,3] (50 行 x 4 列 x 3 類別) ,分別為 Sepal.L, Sepal.W, Petal.L, Petal.W 與 Sp。其中 Sp 由 3 類組成,即 Setosa (s), Versicolor (c) 及 Virginica (v)。此 5 項資料中,前 4 項為特徵變數,最後 1 項為分組變數。

# 隨機取得資料清單
train_list = sample(1:50, 25)

# 建立訓練資料
train = data.frame(rbind(
  iris3[train_list,,1],
  iris3[train_list,,2],
  iris3[train_list,,3]
))

# 建立測試資料
test = data.frame(rbind(
  iris3[-train_list,,1],
  iris3[-train_list,,2],
  iris3[-train_list,,3]
))

# 建立類別資料
cls <- factor(c(
  rep("s", 25),
  rep("c", 25),
  rep("v", 25)
))

QDA 分析

QDA 函式使用方式類似 LDA,底下使用更簡易參數帶入使用

# 建立 qda 模型
z = qda(train, cls)
z
## Call:
## qda(train, cls)
## 
## Prior probabilities of groups:
##         c         s         v 
## 0.3333333 0.3333333 0.3333333 
## 
## Group means:
##   Sepal.L. Sepal.W. Petal.L. Petal.W.
## c    5.828    2.756    4.192    1.332
## s    5.028    3.464    1.420    0.244
## v    6.564    2.940    5.496    1.988

預測資料

# 預測資料
pred = predict(z, test)
pred
## $class
##  [1] s s s s s s s s s s s s s s s s s s s s s s s s s c c c c c c c c c c
## [36] c c c c c c c c c c c c c c c v v v v v v v v v v v v v v v v v v v v
## [71] v v v v v
## Levels: c s v
## 
## $posterior
##                  c             s            v
##  [1,] 6.076343e-23  1.000000e+00 1.318257e-44
##  [2,] 2.572988e-15  1.000000e+00 4.692524e-38
##  [3,] 4.531580e-18  1.000000e+00 3.010591e-39
##  [4,] 1.983930e-23  1.000000e+00 2.220131e-43
##  [5,] 2.356716e-18  1.000000e+00 8.374946e-37
##  [6,] 6.126959e-19  1.000000e+00 6.851726e-38
##  [7,] 5.736607e-21  1.000000e+00 1.095365e-36
##  [8,] 1.994818e-17  1.000000e+00 6.714673e-38
##  [9,] 1.844033e-16  1.000000e+00 4.401361e-37
## [10,] 1.999981e-20  1.000000e+00 2.564708e-43
## [11,] 9.557291e-25  1.000000e+00 5.117743e-47
## [12,] 1.176052e-20  1.000000e+00 7.967351e-42
## [13,] 2.608554e-11  1.000000e+00 4.546762e-32
## [14,] 7.409961e-20  1.000000e+00 3.149786e-30
## [15,] 9.383991e-16  1.000000e+00 5.687907e-36
## [16,] 1.733144e-16  1.000000e+00 2.723233e-34
## [17,] 3.231104e-16  1.000000e+00 7.943594e-42
## [18,] 2.690610e-37  1.000000e+00 1.780381e-51
## [19,] 1.167970e-16  1.000000e+00 4.038269e-37
## [20,] 1.157053e-22  1.000000e+00 1.749083e-50
## [21,] 3.351002e-27  1.000000e+00 3.259179e-44
## [22,] 3.022519e-21  1.000000e+00 8.732304e-42
## [23,] 4.150980e-20  1.000000e+00 2.337117e-34
## [24,] 2.611433e-13  1.000000e+00 6.594533e-36
## [25,] 5.018270e-18  1.000000e+00 1.461978e-36
## [26,] 9.999359e-01 5.572973e-116 6.406701e-05
## [27,] 9.996809e-01 9.040119e-110 3.191264e-04
## [28,] 9.974063e-01 2.198640e-132 2.593688e-03
## [29,] 9.731901e-01 2.070204e-101 2.680991e-02
## [30,] 9.946075e-01 1.080061e-124 5.392485e-03
## [31,] 9.963020e-01  1.163717e-79 3.697976e-03
## [32,] 9.988098e-01  3.690902e-96 1.190165e-03
## [33,] 9.999955e-01  6.253841e-71 4.516573e-06
## [34,] 9.755887e-01 3.564712e-116 2.441130e-02
## [35,] 9.990106e-01  1.656271e-70 9.893806e-04
## [36,] 8.114056e-01 7.912842e-114 1.885944e-01
## [37,] 9.999960e-01  1.781566e-79 3.955635e-06
## [38,] 7.446857e-01 1.477746e-106 2.553143e-01
## [39,] 9.999795e-01  1.408588e-92 2.051063e-05
## [40,] 9.968090e-01 7.215627e-124 3.191038e-03
## [41,] 9.999931e-01  1.746426e-64 6.894204e-06
## [42,] 9.999986e-01  5.073358e-57 1.415845e-06
## [43,] 9.999950e-01  3.100095e-71 5.006842e-06
## [44,] 9.277718e-01 4.583722e-111 7.222817e-02
## [45,] 9.993082e-01 3.276048e-121 6.917795e-04
## [46,] 9.993155e-01 1.336104e-100 6.845244e-04
## [47,] 9.996002e-01  4.304618e-80 3.998124e-04
## [48,] 9.987354e-01  4.593706e-88 1.264597e-03
## [49,] 9.985813e-01  1.356900e-81 1.418710e-03
## [50,] 9.999133e-01  4.104889e-92 8.665414e-05
## [51,] 3.542280e-08 2.045601e-273 1.000000e+00
## [52,] 8.394417e-04 7.956326e-169 9.991606e-01
## [53,] 1.971615e-04 1.245583e-235 9.998028e-01
## [54,] 1.808171e-04 1.370241e-290 9.998192e-01
## [55,] 1.174311e-02 2.708955e-124 9.882569e-01
## [56,] 6.144276e-07 4.086788e-279 9.999994e-01
## [57,] 1.072245e-03 1.903158e-181 9.989278e-01
## [58,] 3.791473e-05 1.030013e-207 9.999621e-01
## [59,] 4.496225e-07 7.850217e-171 9.999996e-01
## [60,] 2.579535e-01 1.213018e-298 7.420465e-01
## [61,] 2.095380e-08  0.000000e+00 1.000000e+00
## [62,] 8.732489e-06 1.935358e-164 9.999913e-01
## [63,] 1.287633e-02 1.372724e-150 9.871237e-01
## [64,] 6.785381e-03 1.255962e-218 9.932146e-01
## [65,] 2.644642e-02 2.794556e-144 9.735536e-01
## [66,] 7.719460e-04 1.181632e-238 9.992281e-01
## [67,] 3.490683e-01 8.312220e-260 6.509317e-01
## [68,] 1.157229e-07 1.085842e-222 9.999999e-01
## [69,] 3.667270e-04 1.424216e-171 9.996333e-01
## [70,] 5.303967e-08 1.229899e-236 9.999999e-01
## [71,] 1.939933e-01 3.807904e-185 8.060067e-01
## [72,] 7.675213e-05 1.210177e-200 9.999232e-01
## [73,] 1.540396e-11 4.054811e-253 1.000000e+00
## [74,] 1.259335e-11 3.154659e-205 1.000000e+00
## [75,] 5.411164e-04 9.507871e-181 9.994589e-01
# 取得類別
pred$class
##  [1] s s s s s s s s s s s s s s s s s s s s s s s s s c c c c c c c c c c
## [36] c c c c c c c c c c c c c c c v v v v v v v v v v v v v v v v v v v v
## [71] v v v v v
## Levels: c s v