sklearn中的分类型决策树与泰坦尼克号实例

sklearn中的决策树与泰坦尼克号实例

  • 一、决策树类的重要参数
    • 1.criterion
    • 2.random_state & splitter
    • 3.五个剪枝参数
      • max_depth
      • min_samples_leaf & min_samples_split
      • max_features & min_impurity_decrease
      • 确定最优的剪枝参数
    • 4.重要属性与接口
  • 二、泰坦尼克号实例
    • 1.数据预处理
    • 2.提取标签和特征矩阵,分测试集和训练集
    • 3.建模三部曲,跑个大概
    • 4.调max_depth画出曲线
    • 5.网格搜索

一、决策树类的重要参数

1.criterion

Criterion这个参数正是用来决定不纯度的计算方法的。sklearn提供了两种选择:
1)输入”entropy“,使用信息熵(Entropy)
2)输入”gini“,使用基尼系数(Gini Impurity)

问题 解释
公式上的不同 信息熵的计算比基尼系数缓慢一些,因为基尼系数的计算不涉及对数。另外,因为信息熵对不纯度更加敏感,所以信息熵作为指标时,决策树的生长会更加“精细”,因此对于高维数据或者噪音很多的数据,信息熵很容易过拟合,基尼系数在这种情况下效果往往比较好。当模型拟合程度不足的时候,即当模型在训练集和测试集上都表现不太好的时候,使用信息熵。
可能的输入有哪些? 不填默认基尼系数,填写gini使用基尼系数,填写entropy使用信息增益
怎样选取参数 通常就使用基尼系数。特殊情况参照第一条。两个都试试,不好就换另外一个。

2.random_state & splitter

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

3.五个剪枝参数

为了让决策树有更好的泛化性,我们要对决策树进行剪枝。剪枝策略对决策树的影响巨大,正确的剪枝策略是优化决策树算法的核心。

max_depth

限制树的最大深度,超过设定深度的树枝全部剪掉。
这是用得最广泛的剪枝参数,在高维度低样本量时非常有效。决策树多生长一层,对样本量的需求会增加一倍,所以限制树深度能够有效地限制过拟合。在集成算法中也非常实用。实际使用时,建议从=3开始尝试,看看拟合的效果再决定是否增加设定深度。

min_samples_leaf & min_samples_split

min_samples_leaf限定,一个节点在分枝后的每个子节点都必须包含至少min_samples_leaf个训练样本。min_samples_split限定,一个节点必须要包含至少min_samples_split个训练样本,这个节点才允许被分枝,否则分枝就不会发生。

max_features & min_impurity_decrease

用于精修,用的也比较少。min_impurity_decrease很难界定。

确定最优的剪枝参数

要选择的参数很多的话就用网格搜索。一个的话可以改变超参数的值画出曲线。
sklearn中的分类型决策树与泰坦尼克号实例_第1张图片

4.重要属性与接口

对决策树来说,最重要的是feature_importances_,能够查看各个特征对模型的重要性。
sklearn中的分类型决策树与泰坦尼克号实例_第2张图片
决策树最常用的接口还有apply和predict。apply中输入测试集返回每个测试样本所在的叶子节
点的索引(根节点1,第二层从左到右2,3,4,5以此类推),predict输入测试集返回每个测试样本的标签。
sklearn中的分类型决策树与泰坦尼克号实例_第3张图片

二、泰坦尼克号实例

1.数据预处理

sklearn中的分类型决策树与泰坦尼克号实例_第4张图片
都是比较常规的操作,没有需要解释的。有一点与上课时候不同的是,上课决策树仍然保留着分类型变量,这里却转换成了数值变量。二分类是先转化true和false。多分类是映射到全集的index上。

2.提取标签和特征矩阵,分测试集和训练集

sklearn中的分类型决策树与泰坦尼克号实例_第5张图片
这里走了一步修正索引,让他们以自然数顺序排列。

3.建模三部曲,跑个大概

sklearn中的分类型决策树与泰坦尼克号实例_第6张图片

4.调max_depth画出曲线

sklearn中的分类型决策树与泰坦尼克号实例_第7张图片
这里为什么使用“entropy”?因为我们注意到,在最大深度=3的时候,模型拟合不足,在训练集和测试集上的表现接近,但却都不是非常理想,只能够达到83%左右,所以我们要使用entropy。

5.网格搜索

sklearn中的分类型决策树与泰坦尼克号实例_第8张图片
没有特别大的提升。

你可能感兴趣的:(决策树,sklearn)