R 分而治之——规则学习(Machine Learning With R by Brett Lantz)

来自 Machine Learning With R by Brett Lantz

基本背景

学习 Machine Learning With R by Brett Lantz 第五章——分治/规则学习

规则学习

规则学习,确切地说,属于独立而治的范畴。独立而治不受到过去决策历史的影响,而分而治则可能会。

采用 if-else 逻辑语句形式,对未标记的案例指定一个分类。与决策树类似,可用来为今后的行动形成认识:

  • 确定导致机械故障的条件;
  • 描述人群的界定特征用于客户细分;
  • 发现先于股票市场上股价大跌或大涨的市况。

与决策树不同,决策树必须从上至下地应用,而规则是单独存在的事实。有的时候,决策树会给任务带来一组特定的偏差,而规则学习可通过直接识别规则而避免偏差。

1R

1R,一种单规则算法。

这种算法的优点是,可以生成一个单一的,易于理解的,人类可读的经验法则,且结果往往表现较好;缺点是,只是用一个特征,,可能过于简单。

RIPPER

RIPPER(Repeated Incremental Pruning to Produce Error Reduction),即重复增量修剪算法,基于 IREP 算法改进。

此算法的优点是,生成的规则简单易读,对大数据集和噪声数据集有效;缺点是,处理数值型数据不太理想,性能可能不如复杂模型。

其过程个笼统地理解为:

  1. 生长;
  2. 修剪;
  3. 优化。

规则学习识别毒蘑菇

利用 Java Weka 的 R 绑定,使用 1R 和 RIPPER 分类器。

读取数据

载入 RWeka,读取数据集。

library('RWeka')

mushrooms <- read.csv('mushrooms.csv', stringsAsFactors = TRUE)

# The 'veil_type' is useless
mushrooms$veil_type <- NULL

1R

mushroom_1R <- OneR(type ~ ., data = mushrooms)

=== Summary ===

Correctly Classified Instances        8004               98.5229 %
Incorrectly Classified Instances       120                1.4771 %
Kappa statistic                          0.9704
Mean absolute error                      0.0148
Root mean squared error                  0.1215
Relative absolute error                  2.958  %
Root relative squared error             24.323  %
Total Number of Instances             8124

=== Confusion Matrix ===

    a    b   <-- classified as
 4208    0 |    a = e
  120 3796 |    b = p

(注:Confusion Matrix 类似混淆矩阵)

采用气味(odor)作为规则,8124 种蘑菇中有 120 种无毒蘑菇被归为有毒,正确率达 98.5 % 。

RIPPER

mushroom_JRip <- JRip(type ~ ., data = mushrooms)

=== Summary ===

Correctly Classified Instances        8124              100      %
Incorrectly Classified Instances         0                0      %
Kappa statistic                          1
Mean absolute error                      0
Root mean squared error                  0
Relative absolute error                  0      %
Root relative squared error              0      %
Total Number of Instances             8124

=== Confusion Matrix ===

    a    b   <-- classified as
 4208    0 |    a = e
    0 3916 |    b = p

RIPPER 分类器从 mushroom 数据中学习了 9 条规则,构成一个 if-else 列表,此处正确率达到了 100 % 。

参考:

  1. Machine Learning With R by Brett Lantz

作者: YanWen

Web 开发者

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s