1. 程式人生 > >IBM SPSS Modeler算法系列-----決策樹CHAID演算法

IBM SPSS Modeler算法系列-----決策樹CHAID演算法

在之前的微信文章中,有一篇名為《SPSS Modeler決策樹演算法比較》的文章,粗略介紹了SPSS Modeler中各種決策樹演算法(包括C5.0、CHAID、QUEST、C&R和決策列表)的區別,這可以幫助大家在選用演算法的時候有一些參考。

談到演算法,大家都覺得挺神祕的,對沒有學過統計學相關知識的朋友來說,太多的數學公式沒法理解,很多書籍介紹的也比較表象,看得雲裡霧裡的,那麼今天,我們將嘗試給大家介紹SPSS Modeler裡面所涵蓋的一些演算法內容,既不那麼地表象,也不那麼地難以理解。

我們首先從決策樹演算法開始,先介紹CHAID演算法, 它是由Kass在1975年提出的,全稱是Chi-squaredAutomatic Interaction Detector,可以翻譯為卡方自動交叉檢驗,從名稱可以看出,它的核心是卡方檢驗,那麼我們先來了解下什麼是卡方檢驗。

卡方檢驗只針對分類變數,它是統計樣本的實際觀測值與理論推斷值之間的偏離程度,實際觀測值與理論推斷值之間的偏離程度就決定卡方值的大小,卡方值越大,偏離程度越大;卡方值越小,偏差越小,若兩個值完全相等時,卡方值就為0,表明理論值完全符合。

在CHAID演算法中,我們可以結合下面這個例子來理解卡方檢驗上面這段話。

這個例子中,我們要分析的目標是女性考慮結婚與不結婚的問題(0表示不結婚,1表示結婚),那麼影響結婚不結婚的因素有很多,比如男方有沒有房子,男方收入水平, 幸福指數等等。那麼我們先來看看到底是否有房對是否結婚是否有影響。

首先,我們對資料做下統計:

SPSS

我們先假設是否有房與結婚沒有關係,那麼四個格子應該是括號裡的數(理論值),這和實際值(括號外的數)是有差距的,理論和實際的差距說明原假設不成立。

SPSS

那麼這個差距怎麼來評判呢?我們就用到卡方的計算公式:

K方的計算公式可以這麼描述, 這四個格子裡,每個格子的(實際值-理論值)^2/理論值,即K^2 ==(282-212)^2/212+(102-162) ^2/162+(142-212) ^2/212+(222-162) ^2/162=90.6708,然後我們再去查卡方表,可以看到,自由度為1,顯著性水平為0.05的卡方臨界值為3.84。計算得到的卡方值大於3.84,也就是說,原假設成立的概率小於0.05,即5%,所以我們拒絕原假設,可以得到是否有房對結婚是有影響的。從卡方的計算方法中,可以看到卡方越大,實際值與理論值差異越大,兩者沒有關係的原假設就越不成立。

SPSS

那麼以上就是對卡方檢驗在分析兩者關係的介紹。

接下來我們回到CHAID演算法,我們在IBM SPSS Modeler構建這個模型,得到的決策樹結果如下(部分截圖):

SPSS

很多人看到這個圖的時候,一般會有兩個疑惑,第一個,影響的第一個最重要的因素是年收入,那麼年收入區間的劃分為什麼是 [<=6.000]、[6.000,13.000]……這個以6.0、13.0等為臨界劃分點,是預先設定好的嗎?當然不是,這是CHAID這個演算法的計算邏輯決定的。第二個疑惑是,為什麼會以年收入作為第一個分割點,而不是其它呢?

我們先來看第一個問題,劃分的臨界點是怎麼確定的,這個問題,其實是該演算法中,對資料預處理的部分。 需要注意的是, 卡方檢驗只針對分類變數,而CHAID演算法,是支援數值變數和分類變數的,所以,首先演算法的第一步,就是對輸入變數做預處理,分兩種情況,輸入變數是數值型或者是分型別,先來介紹輸入變數是數值型的情況,比如我們例子中的年收入就是數值型的,那麼,需要先將其離散化成為字元型,也就是劃分區間,這裡採用的是ChiMerge分組法,這個接下來會結合這個例子的年收入指標來介紹下這個分組法。

  • Step1:對年收入值從小到大進行排序1、2、3、4…….
  • Step2:定義若干初始區間,使輸入變數的每個變數值均單獨落入一個區間內,像這裡的收入都是整數,所以會以1作為組限,分為[1]、[2]、[3]、[4]……等各個區間;
  • Step3:計算每個切分好的年收入值的頻次,得到輸入變數與輸出變數的交叉分組頻數表。
  • Step4:計算兩兩相臨組的卡方值。根據顯著性水平和自由度得到卡方臨界值。如果卡方值小於臨界值,說明輸入變數在該相鄰區間上的劃分,對輸出變數取值沒有顯著影響,可以合併;

這裡的Step3和Step4,我們這麼來理解,輸入變數是年收入,我們已經把它劃分為[1]、[2]……,那麼在下面這個表中,我們先計算了年收入第一位和第二位分別為1和2的人數(即Step3中的頻次計算),得到下面這個交叉表:

SPSS

然後開始計算卡方值,卡方值的計算公式為: K^2 = n (ad - bc) ^ 2 / [(a+b)(c+d)(a+c)(b+d)] 其中a、b、c、d分別對應的值如下圖:(其中n=a+b+c+d為樣本容量)。

SPSS

因此計算得到的卡方值=(10+3+3+4)*(10*4-3*3)^2/[(10+3)(3+4)(10+3)(3+4)]=2.321

細心的朋友可能會發現,這個計算公式跟我們上面計算的公式寫法有點不一樣,其實是經過公式變形的,上面是為了更好地理解卡方的含義,下面這個公式是變形後,比較好記的公式。

這個時候,我們檢視卡方表如下圖:

SPSS

可以看到,自由度為1,顯著性水平為0.05的卡方臨界值為3.84,我們計算得到的卡方2.321小於3.84,說明年收入為1或者2,對結婚或者不結婚沒有顯著影響,因此可以合併,所以會將收入為[1]、[2]合併為[1,2];接下來計算[3]、[4]的卡方,依次類推。

PS:這裡選擇的顯著性水平為0.05是可以自己設定更改的,在SPSS Modeler的CHAID演算法中可以自己設定,如下圖位置:

SPSS

Step5:重複Step3至Step4,直到任何兩個相臨組無法合併,即卡方值都不小於臨界值為止。

那麼如果輸入變數是分型別的,與上面的數值型對比,就少了一次對數值離散化的過程,直接對分類變數中的元素進行卡方檢驗及合併,最終形成“超類”,直至輸入變數的“超類”無法再合併為止。對於順序型分類輸入變數,只能合併相鄰的類別。

對資料完成預處理之後,就要選擇根節點,也就是計算輸出變數(是否結婚)與輸入變數相關性檢驗的統計量的概率P-值,即卡方值對應的P-值,P-值越小,說明輸入變數與輸出變數的關係越緊密,應當作為當前最佳分組變數。當P-值相同時,應該選擇檢驗統計量觀測值最大的輸入變數,也就是卡方最大的輸入變數。

在上面的決策樹圖中,我們可以看到,每個指標都有計算好的卡方值和P-值,從分析結果中,也可以驗證上面所說的,P-值越小,越在樹的頂端,P-值相同時,卡方越大,越在樹的頂端。

SPSS

到這裡,就解答了一開始檢視決策樹時候的兩個疑惑。

我們這個例子裡面呢,目標變數是否結婚,是分型別的變數,那麼,如果目標變數是數值型的呢?那麼在第一步的資料預處理的時候,把採用的卡方值計算改為方差計算,在第二步選擇最佳分割點的時候,使用的是方差分析計算得到F統計量的P-值,而不是卡方的P-值。

這裡以Income這個連續變數作為輸出變數(即目標)為例,得到的決策樹,對應的值就是P值以及F統計量,如下圖:

SPSS

針對這個演算法,有以下幾個特點總結下:

  • 樣本資料必須足夠大,要求樣本含量應大於40且每個格子中的理論頻數不應小於5。當樣本含量大於40但有1=<理論頻數<5時,卡方值需要校正,當樣本含量小於40或理論頻數小於1時只能用確切概率法計算概率。
  • 目標變數可以是分型別,也可以是數值型;
  • 輸入變數可以是分型別,也可以是數值型。
  • 在IBM SPSS Modeler裡面,針對 CHAID演算法,以上介紹的內容是大概的計算框架,裡面其實還開放出了許多引數可以影響這個樹的生長,比如不用Pearson 卡方,而是似然比卡方;使用互動樹生長模型來影響樹的生長;中止樹生長的規則等等。