机器学习-决策树

机器学习的算法分类

监督学习

定义:

输入的数据是由输入特征值和目标值所组成。函数的输出可以是一个连续的值(成为回归),或是输出的是有限个离散值(成为分类)。

分类

k-临近算法、贝叶斯算法、决策树与随机森林、逻辑回归

回归

线性回归、岭回归

无监督学习

定义

输入数据是由输出特征值所组成。

聚类

k-means

决策树

sklearn建模的基本流程

在这里插入图片描述

拟合度

拟合度可简单理解为模型对于数据集背后客观规律的掌握程度,模型对于给定数据集如果拟合度较差,则对规律的捕捉不完全,用作分类和预测时可能准确率不高,换句话说,当模型把训练样本学得"太好"了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本的普遍性质,这时候所选的模型的复杂度往往会比真模型更高,这样就会导致泛化性能下降。这种现象称为过拟合(overfitting);欠拟合(underfitting),是指模型学习能力低下,导致对训练样本的一般性质尚未学好。

重要参数

分类树的criterion

对于分类树来说,衡量“最佳”的指标叫做”不纯度“。不纯度越低,决策树对训练集的拟合越好。树中的每个节点都有一个不纯度,并且子节点的不纯度一定低于父节点的,在同一颗树上,叶子节点的不纯度最低。

criterion这个参数正是用来决定不纯度的计算方法的。sklearn的两种选择“信息熵”(Entropy)和“基尼系数”(Gini)。

因为信息熵对不纯度更加敏感,所以信息熵作为指标时,决策树的生长会更加“精细”,因此对于高维数据或者噪音很多的数据,信息熵很容易过拟合,基尼系数在这种情况下效果往往比较好。当模型拟合程度不足(欠拟合)的时候,即当模型在训练集和测试集上都表现不太好的时候,使用信息熵。

决策树的剪枝参数

作用

为了防止决策树过拟合,在训练集上表现得很好,在测试集上表现得很糟糕。使用剪枝参数可以是决策树有更好的泛化性。

参数

1.max—depth
限制树的最大深度,超过设定深度的树枝全部会被剪掉。决策树多生长一层对样本量的需求会增加一倍,所以限制树的深度可以有效地限制过拟合。

2.min_samples_leaf & min_samples_split
min_samples_leaf 限定一个节点在分枝的每个子节点都必须包含至少min_samples_leaf个训练样本,否则分支不会发生。
min_samples_split 限定,一个节点必须要包含至少min_samples_split个训练样本,这个节点才允许被分枝,否则分支不会发生。
3. max——features & min_impurity_decrease
max_featrues 限制分枝时考虑的特征个数,超过限制的特征个数会被舍弃。
min_impurity_decrease 限制信息增益的大小,信息增益小于设定的值的分支不会发生。

4.random_state & splitter
random_state用来设置分支中的随机模式的参数,默认None,在高维度时随机性会表现更明显,低维度的数据(比如鸢尾花数据集),随机性几乎不会显现。输入任意整数,会一直长出同一棵树,让模型稳定下来。
splitter也是用来控制决策树中的随机选项的,有两种输入值,输入”best",决策树在分支时虽然随机,但是还是会优先选择更重要的特征进行分支(重要性可以通过属性feature_importances_查看),输入“random",决策树在⽀支时会更加随机,树会因为含有更多的不必要信息而更深更大,并因这些不必要信息而降低对训练集的拟合。

接口

名称作用
fit导入训练集
score预测准确度
apply返回每个测试样本所在的叶子节点的索引
predict返回每个测试样本所的回归/分类结果

回归树的criterion

回归树衡量分枝质量的指标,支持的标准有三种:
1)输入"mse"使用均方误差mean squared error(MSE), 父节点和叶子节点之间的均方误差的差额将被用来作为特征选择的标准,通过这种方法使用叶子节点的均值来最小化L2损失
2)输入“friedman_mse”使用费尔德曼均方误差,这种指标使用弗里德曼针对潜在分枝中的问题改进后的均方误差
3)输入"mae"使用绝对平均误差MAE(mean absolute error),这种指标使用叶节点的中值来最小化L1损失

在回归树中,MSE不只是衡量分枝质量的指标,也是衡量回归树的回归质量的指标,MSE越小越好,MSE实际上是样本的真实值和回归的值的差值。

回归树的接口score默认返回的是R平方,并不是MSE。R平方可以为正为负(如果模型的残差平方和远远大于模型的总平方和,模型非常糟糕,R平方就会为负,所以R平方越接近1越好);sklearn当中使用均方误差作为评判标准时,却是计算”负均方误 差“(neg_mean_squared_error)。这是因为sklearn在计算模型评估指标的时候,会考虑指标本身的性质,均 方误差本身是一种误差,所以被sklearn划分为模型的一种损失(loss),因此在sklearn当中,都以负数表示。真正的均方误差MSE的数值,其实就是neg_mean_squared_error去掉负号的数字。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值