数据挖掘决策树—R实现
决策树
决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。分类树(决策树)是一种十分常用的分类方法。它是一种监督学习,所谓监督学习就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类。这样的机器学习就被称之为监督学习。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy = 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法使用熵。这一度量是基于信息学理论中熵的概念。

一、决策树概述
分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性(features),叶结点表示一个类(labels)。
1. 决策树算法思想
决策树(decision tree)是机器学习中常见的分类与回归方法,是一种呈树形结构的判别模型。决策树可以看做一个互斥且完备的if-then规则集合。同时决策树还表示定义在特征条件下类的条件概率分布,条件概率分布将特征空间划分为互不相交的单元(cell)或区域(region),每个单元定义一个类的概率分布就构成了一个条件概率分布。用决策树对需要测试的实例进行分类:从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点;这时,每一个子结点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶结点。最后将实例分配到叶结点的类中。
决策树学习本质上是从训练集中归纳出一组分类规则,是训练数据矛盾较小,同时具有很好的泛化性能。决策树的损失函数通常是正则化的极大似然函数,学习的目标是以损失函数为目标函数的最小化。决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。


2. 决策树的基本流程
决策树学习通常是一个递归选择最优特征,并根据该特征对训练数据机型分割,使得对各个之数据集有一个最好的分类的过程。其算法可以描述为如下过程:
step0:如果特征数量很多,可以先在决策树学习开始之前对特征进行筛选,只留下对训练数据有足够分类能力的特征,其实就是数据降维(此步不是必须的!)
step1:构建根结点,将所有训练数据都放在根结点
step2:选择一个最优特征,按照这一特征把当前结点的数据分割成子集。如果这些子集已经能够基本正确分类,转step3;否则,对于每一个结点,转step2
step3:将该节点构建成叶结点
step4:在决策树构造完成之后,需要对决策树自下而上进行剪枝,将树变得更加简单,从而使得它具有更好的泛化能力(具体就是去掉过于细分的叶结点,使其回退到父结点,甚至更高的结点,然后将父结点或更高的结点改为新的叶结点)
经过上述过程之后,所有训练数据都被分到叶结点上,即都有了明确的分类,这就生成了一颗决策树。注意到,对于训练集能够进行正确分类的决策树可能有多个,也可能没有,我们需要的只是一个与训练集矛盾较小的决策树,同时具有很好的泛化能力(不仅仅对训练集有好的拟合,对测试集也应该有很好的预测)。从所有可能的决策树中选取最优决策树是NP完全问题,因此在实际中的决策树学习算法通常采用启发式方法,近似求解这一最优化问题,这样子得到的决策树是次最优的。
3. 决策树计算示例
生活中的决策树。今天我想网购台电脑,刷到一台看着挺带劲的机子,在决定买不买之前,我心路历程是这样的:这台笔记本价格还可以,7000 多,没超过 8000 ,在我的可接受范围内;emmm,牌子是 xxx ,名牌值得信赖;再看看配置i7,固态+机械,显存 8G,内存16G,这个配置一看就是游戏本,我喜欢。看看评价如何?这么多差评,差评率也太高了...告辞告辞。看到没,刚刚的心路历程就是一个决策过程。我通过品牌、价格、配置、差评率等属性来决定“买还是不买 ”。再举一个例子:给出如下的一组数据,一共有十个样本(学生数量),每个样本有分数,出勤率,回答问题次数,作业提交率四个属性,最后判断这些学生是否是好学生。

然后用这一组附带分类结果的样本可以训练出多种多样的决策树,最后一列给出了人工分类结果。

二、 决策树R实现
1. 决策树的数据结构
决策树用到的数据结构如下图所示。
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5.0 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
2. R处理程序
rm(list = ls())
install.packages("party")
library(party)
data(iris) #数据输入
head(iris,5)
#建构决策树模型
output<-ctree(Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width,iris)
plot(output)
plot(output,type="simple")


3. 计算结果
predtree<-predict(output,iris) #利用预测集进行预测
table(iris$Species,predtree,dnn=c("真实值","预测值")) #输出混淆矩阵
预测值
真实值 setosa versicolor virginica
setosa 50 0 0
versicolor 0 49 1
virginica 0 5 45 #决策树模型的评估
4.泛化外推预测
row1=c(4.5,2.7,3.1,4.2,0)
names(row1)<-c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width","Species")
row1=t(row1)
row1=as.data.frame(row1) #泛化数据
lei<-predict(output,row1)
[1] virginica #所属类别
Levels: setosa versicolor virginica
三、总结
决策树(Decision Tree)算法是一种基本的分类与回归方法,是最经常使用的数据挖掘算法之一。我们这章节只讨论用于分类的决策树。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是 if-then 规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。决策树学习通常包括 3 个步骤:特征选择、决策树的生成和决策树的修剪。这些基于树的学习算法被认为是最好和最常用的监督学习方法之一:决策树、随机森林、梯度提升等方法在各种数据科学问题中得到了广泛应用。对于每一个机器学习的初学者来说,学习这些算法并将其用于建模非常重要。

参考文献
(R语言——决策树模型)[https://blog.csdn.net/weixin_45387160/article/details/103335715]
数据挖掘决策树—R实现的更多相关文章
- 数据挖掘算法R语言实现之决策树
数据挖掘算法R语言实现之决策树 最近,看到很多朋友问我如何用数据挖掘算法R语言实现之决策树,想要了解这方面的内容如下: > library("party")导入数据包 > ...
- 《数据挖掘:R语言实战》
<数据挖掘:R语言实战> 基本信息 作者: 黄文 王正林 丛书名: 大数据时代的R语言 出版社:电子工业出版社 ISBN:9787121231223 上架时间:2014-6-6 出版 ...
- 数据挖掘 决策树 Decision tree
数据挖掘-决策树 Decision tree 目录 数据挖掘-决策树 Decision tree 1. 决策树概述 1.1 决策树介绍 1.1.1 决策树定义 1.1.2 本质 1.1.3 决策树的组 ...
- 大数据时代的精准数据挖掘——使用R语言
老师简介: Gino老师,即将步入不惑之年,早年获得名校数学与应用数学专业学士和统计学专业硕士,有海外学习和工作的经历,近二十年来一直进行着数据分析的理论和实践,数学.统计和计算机功底强悍. 曾在某一 ...
- 【转载】R中有关数据挖掘的包
下面列出了可用于数据挖掘的R包和函数的集合.其中一些不是专门为了数据挖掘而开发,但数据挖掘过程中这些包能帮我们不少忙,所以也包含进来. 1.聚类 常用的包: fpc,cluster,pvclust,m ...
- 一篇文章教你如何用R进行数据挖掘
一篇文章教你如何用R进行数据挖掘 引言 R是一种广泛用于数据分析和统计计算的强大语言,于上世纪90年代开始发展起来.得益于全世界众多 爱好者的无尽努力,大家继而开发出了一种基于R但优于R基本文本编辑器 ...
- R1(下)—数据挖掘—关联规则理论介绍与R实现
Apriori algorithm是关联规则里一项基本算法.是由Rakesh Agrawal和Ramakrishnan Srikant两位博士在1994年提出的关联规则挖掘算法.关联规则的目的就是在一 ...
- [R]R包版本更迭【持续更新】
由于R版本更迭,网上或旧的教材上的包可能没有在维护,或者被其他包替代. 做一个表记录碰到的一些替代方案.个人向,非完整指南. * mvpart 2014年之后不再更新,R 3.0版本后无法安装, 提示 ...
- 数据挖掘中 决策树算法实现——Bash
数据挖掘中 决策树算法实现——Bash 博客分类: 数据挖掘 决策树 bash 非递归实现 标准信息熵 数据挖掘决策树bash非递归实现标准信息熵 一.决策树简介: 关于决策树,几乎是数据挖掘分类算法 ...
- R语言进阶
一.初学入门:<R in Action><The Art of_R Programming>入门者可首选两本,前者从统计角度入手,分高中低三部分由浅入深的讲解了如何用R来实现统 ...
随机推荐
- element NavMenu侧栏导航菜单(可折叠)
展示效果如图: 代码: <el-scrollbar class="scrollbar-wrapper"> <!-- el-scrollbar超长可滚动 --> ...
- Compose Modifier Clip 圆角
Row( modifier = Modifier .fillMaxWidth() .padding(20.dp) // 圆角 .clip(RoundedCornerShape(15.dp)) .cli ...
- 学Java的第5天,今天做了个双色球系统
今天是学JAVA的第5天,刚刚把方法学完,然后就在这做黑马的题. 用了一个多小时时间,把他的 这些题都做完了 但是最后一道题,这个双色球系统我感觉挺有意思的 我看到这个题,分析后感觉需要4种方法: 1 ...
- Linux命令之nc命令
1.简介 nc是netcat的简写,是一个功能强大的网络工具,有着网络界的瑞士军刀美誉.nc命令在linux系统中实际命令是ncat,nc是软连接到ncat.nc命令的主要作用如下: 实现任意TCP/ ...
- IDEA 2018.3.*本地启动tomcat项目无法设置Application context localhost 404
记录一个开发中遇到的坑,网上找了好久才找到一个能解决的办法,特此转载一下. 旧版的idea启动web项目,在tomcat配置环节,有设置Application content的功能.我们可以设置成&q ...
- 狐漠漠养成日记 Cp.00002 第一周
主要目标 (1)考研 考研数学二16-22年的真题卷(已完成真题卷:0/7) 记忆考研英语中高频词汇(已记忆词汇:高频:0/10:中频:0/10) 考研英语二16-22年的真题卷(已完成真题卷:0/7 ...
- android 下载安装包更新app
1下载 public void download(String url) { Utils.Loge("download",url); Uri uri = Uri.parse(url ...
- 微信小程序地理定位和城市选择列表
1.先获取用户是否授权地理定位,如果没有让其跳转到设置页面手动开启(获取到的位置是经纬度,需要借助其他地图SDK的地址逆解析获取省市区的名字) getSetting() { wx.getSetting ...
- CF823div2B
cf823div2B 题目链接 题目大意 多组测试数据,有\(n\)个点在数轴上,他们想要集会,每个点到目标点\(y\)的时间为$$t_i+|x_i-y|$$ 试求所有点到\(y\)中最长时间的最小值 ...
- CentOS 安装 jdk1.8
转自:https://www.cnblogs.com/yjlch1016/p/8900841.html 前置条件:不使用openjdk,若想使用openjdk.直接在centos下 使用 yum 查 ...