規則學習算法

規則學習(獨立而治之)

決策樹會給任務帶來一組特定的偏差,而規則學習可通過直接識別規則而避免偏差。規則學習通常應用於以名義特徵爲主或全部是名義特徵的問題,規則學習擅長識別偶發事件,即使偶發事件只是因爲特徵之間非常特殊的相互作用才發生的

決策樹必須從上至下的應用,而規則是單獨存在的事實。根據相同數據建立的模型,規則學習的結果往往比決策樹的結果更加簡潔、直觀、容易理解。規則學習算法數據的利用基於先到先得思想,但規則學習算法的規則只有在準確時纔有用

單規則(1R)算法:

簡單規則通常極具預測性,通過選擇一個單一規則來提高ZeroR算法(規則學習)的性能。即對於每一個特徵,基於相同|相似的特徵值1R對數據分組(針對每一個數據分組,算法的預測類爲佔多數的類)。規則錯誤率的計算基於每一個特徵,將犯最少錯誤的規則選爲唯一的規則

重複增量修剪算法RIPPER(生長-修剪-優化):

RIPPER算法是規則學習算法經過多次迭代後進化而來,性能與決策樹相當,甚至超過決策樹。優點:生成易於理解的,人類可讀的規則;對大數據集和噪聲數據有效;通常比決策樹產生的模型更簡單

缺點:可能會產生違反常理或專家知識的規則;處理數值型數據不太理想;性能有可能不如更復雜的模型

生長過程採用獨立而治之技術,對規則不斷地添加條件,直到該規則能完全劃分出一個數據子集或沒有屬性可用於下一步分割,與決策樹相似信息增益可用於決定下一個分割屬性,當增加一個特徵規則而熵值不再減小,該規則需要立即修剪,重複第一步+第二步,直到達到一個停止準則

#RWeka包中稱爲OneR()函數實現1R算法

library(RWeka)
m<-OneR(class~predictors,data=mydata);
#class目標變量,predictors預測變量+分隔,函數返回一個1R模擬對象,該對象能夠用於預測
#查看該算法創建的規則
m
#獲得關於OneR分類器的更多統計信息
summary(m)	#包含混淆矩陣

p<-predit(m,test)
#test包含測試數據的數據框,兩者有同樣的特徵,返回含有預測類別值的向量

對於更加複雜的規則學習算法,使用JRip()函數,一個基於java實現的RIPPER規則學習算法,使用方法同上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章