應用統計學與R語言實現學習筆記(十一)——判別分析

Chapter 11 Discriminant Analysis

筆者最近任務繁重,斷更了一頓時間,最近會開始慢慢把這個系列寫完。本篇是第十一章,內容是判別分析。 這篇博客的完整內容包含各種數學表達。能夠見我CSDN和hexo搭的我的博客。 CSDN博客git

hexo的我的博客github

1 判別分析應用

判別分析(Discriminant Analysis)——判別分析的目的是對已知分類的數據創建由數值指標構成的分類規則,而後把這樣的規則應用到未知分類的樣本中去分類,以識別未知樣本所屬的類別。判別分析是多元數據分析的重要方法之一。一般解決被解釋變量是非數值變量,解釋變量是數值變量的情形。 事實上地學領域應用判別分析最多的是在哪裏呢?實際上是遙感影像的地物分類,一般遙感導論中不管Erdas或者ENVI在作完監督分類以後,其實就是用標註的樣本去訓練判別函數,而後用判別函數完成整幅影像的判別分析,就能夠分出不一樣的地物類型,這種方法就是咱們最廣泛使用的極大似然法。而這裏的被解釋變量就是地物類型,解釋變量(多元)就是遙感影像不一樣波段的DN值,或者是輻射率。數據結構

  • 聚類分析和判別分析差別 在聚類分析中,人們通常事先並不知道應該分紅幾類及哪幾類,全根據數據肯定。 在判別分析中,至少有一個已經明確知道類別的「訓練樣本」,並利用該樣原本創建判別準則,並經過預測變量來爲未知類別的觀測值進行判別。 一般實際問題中,能夠先聚類以得知類型,再進行判別。 用機器學習的話來講,聚類分析是非監督學習,判別分析屬於監督學習。 判別分析的數據結構 對比聚類分析的數據結構,事實上就是多了最後一列的Y。
  • 個體由x1,x2,……,xp變量描述。
  • 有分類變量Y明確對個體分類。
  • 問題:創建Y與x1,x2,……,xp變量間關係的函數。根據函數將新個體進行分類。

誤判率 誤判率的高低有下面兩個因素決定:hexo

  • 主觀因素:分界線的位置要正確。
  • 客觀因素:均值,方差——經過選擇指標來控制:通常來講,維度高一點,可使分辨率高一些,但在許多狀況下,指標太多,不只不能提升分辨率,還增長計算量(須要豐富的實際經驗和試算);在作判別分析前,要作假設檢驗。在兩個整體的均值有顯著差別的狀況下,再作判別分析。

判別分析的假設機器學習

  • 每個判別變量(解釋變量)不能是其餘判別變量的線性組合——不符合該假設的話,沒法估計判別函數,變量間高度相關或一變量與其餘變量的線性組合高度相關時,參數估計的標準偏差將很大。
  • 判別變量之間具備多元正態分佈——可精確的計算顯著性檢驗值和歸屬機率。
  • 如要採用線性判別函數,還要求各組協方差距陣相等——線性判別函數使用起來最方便、在實際中使用最廣。

2 判別分析方法

2.1 距離判別法

兩整體狀況 距離常選用馬氏距離—— 馬氏距離的好處是能夠克服變量之間的相關性干擾,而且消除各變量量綱的影響。 判別規則: W(x)爲判別函數(discriminant function),α爲判別係數。函數

兩整體協方差不等 判別函數爲二次函數 多整體狀況學習

  • 多整體狀況:協方差相同
  • 多整體狀況:協方差不等
  • 若整體不服從正態分佈,直接從馬氏距離來作判別分析,失去了機率意義,僅僅是一直觀的經驗判斷而已,可能偏誤較大。

2.2 Fisher判別法

Fisher判別法的思想就是投影,將k組p維數據投影到某一個方向,使得它們的投影組與組之間儘量的分開。考慮只有兩個(預測)變量的判別問題。假定只有兩類。數據中的每一個觀測值是二維空間的一個點。這裏只有兩種已知類型的訓練樣本。一 類 有 38 個 點 ( 用「o」表示),另外一類有44個點(用「*」表示)。按原來變量(橫座標和縱座標),很難將這兩種點分開。測試

可是沿着圖上的虛線方向朝和這個虛線垂直的一條直線進行投影會使得這兩類分得最清楚。能夠看出,若是向其餘方向投影,判別效果不會比這個好。有了投影以後,再用前面講到的距離遠近的方法獲得判別準則。這種先投影的判別方法就是Fisher判別法。 Fisher判別法.net

  • 不要求整體分佈類型;
  • 工做原理就是對原數據系統進行座標變換,尋求可以將整體儘量分開的方向;
  • a爲Rp中的任一貫量,點x在以a爲法方向的投影爲a'x;
  • 各組數據的投影
  • 這些數據正好組成一元方差分析的數據。

F應充分大,即但願找到a使得SSG儘量大而SSE儘量小。 在有些問題中,僅用一個線性判別函數不能很好區別各個整體,可取第二個、第三個,以此類推。 據此來肯定選擇多少判別函數。 判別準則 選擇i使得代價函數的值最小 Fisher判別法實質設計

  • 選幾個新的綜合性指標,代替原來的p個指標。
  • 構成新的綜合性指標的條件: (1)不一樣類的均值差距儘量大; (2)各種中的方差儘量小。

Fisher判別法的依據不是x屬於哪一個整體的機率的大小,而是類別之間具備最大的可分性,也沒有考慮錯判帶來的損失大小(錯報臺風登錄vs.漏報臺風登錄)。

2.3 Bayes判別法

  • 不用判別式,而是比較新給樣品屬於各個整體的條件機率p(g|x)的大小,將新樣品判歸爲來自條件機率最大的整體。
  • 先給出 k 個整體的先驗機率(實踐中一般把頻率做爲先驗機率)。如各整體密度爲,則後驗機率可計算。
  • 當且僅當P(h|x)= maxgP(g|x),判x來自第h整體。
  • 也能夠用使錯判的損失最小的準則來判別。
  • Bayes判別法就是要選擇劃分D使得ECM(D)最小。

3 創建判別函數的方法

與多元迴歸相似,變量選擇的好壞直接影響判別分析的效果。 常遇問題:(1)忽略最主要的指標;(2)引入太多指標,計算量既大又幹擾分析。

  • 全模型法(SPSS系統默認方法)
  • 前向選擇法 從沒有變量的模型開始 每一部逐步把對判別函數貢獻最大的變量加入模型,直到模型外沒有一個變量 符合條件爲止。當但願有較多變量進入判別函數時,選用此方法(在Syntax中實現)。選擇使威爾克斯統計量最小且顯著的變量加入。
  • 後向選擇法 從包含用戶指定的全部變量的模型開始。每一部逐步把對判別函數貢獻最小的變量從模型中剔除出去,直到留在模型中的變量都符合條件爲止。當但願判別函數含有較少變量時,選用此方法。選擇使威爾克斯統計量最大且不顯著的變量剔除。
  • 逐步選擇法 前向選擇和後向選擇的結合。從沒有變量的模型開始。每一部逐步把對判別函數貢獻最大的變量加入模型,同時,對模型中的變量進行檢驗,把不符合條件的變量從模型中刪除。是一種較好的方法。選擇使威爾克斯統計量最小且顯著的變量加入。選擇使威爾克斯統計量最大且不顯著的變量剔除。

4 判別分析的步驟及注意事項

判別分析的步驟

  • 第1步:肯定研究的問題與目的 判別分析適合將個體歸類的問題,特別適合一個定性的被解釋變量和多個定量的解釋變量的情形。
  • 第2步:判別分析研究設計 解釋變量與被解釋變量的選擇:被解釋變量的組數能夠是兩個或更多,但必須互斥和完備。 樣本容量:判別分析對樣本量與預測變量的比率敏感。 總樣本量:建議比率爲每一個解釋變量20個觀測,最小的總樣本量爲每一個變量5個觀測。最小的組的大小必須超過解釋變量的個數,建議每組至少有20個觀測,還要注意組的相對大小(大的組有不相稱的高的分類機會)。 樣本分割:須要將樣本分割爲兩個子樣本,一個用於估計判別函數,另外一個用於驗證。隨機分組,最多見的是隨機分爲兩半。一般各組比率相同。
  • 第3步:判別分析的假定 多元正態性,如不知足建議使用Logistic迴歸。Box’s Test 檢驗各組協方差陣是否相等,不等的協方差矩陣可能會負面影響分類過程,觀測會被「過分歸類」到大的協方差陣組中。解釋變量的多重共線性。
  • 第4步:估計判別模型和評估總體擬和統計顯著性: Wilks’ Lambda, Hotelling跡和Pillai評估判別函數的判別效力的顯著性。 評估總體擬和:計算每一個觀測的判別Z得分,檢驗各組在判別Z得分上的差別,評估組,關係的預測精度。
  • 第5步:結果的解釋 解釋判別分析中每一個解釋變量的相對重要性。 標準化判別權重(判別係數):如存在多重共線性時不合適,可能不穩定。 判別載荷,又稱結構相關係數,是每一個解釋變量與判別函數的簡單相關係數,也可能不穩定。 偏F值。 能力指數:當保留多個判別函數時。
  • 第6步:結果的驗證 分隔樣本或交叉驗證法。

判別分析注意事項

  • 解釋變量(判別變量)必須是可測量的。
  • 每個判別變量不能是其它判別變量的線性組合(不能提供新的信息,沒法估計判別函數)。
  • 判別變量不能高度相關,不然致使估計的標準偏差很大。
  • 訓練樣本中必須包含全部要判別的類型,分類必須清楚(在判別分析前最好應當作假設檢驗,肯定各個類的有關變量的均值是顯著不一樣的)。
  • 要選擇好可能用於判別的預測變量。判別分析是爲了正確地分類,但同時也要注意使用盡量少的預測變量來達到這個目的。使用較少的變量意味着節省資源和易於對結果做解釋。
  • 檢驗結果(在SPSS選項中選擇Wilks’ Lambda、Rao’s V、 The Squared Mahalanobis Distance或The Sum of Unexplained Variations等檢驗的計算機輸出),以肯定是否分類結果僅因爲隨機因素。
  • 對於多個判別函數,要弄清各自的重要性。
  • 注意訓練樣本的正確和錯誤分類率。研究被誤分類的觀測值,看是否能找出緣由。

5 R語言中判別分析實現

正如上文提到的,咱們以一個簡單的地物分類的例子來進行實踐。 原始的遙感影像如圖所示(高分一號衛星16 m數據)。

高分一號衛星有四個波段,分別顯示以下:

咱們隨機在區域內生成了55個樣本點,並根據目視解譯作了分類,因爲所處研究區位於新城且僅做測試,用地類型僅選擇了兩類:建設用地/不透水面和植被。前面已經用4,3,2顯示了原始影像,紅色部分即爲植被。植被爲類型1,建設用地/不透水面爲類型2。

另外咱們隨機在區域內還生成了10個樣本點做爲驗證點。

接着下來咱們讀取數據而且利用三種不一樣的判別分析方法進行判別分析地物類別。 判別分析能夠本身經過dist函數計算距離獲得。如今已經有對應的包能夠直接分析。 這裏推薦兩個包(WMDB和MASS)。 WMDB能夠實現加權馬氏距離判別分析和Bayes判別分析,MASS能夠實現Fisher判別分析。 距離判別分析的函數爲wmd。具體參數以下:

wmd(Trnx,TrnG,Tweight=NULL,Tstx=NULL,var.equal=F)

Trnx是訓練樣本數據。TrnG爲分類結果,Tweight爲指定權重,能夠根據主成分貢獻計算或者取相等(原始的判別分析法),Tstx爲待測樣本數據,var.equal指定協方差矩陣是否相等。 Fisher判別分析的函數爲lda。具體參數以下:

lda(formula,data,……,subset,na.action)

formula形如groups~x1+x2+……的形式,data爲數據集,subset指定訓練樣本,na.action指定有缺失值處理方式。 Bayes判別分析的函數爲dbayes。具體參數以下:

dbayes(Trnx,TrnG,p=rep(1,length(levels(TrnG))),Tstx=NULL,var.equal=F)

Trnx是訓練樣本數據。TrnG爲分類結果,p爲指定先驗機率的向量,Tstx爲待測樣本數據,var.equal指定協方差矩陣是否相等。 接下來就是基於高分影像的四個波段進行訓練和判別分析。 距離判別分析結果。

Fisher判別分析結果。

列聯表分析及判別準確率。

Bayes判別分析結果。

從樣本數據來看,Fisher結果是最好的。 接下來即按照訓練好的判別規則進行分類。這裏發現WMDB包的兩個函數並無提供預測功能,這裏選用了另外一個包klaR來作貝葉斯分類(樸素貝葉斯)。 分類結果對比:

爲了驗證準確率,這裏利用隨機生成的10個驗證點進行精度驗證。

因爲選取驗證點較少,準確率都達到了100%。從實際影像對比來看,彷佛Bayes方法將更多細小的植被提取出來了,可是也有一部分道路錯分。Fisher方法少提取了一部分,但錯分的部分幾乎沒有。 這部分的代碼和數據後面會一塊兒放出來。

相關文章
相關標籤/搜索