86-预测分析-R语言实现-树模型rpart

Python010

86-预测分析-R语言实现-树模型rpart,第1张

数据集的行是游戏玩家们玩的每一次游戏,列是某个玩家玩游戏时的速度、能力和决策,都是数值型变量。

任务是根据这些表现的衡量指标来预测某个玩家当前被分配到8个联赛中的哪一个,输出变量(LeagueIndex)是一个有序的类别变量,序号从1到8,最后一个对应的是技术最高的玩家组成的联赛。

一种对待序号输出的可能方式是把它们当作一个数值型变量,作为回归任务来建模,并构建一个回归树。GameID列表示唯一的游戏标识符,跟模型无关,可以丢弃;另外TotalHours列被识别为字符型,需要修正为数值型。

Age、HoursPerWeek和TotalHours存在缺失值,直接删除带有缺失值的行。(虽然树模型可以自动处理缺失值,但是后面还会使用其他模型来对比,那些模型不一定能处理缺失值)

使用rpart包构建回归树模型。

对于输入特征,我们会关注它用在树里任何地方时产生的优化准则(例如偏差或SSE)里的约简,将树里所有分裂的这个量值汇总起来,就得到变量重要性的相对数量。

越重要的变量会越早用来分裂数据(离根节点更近),也会更常用到。如果一个变量从来没有用过,那么就是不重要的,通过这种方式,可以用来做特征选择,但是这种方法对特征中的相关性敏感。

Logistic回归在做风险评估时,一般采用二值逻辑斯蒂回归(Binary Logistic Regression)。以滑坡灾害风险评估为例。1、滑坡发生与否分别用0和1表示(1表示风险发生,0表示风险未发生);2、确定影响滑坡风险的影响因子,这个根据区域具体情况而定,一般包括:地层岩性、植被、降水、地貌、断层、人类活动等等。如果是其他风险的话也根据具体情况而定(咨询专家就可以知道)。3、构建回归分析的样本。Logistic回归也是统计学里面的内容,所以必须得构建统计分析的样本。以构建滑坡风险统计分析的样本为例,先找出滑坡发生的地区,同时计算滑坡发生地区的各个影响因子的指标值。再选择滑坡未发生的地区,同时计算滑坡未发生地区各个影响因子的指标值。这样,就构建了统计样本,自变量为各个影响因子的指标值,应变量为0和1,。把样本导入SPSS里面进行分析,就可以构建自变量和因变量之间的非线性关系模型,然后用这个模型继续求解其他区域滑坡风险的概率值。

希望我的答案对你能有帮助!

是一个预测模型,分为回归决策树和分类决策树,根据已知样本训练出一个树模型,从而根据该模型对新样本因变量进行预测,得到预测值或预测的分类

从根节点到叶节点的一条路径就对应着一条规则.整棵决策树就对应着一组表达式规则。叶节点就代表该规则下得到的预测值。如下图决策树模型则是根据房产、结婚、月收入三个属性得到是否可以偿还贷款的规则。

核心是如何从众多属性中挑选出具有代表性的属性作为决策树的分支节点。

最基本的有三种度量方法来选择属性

1. 信息增益(ID3算法)

信息熵

一个信源发送出什么符号是不确定的,衡量它可以根据其出现的概率来度量。概率大,出现机会多,不确定性小;反之不确定性就大。不确定性函数f是概率P的 减函数 。两个独立符号所产生的不确定性应等于各自不确定性之和,即f(P1,P2)=f(P1)+f(P2),这称为可加性。同时满足这两个条件的函数f是对数函数,即

在信源中,考虑的不是某一单个符号发生的不确定性,而是要考虑这个信源所有可能发生情况的平均不确定性。因此,信息熵被定义为

决策树分类过程

2、增益率(C4.5算法)

由于信息增益的缺点是:倾向于选择具有大量值的属性,因为具有大量值的属性每个属性对应数据量少,倾向于具有较高的信息纯度。因此增益率使用【信息增益/以该属性代替的系统熵(类似于前面第一步将play换为该属性计算的系统熵】这个比率,试图克服这种缺点。

g(D,A)代表D数据集A属性的信息增益,

3. 基尼指数(CART算法)

基尼指数:

表示在样本集合中一个随机选中的样本被分错的概率。越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高。

假设集合中有K个类别,则:

说明:

1. pk表示选中的样本属于k类别的概率,则这个样本被分错的概率是(1-pk)

2. 样本集合中有K个类别,一个随机选中的样本可以属于这k个类别中的任意一个,因而对类别就加和

3. 当为二分类是,Gini(P) = 2p(1-p)

基尼指数是将属性A做二元划分,所以得到的是二叉树。当为离散属性时,则会将离散属性的类别两两组合,计算基尼指数。

举个例子:

如上面的特征Temperature,此特征有三个特征取值: “Hot”,“Mild”, “Cool”,

当使用“学历”这个特征对样本集合D进行划分时,划分值分别有三个,因而有三种划分的可能集合,划分后的子集如下:

对于上述的每一种划分,都可以计算出基于 划分特征= 某个特征值 将样本集合D划分为两个子集的纯度:

决策数分类过程

先剪枝 :提前停止树的构建对树剪枝,构造树时,利用信息增益、统计显著性等,当一个节点的划分导致低于上述度量的预定义阈值时,则停止进一步划分。但阈值的确定比较困难。

后剪枝 :更为常用,先得到完全生长的树,再自底向上,用最下面的节点的树叶代替该节点

CART使用代价复杂度剪枝算法 :计算每个节点剪枝后与剪枝前的代价复杂度,如果剪去该节点,代价复杂度较小(复杂度是树的结点与树的错误率也就是误分类比率的函数),则剪去。

C4.5采用悲观剪枝 :类似代价复杂度,但CART是利用剪枝集评估代价复杂度,C4.5是采用训练集加上一个惩罚评估错误率

决策树的可伸缩性

ID3\C4.5\CART都是为较小的数据集设计,都限制训练元祖停留再内存中,为了解决可伸缩性,提出了其它算法如

RainForest(雨林):对每个属性维护一个AVC集,描述该结点的训练元组,所以只要将AVC集放在内存即可

BOAT自助乐观算法:利用统计学,创造给定训练数据的较小样本,每个样本构造一个树,导致多颗树,再利用它们构造1颗新树。优点是可以增量的更新,当插入或删除数据,只需决策树更新,而不用重新构造。

决策树的可视化挖掘

PBC系统可允许用户指定多个分裂点,导致多个分支,传统决策树算法数值属性都是二元划分。并且可以实现交互地构建树。

rpart是采用cart算法,连续型“anova”离散型“class”

2)进行剪枝的函数:prune()

3)计算MAE评估回归树模型误差,这里将样本划分成了训练集和测试集,testdata为测试集

rt.mae为根据训练集得到的决策树模型对测试集因变量预测的结果与测试集因变量实际值得到平均绝对误差