1.分類規則原理
- if-else邏輯:前件由特征值的特定組合構成,在滿足規則的條件下,后件描述用來指定的分類值。
- 決策樹必須從上至下應用,而規則是單獨存在的事實。通常比決策樹更簡潔、直接和理解。
- 規則學習應用於以名義特征為主,或全部是名義特征的問題。
- “獨立而治之”:與決策樹的“分而治之”不同(每個決策節點會受到過去決策歷史的影響),一旦規則學習算法分離出一組案例,下一組案例可能會根據完全不同的特征,以完全不同的順序分離出來。如:所有動物——>if有皮毛(哺乳動物),else無皮毛(非哺乳)
- 分而治之和獨立而治之(覆蓋算法)都基於先到先得的思想,稱為貪婪/學習算法。
1.1 1R單規則算法
- ZeroR:無規則算法,即無需考慮特征值就能預測為最常見的類(忽略所有特征,只是預測目標的模式)。
- 1R/OneR:單規則算法,通過選擇一個單一的規則來提高ZeroR算法的性能。簡單規則通常極具預測性,它能夠識別對於目標類最具有預測性的單一特征,並利用該特征構建一個規則集。
過程:對於每一個特征,基於相似的特征值1R對數據分組,然后對於每個書分組,該算法的預測類為占多數的類。比如動物分類中若以行走途徑為規則錯誤率為2/15,若以是否有皮毛為規則錯誤率為3/15,因此1R算法基於以行走途徑為規則返回結果。
注意:如果分類水平分布很不均勻,規則學習再預測少數類時會有困難。
單一的規則可能太簡單了(大拇指規則),更復雜的任務需要考慮多個屬性,用到更高級的規則學習算法,但早期這類算法非常慢,也不准確,因此陸續提出了IREP、RIPPER、IRPE++、SLIPPER、TRIPPER等算法來提高規則學習的性能。
1.2 RIPPER算法
- RIPPER:重復增量修剪算法,對IREP(增量減少誤差修剪算法)進行改進后再生成規則,性能與決策樹相當。
- 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
4)評估性能
## Step 4: Evaluating model performance ----
summary(mushroom_1R)
准確率能達到98%以上,但錯過了120種可以食用的蘑菇。
5)提高性能
訓練JRip規則算法,從所有的可用特征中選擇規則:
## Step 5: Improving model performance ----
mushroom_JRip <- JRip(type ~ ., data = mushrooms)
mushroom_JRip
summary(mushroom_JRip)
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)
和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-如何提高模型的性能?