WEKA把分類(Classification)和迴歸(Regression)

weixin_34214500發表於2018-06-17

1 簡介

WEKA把分類(Classification)和迴歸(Regression)都放在“Classify”選項卡中,我們希望根據一個樣本的一組特徵,對目標進行預測。為了實現這一目的, 我們需要有一個訓練資料集,這個資料集中每個例項的輸入和輸出都是已知的。觀察訓練集中的例項,可以建立起預測的模型。有了這個模型,我們就可以新的輸出未知的例項進行預測了,衡量模型的好壞就在於預測的準確程度。

在WEKA中,待預測的目標(輸出)被稱作Class屬性,這應該是來自分類任務的“類”。一般的,若Class屬性是分型別時我們的任務才叫分類,Class屬性是數值型時我們的任務叫回歸。

這裡介紹用C4.5決策樹演算法對資料建立起分類模型,C4.5演算法可以處理數值型的屬性。

首先選擇資料來源,然後切換到“Classify”選項卡,點選“Choose”按鈕後可以看到很多分類或者回歸的演算法分門別類在一個樹型框裡。 樹型框下方有一個“Filter...”按鈕,點選可以根據資料集的特性過濾掉不合適的演算法。選擇“trees”下的“J48”,這就是需要的C4.5演算法。

2 引數介紹:

binarySplits 是否使用二進位制分裂名詞性屬性;預設False
confidenceFactor 用於修剪的置信因子(小於該值導致修剪);預設0.25
debug 設定為true,則分類器可能在控制檯輸出另外的資訊;預設False
minNumObj 每個葉的最小例項數量;預設2
numFolds 決定用於reduced-error(減少-誤差)修剪的資料量;一折用於修剪,另外的用於建樹;預設3
reducedErrorPruning 是否使用減少-誤差修剪,而不是C4.5修剪;預設:False
saveInstanceData 是否為了展示儲存訓練資料;預設:False
seed 減少-誤差修剪時,用於隨機化資料的種子;預設:1
subtreeRaising 修剪樹的時候是否考慮子樹上升操作;預設:True
unpruned 修剪是否需要;預設:False
useLaplace 是否葉節點基於拉普拉斯平滑;預設:False
修剪的方式:存在C.4.5修剪,和減少-誤差修剪;reducedErrorPruning控制,預設是C.4.5修剪;
是否修剪:unpruned控制,預設是修剪;
如果沒有專門設定檢驗資料集,為了保證生成的模型的準確性而不至於出現過擬合(overfitting)的現象,有必要採用交叉驗證(一般選擇10-fold cross validation)來選擇和評估模型。

右鍵點選“Results list”中項,彈出選單中選擇“Visualize tree”,新視窗裡可以看到圖形模式的決策樹。建議把這個新視窗最大化,然後點右鍵,選“Fit to screen”,可以把這個樹看清楚些。
解釋一下“Confusion Matrix”的含義:
=== Confusion Matrix ===
a b <-- classified as
741 24 | a = YES
10 582 | b = NO
這個矩陣是說,原本“pep”是“YES”的例項,有741個被正確的預測為 “YES”,有24個錯誤的預測成了“NO”;原本“pep”是“NO”的例項,有10個被錯誤的預測為“YES”,有582個正確的預測成了“NO”。 741+24+10+582 = 1375是例項總數,而(741+582)/1375 = 0.96218正好是正確分類的例項所佔比例。

我們要用生成的模型對那些待預測的資料集進行預測了,注意待預測資料集和訓練用資料集各個屬性的設 置必須是一致的。WEKA中並沒有直接提供把模型應用到帶預測資料集上的方法,我們要採取間接的辦法。
在“Test Opion”中選擇“Supplied test set”,並且“Set”成要驗證的檔案,“Start”一次。
右鍵點選“Result list”中剛產生的那一項,選擇“Visualize classifier errors”。點“Save”按鈕,將結果儲存。這個ARFF檔案中就有我們需要的預測結果。在“Explorer”的“Preprocess”選項卡中開啟這個新檔案,可以看到多了兩個屬性 “Instance_number”和“predictedpep”。“Instance_number”是指一個例項在原檔案中的位置,“predictedpep”就是模型預測的結果。點“Edit”按鈕或者在“ArffViewer”模組中開啟可以查 看這個資料集的內容。


11634944-884f92b05f6e921c.png
這是一張圖

相關文章