1. 程式人生 > >R語言分類演算法之線性判別分析(Linear Discriminant Analysis)

R語言分類演算法之線性判別分析(Linear Discriminant Analysis)

1.線性判別原理解析
基本思想是”投影”,即高緯度空間的點向低緯度空間投影,從而簡化問題的處理.在原座標系下,空間中的點可能很難被分開,如圖8-1,當類別Ⅰ和類別Ⅱ中的樣本點都投影至圖中的”原座標軸”後,出現了部分樣本點的”影子”重合的情況,這樣就無法將分屬於這兩個類別的樣本點區分開來;而如果使用如圖8-2中的”投影軸”進行投影,所得到的”影子”就可以被”類別劃分線”明顯地區分開來.
費希爾判別最重要的就是選擇出適當的投影軸,對該投影軸方向上的要求是:保證投影后,使每一類之內的投影值所形成的類內離儘可能小,而不同類之間的投影值所形成的類間距離差儘可能大.
對線性判別來說,線將樣本點投影到一維空間,即直線上,若效果不明顯,則可以考慮增加一個緯度,即投影到二維空間,依此類推.
而二次判別(Quadratic Discriminant Analysis,QDA)與線性判別(Linear Discriminant Analysis,LDA)的區別就在於投影面的形狀不同,二次判別使用若干次曲面,而非直線或平面來將樣本劃分至相應的類別中.二次判別函式是一種常用的非線性判別函式.
費希爾(Fsher)判別


2.在R語言中的應用
MASS包是Modern Applied Statistics with S 的縮寫,即S語言在現代統計中的應用。線性判別分析(LDA)主要用到了lda(formula,data,…,subset,na.action)函式,二次判別分析(QDA)則用到了qda(formula,data,…,subset,na.action)函式。
3.以iris資料集為例進行線性判別分析
1)應用模型並檢視模型的相應引數

library(MASS)
fit_lda1=lda(Species~.,data_train)
fit_lda1

R語言分類演算法之費希爾(Fisher)判別

2)檢視模型的輸出結果

fit_lda1[1:length(fit_lda1)]

R語言分類演算法之費希爾(Fisher)判別

3)做出模型圖

plot(fit_lda1)

R語言分類演算法之費希爾(Fisher)判別

plot(fit_lda1,dimen=1)

R語言分類演算法之費希爾(Fisher)判別

4)對data_test進行預測,並觀察預測結果

pre_ldal=predict(fit_lda1,data_test)
pre_ldal[1:length(pre_ldal)]

R語言分類演算法之費希爾(Fisher)判別

5)評測預測結果

table(data_test$Species,pre_ldal$class)
error_lda1=sum(as.numeric(as.numeric(pre_ldal$class)!=as
.numeric(data_test$Species)))/nrow(data_test)

R語言分類演算法之費希爾(Fisher)判別