【机器学习与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个特征,额外一列包含有毒和无毒信息。
数据下载:
链接: 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-如何提高模型的性能?
【机器学习与R语言】5-规则学习算法的更多相关文章
- 【机器学习与R语言】13- 如何提高模型的性能?
目录 1.调整模型参数来提高性能 1.1 创建简单的调整模型 2.2 定制调整参数 2.使用元学习来提高性能 2.1 集成学习(元学习)概述 2.2 bagging 2.3 boosting 2.4 ...
- 【机器学习与R语言】12- 如何评估模型的性能?
目录 1.评估分类方法的性能 1.1 混淆矩阵 1.2 其他评价指标 1)Kappa统计量 2)灵敏度与特异性 3)精确度与回溯精确度 4)F度量 1.3 性能权衡可视化(ROC曲线) 2.评估未来的 ...
- 【机器学习与R语言】11- Kmeans聚类
目录 1.理解Kmeans聚类 1)基本概念 2)kmeans运作的基本原理 2.Kmeans聚类应用示例 1)收集数据 2)探索和准备数据 3)训练模型 4)评估性能 5)提高模型性能 1.理解Km ...
- 【机器学习与R语言】10- 关联规则
目录 1.理解关联规则 1)基本认识 2)Apriori算法 2.关联规则应用示例 1)收集数据 2)探索和准备数据 3)训练模型 4)评估性能 5)提高模型性能 1.理解关联规则 1)基本认识 购物 ...
- 【机器学习与R语言】9- 支持向量机
目录 1.理解支持向量机(SVM) 1)SVM特点 2)用超平面分类 3)对非线性空间使用核函数 2. 支持向量机应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高性能 ...
- 【机器学习与R语言】8- 神经网络
目录 1.理解神经网络 1)基本概念 2)激活函数 3)网络拓扑 4)训练算法 2.神经网络应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高性能 1.理解神经网络 1) ...
- 【机器学习与R语言】7-回归树和模型树
目录 1.理解回归树和模型树 2.回归树和模型树应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高模型性能 1.理解回归树和模型树 决策树用于数值预测: 回归树:基于到达 ...
- 【机器学习与R语言】4-决策树
目录 1.决策树原理 2.决策树应用示例 2.1)收集数据 2.2)探索和准备数据 2.3)训练模型 2.4)评估模型性能 2.5)提高模型性能 通过自适应增强算法(boosting) 将惩罚因子分配 ...
- 【机器学习与R语言】3-概率学习朴素贝叶斯(NB)
目录 1.理解朴素贝叶斯 1)基本概念 2)朴素贝叶斯算法 2.朴素贝斯分类应用 1)收集数据 2)探索和准备数据 3)训练模型 4)评估模型性能 5)提升模型性能 1.理解朴素贝叶斯 1)基本概念 ...
随机推荐
- Noip模拟49 2021.9.7
T1 reverse 又一道板子打假的挂分题,直接挂到倒二.. 考场上思路神奇,居然想到用$bfs$建边然后跑最短路, 其实当时也想到了直接$bfs$,但是不知道为啥觉得$dij$屌就没直接打$bfs ...
- C语言编程基础有网盘资料哦
刚开始看STM32的库函数,会有很多疑惑,例如指针怎么用,结构体跟指针怎么配合,例如函数的参数有什么要求,如何实时更新IO口的数据等.如果重新进行C语言的学习,那么要学很久才能够系统地认识.本文则将比 ...
- uvm中类继承和phase
1,uvm中类继承关系如下所示 2,uvm中phase如下所示
- hdu 1069 Monkey and Banana(记忆搜)
题意: N(不超过30)种木块,每种木块有长.宽.高x,y,z. 木块A可以搭在木块B上当且仅当A的底面长和宽都分别小于B的顶面的长与宽,即不能有超出B的部分. 问垒起来的"木块塔" ...
- kail入侵win2003 sp2 中文版系统
攻击机:kail -- IP:192.168.74.132 目标靶机:win2003 sp2 中文版系统-- IP:192.168.74.128 一.扫描漏洞 1. 在kail中运行 namp 192 ...
- oracle 定时任务增、删、改、查
增: 创建一个计划任务 begin sys.dbms_job.submit(job=>:job, what=>'要定时执行的存储过程名:',--例如:包名.存储过程名; 记得写分号 ne ...
- Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused
zabbix 监控连接失败 1.查看配置文件端口,server端口10051开启正常,agent端10050开启正常 2.查看/var/log/zabbix/zabbix_server.log./va ...
- 如何在SimpleNVR用Excel表格将通道配置简单化
进入本世纪的第三个十年,流媒体们"绞尽脑汁",依靠技术不断提升用户的体验感.熟悉SimpleNVR的用户都知道,目前SimpleNVR已实现对接自有流媒体服务器平台,不限制观看人数 ...
- NAT & 防火墙
NAT 网络地址转换 NAT产生背景 今天,无数快乐的互联网用户在尽情享受Internet带来的乐趣.他们浏览新闻,搜索资料,下载软件,广交新朋,分享信息,甚至于足不出户获取一切日用所需.企业利用互联 ...
- 解决一次gitlab因异常关机导致启动失败
解决一次gitlab因异常关机导致启动失败 目录 解决一次gitlab因异常关机导致启动失败 1. 服务器异常关机 2. gitlab服务 2.1 进入gitlab容器内部 2.2 检查gitlab各 ...