什麼是RIPPER演算法?


這是一種廣泛使用的稱為RIPPER的規則歸納演算法。該演算法幾乎可以線性擴充套件到多個訓練例項,並且特別適合於從具有過載類分佈的資料集中構建模型。RIPPER 也適用於噪聲資料集,因為它使用驗證集來防止模型過擬合。

RIPPER 選擇多數類作為其預設類,並理解識別少數類的規則。對於多類問題,類按其頻率排序。

令(y1 y2...yc) 為有序類,其中 y1 是頻率最低的類,yc 是頻率最高的類。在第一次迭代中,屬於 y1 的例項被標記為正例,而屬於其他類的例項被標記為負例。

可以使用順序覆蓋方法生成區分正例和負例的規則。接下來,RIPPER 提取區分 y2 與其他剩餘類的規則。重複此過程,直到我們剩下 yc,它被指定為預設類。

RIPPER 使用從一般到特定的方法來擴充套件規則,並使用 FOIL 的資料增益度量來選擇要插入規則前件的最佳合取。當規則開始覆蓋負例時,它停止插入合取。

根據新規則在驗證集上的實現對其進行剪枝。計算以下指標以確定是否需要剪枝:(p-n)/(p+n),其中 p(n) 是驗證集中被規則覆蓋的正(負)例的數量。

此指標與規則在驗證集上的準確率呈單調關係。如果剪枝後指標得到增強,則消除合取。剪枝從插入規則的最後一個合取開始完成。例如,給定規則 ABCD → y,RIPPER 首先檢查是否應剪枝 D,然後檢查 CD、BCD 等。雖然初始規則僅覆蓋正例,但剪枝後的規則可以在訓練集中覆蓋多個負例。

建立規則後,將刪除規則覆蓋的一些正例和負例。然後將規則新增到規則集中,只要它不違反停止條件,該條件基於最小描述長度原理。

如果新規則將規則集的總表示長度至少提高 d 位,則 RIPPER 停止將規則插入其規則集(預設情況下,d 選擇為 64 位)。RIPPER 使用的另一個停止條件是規則在驗證集上的錯誤率不得超過 50%。RIPPER 實施更多最佳化步驟來確定規則集中的一些現有規則是否可以由更多替代規則恢復。

更新於: 2022年2月11日

1K+ 次檢視

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.