R語言代寫線性判別分析(LDA),二次判別分析(QDA)和正則判別分析(RDA)


原文鏈接:http://tecdat.cn/?p=5689

 

判別分析包括可用於分類和降維的方法。線性判別分析(LDA)特別受歡迎,因為它既是分類器又是降維技術。二次判別分析(QDA)是LDA的變體,允許數據的非線性分離。最后,正則化判別分析(RDA)是LDA和QDA之間的折衷。

本文主要關注LDA,並探討其在理論和實踐中作為分類和可視化技術的用途。由於QDA和RDA是相關技術,我不久將描述它們的主要屬性以及如何在R中使用它們。

線性判別分析

LDA是一種分類和降維技術,可以從兩個角度進行解釋。第一個是解釋是概率性的,第二個是更多的程序解釋,歸功於費舍爾。第一種解釋對於理解LDA的假設是有用的。第二種解釋可以更好地理解LDA如何降低維數。

  

Fisher的LDA優化標准

Fisher的LDA優化標准規定組的質心應盡可能分散。這相當於找到一個線性組合ž= aŤXZ=aTX,使得aTaT相對於類內方差的類間方差最大化。 

 

LDA模型的復雜性

LDA的有效參數的數量可以通過以下方式導出。有KK手段μ^kμ^k被估計。協方差矩陣不需要額外的參數,因為它已經由質心定義。由於我們需要估計KK判別函數(以獲得判定邊界),這就產生了涉及p個元素的KK計算。另外,我們有ķ-1為自由參數ķ前科。因此,有效LDA參數的數量是Kp+(K-1)。 

LDA摘要

在這里,我總結了LDA的兩個觀點,並總結了該模型的主要特性。

概率論

LDA使用貝葉斯規則來確定觀察xx屬於kk類的后驗概率。由於LDA的正常假設,后驗由多元高斯定義,其協方差矩陣假定對於所有類是相同的。新的點通過計算判別函數分類δkδk(后驗概率的枚舉器)並返回類kk具有最大δkδk。判別變量可以通過類內和類間方差的特征分解來獲得。

費舍爾的觀點

根據Fisher,LDA可以理解為降維技術,其中每個連續變換是正交的並且相對於類內方差最大化類間方差。此過程將特征空間轉換為具有K−1K−1維度的仿射空間。在對輸入數據進行擴展之后,可以通過在考慮類先驗的情況下確定仿射空間中的最接近的質心來對新點進行分類。

LDA的特性

LDA具有以下屬性:

  • LDA假設數據是高斯數據。更具體地說,它假定所有類共享相同的協方差矩陣。
  • LDA在K−1K−1維子空間中找到線性決策邊界。因此,如果自變量之間存在高階相互作用,則不適合。
  • LDA非常適合於多類問題,但是當類分布不平衡時應該小心使用,因為根據觀察到的計數來估計先驗。因此,觀察很少被分類為不常見的類別。
  • 與PCA類似,LDA可用作降維技術。請注意,LDA的轉換本質上與PCA不同,因為LDA是一種考慮結果的監督方法。

數據集

為了舉例說明線性判別分析,我們將使用音素語音識別數據集。該數據集對於展示判別分析很有用,因為它涉及五種不同的結果。

f <- getURL('phoneme.csv')
df <- read.csv(textConnection(f), header=T)
print(dim(df))
## [1] 4509  259

 

為了以后評估模型,我們將每個樣本分配到培訓或測試集中:

#logical vector: TRUE if entry belongs to train set, FALSE else
train <- grepl("^train", df$speaker)
# remove non-feature columns
to.exclude <- c("row.names", "speaker""g")
feature.df <- df[, !colnames(df) %<strong>in</strong>% to.exclude]
test.set <- subset(feature.df, !train)
train.set <- subset(feature.df, train)
train.responses <- subset(df, train)$g
test.responses <- subset(df, !train)$g

在R中擬合LDA模型

我們可以通過以下方式擬合LDA模型:

lda.model <- lda(train.set, grouping = train.responses)

 

LDA作為可視化技術

我們可以通過在縮放數據上應用變換矩陣將訓練數據轉換為規范坐標。要獲得與predict.lda函數返回的結果相同的結果,我們需要首先圍繞加權平均數據居中:

## [1] TRUE

我們可以使用前兩個判別變量來可視化數據:

 

繪制兩個LDA維度中的數據顯示三個集群:

  • 群集1(左)由aaao音素組成
  • 群集2(右下角)由dcliy音素組成
  • 群集3(右上角)由sh音素組成

這表明兩個維度​​不足以區分所有5個類別。然而,聚類表明可以非常好地區分彼此充分不同的音素。

我們還可以使用plot.lda函數繪制訓練數據到所有判別變量對的映射,其中dimen參數可用於指定所考慮的維數:

 

為了可視化組的質心,我們可以創建自定義圖:

 

解釋后驗概率

除了將數據轉換為由分量x提供的判別變量之外,預測函數還給出后驗概率,其可以用於分類器的進一步解釋。例如:

## [1] "Posterior of predicted class 'sh' is: 1"
##        aa    ao   dcl    iy    sh
## aa  0.797 0.203 0.000 0.000 0.000
## ao  0.123 0.877 0.000 0.000 0.000
## dcl 0.000 0.000 0.985 0.014 0.002
## iy  0.000 0.000 0.001 0.999 0.000
## sh  0.000 0.000 0.000 0.000 1.000

各個班級的后驗表格表明該模型對音素aaao最不確定,這與我們對可視化的期望一致。

 

LDA作為分類器

如前所述,LDA的好處是我們可以選擇用於分類的規范變量的數量。在這里,我們仍將通過使用多達四個規范變量進行分類來展示降級LDA的使用。

##   Rank Accuracy
## 1    1     0.51
## 2    2     0.71
## 3    3     0.86
## 4    4     0.92

正如從變換空間的視覺探索所預期的那樣,測試精度隨着每個附加維度而增加。由於具有四維的LDA獲得最大精度,我們將決定使用所有判別坐標進行分類。

為了解釋模型,我們可以可視化 分類器的性能:

 

在圖中,預期的音素以不同的顏色顯示,而模型預測通過不同的符號顯示。具有100%准確度的模型將為每種顏色分配單個符號。

二次判別分析

QDA是LDA的變體,其中針對每類觀察估計單個協方差矩陣。如果事先知道個別類別表現出不同的協方差,則QDA特別有用。QDA的缺點是它不能用作降維技術。

由於QDA估計每個類的協方差矩陣,因此它具有比LDA更多的有效參數。我們可以通過以下方式得出參數的數量。

因此,QDA參數的有效數量是ķ- 1 + K.p + K.p (p + 1 )2K−1+Kp+Kp(p+1)2。

由於QDA參數的數量在pp是二次的,因此當特征空間很大時,應小心使用QDA。

QDA在R

我們可以通過以下方式執行QDA:

的QDA和LDA對象之間的主要區別是,QDA具有p×pp×p的變換矩陣對於每個類k∈{1,…,K}k∈{1,…,K}。這些矩陣確保組內協方差矩陣是球形的,但不會導致子空間減小。因此,QDA不能用作可視化技術。

讓我們確定QDA在音素數據集上是否優於LDA:

## [1] "Accuracy of QDA is: 0.84"

QDA的准確度略低於全級LDA的准確度。這可能表明共同協方差的假設適合於該數據集。

 

規范的判別分析

由於RDA是一種正則化技術,因此當存在許多潛在相關的特征時。現在讓我們評估音素數據集上的RDA。

 

R中的RDA

 

rda.preds <- predict(rda.model, t(train.set), train.responses, t(test.set))

# determine performance for each alpha
rda.perf <- vector(, dim(rda.preds)[1])
for(i in seq(dim(rda.preds)[1])) {
    <span style="color:#888888"># performance for each gamma</span>
    res <- apply(rda.preds[i,,], 1, function(x) length(which(x == as.numeric(test.responses))) / length(test.responses))
    rda.perf[[i]] <- res
}
rda.perf <- do.call(rbind, rda.perf)
rownames(rda.perf) <- alphas

結論

判別分析對於多類問題特別有用。LDA非常易於理解,因為它可以減少維數。使用QDA,可以建模非線性關系。RDA是一種正則化判別分析技術,對大量特征特別有用。

 

如果您有任何疑問,請在下面發表評論。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM