楼主: 时光永痕
1701 0

[数据挖掘新闻] 让我们解决过度拟合!决策树的成本复杂性修剪快速指南 [推广有奖]

  • 0关注
  • 14粉丝

svip3

学术权威

12%

(VIP/贵宾)八级

5%

威望
0
论坛币
26 个
通用积分
57.2238
学术水平
4 点
热心指数
4 点
信用等级
4 点
经验
34180 点
帖子
2732
精华
0
在线时间
321 小时
注册时间
2020-7-21
最后登录
2024-8-1

楼主
时光永痕 学生认证  发表于 2020-12-22 20:53:04 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
让我们解决过度拟合!决策树的成本复杂性修剪快速指南
了解决策树中的过拟合问题,并使用Python中的Scikit-Learn通过最小的成本复杂性修剪来解决
决策树是数据科学家工具包中提供的最直观,最有效的工具之一。它具有倒置的树状结构,该结构曾经仅用于决策分析,但现在也是一种出色的机器学习算法,尤其是当我们手头有分类问题时。
这些决策树以捕获数据模式的能力而闻名。但是,多余的东西都是有害的,对吗?决策树之所以臭名昭著,是因为它们可能过于依赖其所训练的数据。
因此,我们的树由于无法处理一组新的值,因此在部署时效果不佳。
特色图像分割决策树
但是,不用担心!就像熟练的技工可以在其工具箱中轻松获得各种尺寸的扳手一样,熟练的数据科学家也拥有一套处理各种问题的技术。这就是我们将在本文中探讨的内容。
修剪在决策树中的作用
修剪是用于克服过度拟合问题的技术之一。从字面意义上讲,修剪是一种涉及选择性去除树木(或植物)某些部分(例如树枝,芽或根)以改善树木结构并促进健康成长的做法。这也正是修剪对我们的决策树所做的。它使它具有通用性,因此如果我们向它提供任何新类型的数据,它都可以适应,从而解决了过拟合的问题。
它减小了决策树的大小,这可能会稍微增加您的训练错误,但会大大减少您的测试错误,因此使其更具适应性。
最小的成本复杂性修剪是决策树修剪的类型之一。
该算法通过称为复杂度参数的α(≥0)进行参数化。
复杂度参数用于定义成本复杂性量度,R α(T)给定树T的:- [R α(T)= R(T)+α| T |
| T | 是T中的终端节点数,R(T)传统上定义为终端节点的总误分类率。
在其0.22版本中,Scikit-learn在决策树中引入了称为ccp_alpha的参数(是!它是Cost Complexity Pruning-Alpha的缩写),该参数可用于执行相同的操作。
用Python构建决策树
我们将使用虹膜数据集来拟合决策树。您可以在此处下载数据集。
首先,让我们导入所需的基本库和数据集:
数据集如下所示:
我们的目标是根据花朵的间隔长度和宽度来预测花朵的种类。
我们将数据集分为两部分-训练和测试。我们这样做是为了能够看到我们的模型在看不见的数据上的表现。我们将使用train_test_split功能从sklearn.model_selection分裂的数据集。
现在,让我们将“决策树”安装到火车零件上,并在测试和火车上进行预测。我们将使用DecisionTreeClassifier从sklearn.tree用于这一目的。
默认情况下,“决策树”功能不执行任何修剪,并允许该树尽可能多地增长。如下所示,我们在火车和测试零件上的准确度得分分别为0.95和0.63。可以说我们的模型过拟合,即记忆了火车零件,但在测试零件上的表现却不尽相同。
sklearn中的DecisionTree具有一个称为cost_complexity_pruning_path的函数,该函数提供了修剪期间子树的有效alpha值以及相应的杂质。换句话说,我们可以使用以下alpha值来修剪决策树:
我们将设置这些alpha值并将其传递给DecisionTreeClassifier的ccp_alpha参数。通过遍历alphas数组,我们将在数据集的Train和Test部分上找到准确性。
从上面的图中可以看出,在alpha = 0.01和0.02之间,我们获得了最大的测试精度。尽管我们的火车精度已降至0.8,但我们的模型现在更通用了,并且在看不见的数据上会表现更好。
题库
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:过度拟合 决策树 复杂性 scikit-learn Complexity

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 19:34