1.觀察數據集:
在weka中打開測試集votetest.arff,觀察到數據集共有435個實例,每個實例是一個國會議員的投票信息以及派別,共有17個二元屬性,其中一個為類別屬性。並且該數據集帶有一定的缺失值。國會議員通常按照其黨政路線進行投票,本實驗通過對議員投票情況(16個屬性)對其類別屬性進行分類,得到兩種派系對政策投票的大致方案。數據集中數據沒有與實驗無關屬性,不進行過濾。
2.使用C4.5決策樹算法進行分類訓練
C4.5決策樹算法能夠處理具有缺省值的數據,使用信息增益率作為屬性選擇標准,能對生成樹剪枝(參考《數據挖掘與機器學習--WEKA應用技術與實踐》)。C4.5在weka中的實現是J48決策樹。選擇J48進行分類。
訓練結果:
使用C4.5決策樹分類器訓練數據集(435個實例),得到樹形結構如上圖所示,共有6個葉子節點。分類模型的准確率為97.2414%,正確分類的實例有423個,Kappa統計量為0.9418,平均絕對誤差為0.0519,ROC面積為0.986;混淆矩陣中被錯誤分類的數據:6個republican被誤分為democrat,6個democrat被誤分為republican。
測試:使用測試集進行預測
預測結果:
預測准確率為95%,ROC面積為0.939,20個實例中有19個預測正確,一個錯誤。根據混淆矩陣得:一個republican被錯誤分類到democrat。
3.基於規則的分類器進行分類訓練
分類模型的規則使用析取范式R=(r1 V r2 V … V rk),規則ri的形式:(Condition)->yi,規則左邊是屬性測試的合取,右邊為預測類別。本實驗采用的JRip分類器實現了命題規則學習,重復增量修剪以減少產生錯誤。(參考《數據挖掘與機器學習--WEKA應用技術與實踐》)
分類訓練構建模型:
訓練結果:
分類訓練得到的規則共有4個。分類模型的准確率為96.5517%,正確分類的實例有420個,Kappa統計量為0.9277,平均絕對誤差為0.0615,ROC面積為0.976;混淆矩陣中被錯誤分類的數據:10個republican被誤分為democrat,5個democrat被誤分為republican。
預測:
預測結果:
預測准確率為95%,ROC面積為0.939,20個實例中有19個預測正確,一個錯誤。根據混淆矩陣得:一個republican被錯誤分類到democrat。
4.基於K最近鄰算法的分類器進行分類訓練
通過找出與測試樣本相近的訓練樣本,用最近鄰的類別標簽確定測試樣本的類別標簽。IBK分類器是一種k-最鄰近分類器,可用多種不同搜索算法加快尋找最近鄰。(參考《數據挖掘與機器學習--WEKA應用技術與實踐》)
訓練結果:
K-最鄰近分類模型的准確率為99.7701%,正確分類的實例有434個,Kappa統計量為0.9951,平均絕對誤差為0.0049,ROC面積為1.000;混淆矩陣中被錯誤分類的數據:1個democrat被誤分為republican。
預測:
預測結果:對20個實例的預測全部正確,預測正確率為100%。
5、比較
在本實驗中KNN算法相比於C4.5決策樹、規則分類具有更好的分類效果
6.總結:
根據議員對各個法案的投票,采用KNN算法可以進行更准確的分類,並根據分類模型可以大概率地推測出議員所屬黨系。一個議員對法案的投票通過與否基本不會偏離所屬黨派的主要策略。那么一個議員的屬性在特征空間里相似的樣本中大多屬於某一類,則說明其觀點大多一致,屬於同一黨派。KNN算法對這種黨派分類與現實符合,從實例具有的全部屬性進行判斷。而決策樹以及規則的分類模型條件划分是對個別屬性是否來判斷確定,但是對黨派的划分條件不應該只根據局部的幾個屬性進行判斷,所以從現實角度看這兩種算法也不合適。