【機器學習與R語言】5-規則學習算法


1.分類規則原理

  • if-else邏輯:前件由特征值的特定組合構成,在滿足規則的條件下,后件描述用來指定的分類值。
  • 決策樹必須從上至下應用,而規則是單獨存在的事實。通常比決策樹更簡潔、直接和理解。
  • 規則學習應用於以名義特征為主,或全部是名義特征的問題。
  • “獨立而治之”:與決策樹的“分而治之”不同(每個決策節點會受到過去決策歷史的影響),一旦規則學習算法分離出一組案例,下一組案例可能會根據完全不同的特征,以完全不同的順序分離出來。如:所有動物——>if有皮毛(哺乳動物),else無皮毛(非哺乳)
  • 分而治之和獨立而治之(覆蓋算法)都基於先到先得的思想,稱為貪婪/學習算法。

1.1 1R單規則算法

  • ZeroR:無規則算法,即無需考慮特征值就能預測為最常見的類(忽略所有特征,只是預測目標的模式)。
  • 1R/OneR:單規則算法,通過選擇一個單一的規則來提高ZeroR算法的性能。簡單規則通常極具預測性,它能夠識別對於目標類最具有預測性的單一特征,並利用該特征構建一個規則集。

image.png
過程:對於每一個特征,基於相似的特征值1R對數據分組,然后對於每個書分組,該算法的預測類為占多數的類。比如動物分類中若以行走途徑為規則錯誤率為2/15,若以是否有皮毛為規則錯誤率為3/15,因此1R算法基於以行走途徑為規則返回結果。
注意:如果分類水平分布很不均勻,規則學習再預測少數類時會有困難。

不完全層現
單一的規則可能太簡單了(大拇指規則),更復雜的任務需要考慮多個屬性,用到更高級的規則學習算法,但早期這類算法非常慢,也不准確,因此陸續提出了IREP、RIPPER、IRPE++、SLIPPER、TRIPPER等算法來提高規則學習的性能。

1.2 RIPPER算法

  • RIPPER:重復增量修剪算法,對IREP(增量減少誤差修剪算法)進行改進后再生成規則,性能與決策樹相當。

image.png

  • RIPPER過程:生長——修剪——優化
  • 分類規則也可以直接從決策樹獲得。即嵌套if-else結構。缺點:這樣產生的規則比從規則學習算法學到的規則更復雜,分而治之策略是有偏的,與規則學習的結果會不同。

2. 規則學習應用示例

應用規則學習識別有毒的蘑菇

1)收集數據

8124個蘑菇案例的22個特征,額外一列包含有毒和無毒信息。
數據下載:

鏈接: https://pan.baidu.com/s/1nrLEXkdISPSn1DLkjaPbMA 提取碼: mhvr

2)探索和准備數據

## Example: Identifying Poisonous Mushrooms ----
## Step 2: Exploring and preparing the data ---- 
mushrooms <- read.csv("mushrooms.csv", stringsAsFactors = TRUE)

# examine the structure of the data frame
str(mushrooms)

# drop the veil_type feature
mushrooms$veil_type <- NULL

# examine the class distribution
table(mushrooms$type)

3)訓練數據

## Step 3: Training a model on the data ----
library(RWeka)

# train OneR() on the data
mushroom_1R <- OneR(type ~ ., data = mushrooms)

mushroom_1R

特征氣味odor被選為規則生成

4)評估性能

## Step 4: Evaluating model performance ----
summary(mushroom_1R)

image.png
准確率能達到98%以上,但錯過了120種可以食用的蘑菇。

5)提高性能

訓練JRip規則算法,從所有的可用特征中選擇規則:

## Step 5: Improving model performance ----
mushroom_JRip <- JRip(type ~ ., data = mushrooms)
mushroom_JRip
summary(mushroom_JRip)

image.png
image.png

JRip分類器學習了9條規則。准確度提高到100%。

6)選擇決策樹中的分類規則

看一下,選擇了兩個特征,比較比較。

# Rule Learner Using C5.0 Decision Trees (not in text)
library(C50)
mushroom_c5rules <- C5.0(type ~ odor + gill_size, data = mushrooms, rules = TRUE) #rules分類規則生成一個模型
summary(mushroom_c5rules)

image.png
和1R算法的結果一樣。


機器學習與R語言系列推文匯總:
【機器學習與R語言】1-機器學習簡介
【機器學習與R語言】2-K近鄰(kNN)
【機器學習與R語言】3-朴素貝葉斯(NB)
【機器學習與R語言】4-決策樹
【機器學習與R語言】5-規則學習
【機器學習與R語言】6-線性回歸
【機器學習與R語言】7-回歸樹和模型樹
【機器學習與R語言】8-神經網絡
【機器學習與R語言】9-支持向量機
【機器學習與R語言】10-關聯規則
【機器學習與R語言】11-Kmeans聚類
【機器學習與R語言】12-如何評估模型的性能?
【機器學習與R語言】13-如何提高模型的性能?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM