300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > r语言c50算法的过程 【机器学习与R语言】5-规则学习算法

r语言c50算法的过程 【机器学习与R语言】5-规则学习算法

时间:2020-04-18 04:16:50

相关推荐

r语言c50算法的过程 【机器学习与R语言】5-规则学习算法

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个特征,额外一列包含有毒和无毒信息。

数据下载:

2)探索和准备数据

## Example: Identifying Poisonous Mushrooms ----

## Step 2: Exploring and preparing the data ----

mushrooms

# examine the structure of the data frame

str(mushrooms)

# drop the veil_type feature

mushrooms$veil_type

# 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

mushroom_1R

4)评估性能

## Step 4: Evaluating model performance ----

summary(mushroom_1R)

准确率能达到98%以上,但错过了120种可以食用的蘑菇。

5)提高性能

训练JRip规则算法,从所有的可用特征中选择规则:

## Step 5: Improving model performance ----

mushroom_JRip

mushroom_JRip

summary(mushroom_JRip)

JRip分类器学习了9条规则。准确度提高到100%。

6)选择决策树中的分类规则

看一下,选择了两个特征,比较比较。

# Rule Learner Using C5.0 Decision Trees (not in text)

library(C50)

mushroom_c5rules

summary(mushroom_c5rules)

和1R算法的结果一样。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。