监督学习——决策树

目录

推荐应用

信息增益

信息增益最大化

随机森林

超参数

最大深度

每片叶子的最小样本数

每次分裂的最小样本数

最大特征数

sklearn中的决策树

超参数

练习:

 使用决策树探索泰坦尼克乘客存活模型


决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。

推荐应用

熵,源来自于物理,热力学中表征物质状态的参量之一,其物理意义是体系混乱程度的度量。熵是一种不确定性的度量。集合越稳固或越具有同类性,其熵越低,反之亦然。熵和知识相反,一个集合的知识越高,其熵越低,反之亦然。

对于两种颜色球的情况,熵的公式如下:

信息增益

在决策树算法的学习过程中,信息增益是特征选择的一个重要指标,它定义为一个特征能够为分类系统带来多少信息,带来的信息越多,说明该特征越重要,相应的信息增益也就越大。信息增益:熵 - 条件熵。信息增益代表了在一个条件下,信息复杂度(不确定性)减少的程度。信息增益计算方法:父节点的熵与子节点熵平均值之间的差值。

信息增益最大化

浏览每列给出的可能的分法,计算其信息增益,并选择信息增益最大的方法。先计算父结点的熵如下第一幅图。然后按性别、职业分类,得到的信息增益分别为0.54、1,按照这个计算,选择职业分类。第一次分类按照职业,然后再按性别,如最后一张图建立决策树。

对于这样数据可以如下分类。

随机森林

决策树经常会过拟合,对于这种现象可以类似于如下操作:随机从数据中挑选几列,并根据这些列构建决策树,然后随机选取其他几列,再次构建决策树,然后让决策树进行选择。如果出现了新用户,就只需让所有的决策树做出预测,并选取结果中显示最多的,这种方法叫做随机森林。(下面这个例子最后选择的是绿色的软件。)

其实还有比随机选取列更好的方法,在后面的集成方法部分进行学习。

超参数

在决策树中有一些相当重要的超参数:

最大深度

决策树的最大深度指树根和叶子之间的最大长度。当决策树的最大深度为 kk 时,它最多可以拥有 2^k2k 片叶子。

Maximum depth of a decision tree 决策树的最大深度

每片叶子的最小样本数

在分裂节点时,很有可能一片叶子上有 99 个样本,而另一片叶子上只有 1 个样本。这将使我们陷入困境,并造成资源和时间的浪费。如果想避免这种问题,我们可以设置每片叶子允许的最小样本数。

                                                                                       每片叶子的最小样本数

这个数字可以被指定为一个整数,也可以是一个浮点数。如果它是整数,它将表示这片叶子上的最小样本数。如果它是个浮点数,它将被视作每片叶子上的最小样本比例。比如,0.1 或 10% 表示如果一片叶子上的样本数量小于该节点中样本数量的 10%,这种分裂将不被允许。

每次分裂的最小样本数

这个参数与每片叶子上的最小样本树相同,只不过是应用在节点的分裂当中。

最大特征数

有时,我们会遇到特征数量过于庞大,而无法建立决策树的情况。在这种状况下,对于每一个分裂,我们都需要检查整个数据集中的每一个特征。这种过程极为繁琐。而解决方案之一是限制每个分裂中查找的特征数。如果这个数字足够庞大,我们很有可能在查找的特征中找到良好特征(尽管也许并不是完美特征)。然而,如果这个数字小于特征数,这将极大加快我们的计算速度。

  • 较大的深度往往会导致过拟合,这是因为过深的决策树可以记忆数据。而较小的深度会使得模型过于简单,导致欠拟合。
  • 当每片叶子的样本数量较小时,叶子上的样本数量也有可能过于稀少,此时模型将记忆数据,也就是过拟合。当每片叶子的样本数量较大时,决策树能够获得足够的弹性进行构建,这也许会导致欠拟合。

sklearn中的决策树

>>> from sklearn.tree import DecisionTreeClassifier
>>> model = DecisionTreeClassifier()
>>> model.fit(x_values, y_values)

>>> print(model.predict([ [0.2, 0.8], [0.5, 0.4] ]))
[[ 0., 1.]]

超参数

当我们定义模型时,可以指定超参数。在实践中,最常见的超参数包括:

  • max_depth:树中的最大层级数量。
  • min_samples_leaf:叶子允许的最低样本数量。
  • min_samples_split:拆分内部节点所需的最低样本数量。
  • max_features:寻找最佳拆分方法时要考虑的特征数量。
>>> model = DecisionTreeClassifier(max_depth = 7, min_samples_leaf = 10)

练习:

1. 构建决策树模型 *使用 scikit-learn 的 DecisionTree 构建决策树分类模型,并将其赋值给变量 model

2. 将模型与数据进行拟合

  • 你不需要指定任何超参数,因为默认的超参数将以 100% 的准确率拟合数据。但是,建议你实验这些超参数,例如 max_depth 和 min_samples_leaf,并尝试找到最简单的潜在模型,即最不太可能过拟合的模型!

3. 使用模型进行预测

  • 预测训练集的标签,并将此列表赋值给变量 y_pred

4. 计算模型的准确率

# Import statements 
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
import pandas as pd
import numpy as np

# Read the data.
data = np.asarray(pd.read_csv('data.csv', header=None))
# Assign the features to the variable X, and the labels to the variable y. 
X = data[:,0:2]
y = data[:,2]

# TODO: Create the decision tree model and assign it to the variable model.
# You won't need to, but if you'd like, play with hyperparameters such
# as max_depth and min_samples_leaf and see what they do to the decision
# boundary.
model = DecisionTreeClassifier()

# TODO: Fit the model.
model.fit(X, y)

# TODO: Make predictions. Store them in the variable y_pred.
y_pred = model.predict(X)

# TODO: Calculate the accuracy and assign it to the variable acc.
acc = accuracy_score(y, y_pred)

 使用决策树探索泰坦尼克乘客存活模型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laboirousbee

你的鼓励是我创作的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值