展开

关键词

从零开始学Python【36】--决策树的来龙去脉

往期回顾从零开始学Python【34】--CART决策树(理论部分) 从零开始学Python【35】--CART决策树(实战部分) 前言决策树的通常有两类方法,一类是预,另一类是后。 常用的方法有误差降低法、悲观法和代价复杂度法等,下面将详细介绍这三种后方法的理论知识。 误差降低法该方法属于一种自底向上的后方法,过程中需要结合测试数据集对决策树进行验证,如果某个节点的子孙节点都被去后,新的决策树在测试数据集上的误差反而降低了,则表明这个过程是正确的,否则就不能对其 悲观法该方法的过程恰好与误差降低法相反,它是自顶向下的过程。 对比前后叶节点误判率的标准就是,如果后叶节点的误判率期望在前叶节点误判率期望的一个标准差内,则认为是合理的,否则不能

54910

YOLOv3通道+层,参数压缩98%,砍掉48个层,提速2倍!

,下面引用了几种不同的通道策略,并对原策略进行了改进,提高了率和精度;在这些工作基础上,又衍生出了层,本身通道已经大大减小了模型参数和计算量,降低了模型对资源的占用,而层可以进一步减小了计算量 python prune.py --cfg cfgmy_cfg.cfg --data datamy_data.data --weights weightslast.pt --percent 0.85通道策略二策略源自 本项目中对涉及shortcut的后激活偏移值处理进行了完善,并修改了阈值规则,可以设置更高率,当然率的设置和后的精度变化跟稀疏训练有很大关系,这里再次强调稀疏训练的重要性。 12同时层和通道前面的通道和层已经分别压缩了模型的宽度和深度,可以自由搭配使用,甚至迭代式,调配出针对自己数据集的一副良药。 ,有时后模型精度甚至可能上升,而一般而言会损害模型精度,这时候需要对后的模型进行微调,让精度回升。

1.8K10
  • 广告
    关闭

    最壕十一月,敢写就有奖

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    从零开始学人工智能-Python·决策树(四)·树

    作者:射命丸咲Python 与 机器学习 爱好者知乎专栏:https:zhuanlan.zhihu.comcarefree0910-pyml个人网站:http:www.carefree0910.com本章用到的 :取出待的节点根据定义计算前(_old)的混乱程度和后(_new)的混乱程度选出后混乱程度降低的 node、调用 node 的 prune 函数来后把被掉的 node 从备选 node 列表中删去、然后再次调用整个决策树的算法? 这些就是算法的全部了,不知是否比你想象中的要简洁一些? 在 Python · 决策树(零)· 简介 这一章中,我用到了这么两张图:??它们其实都是在另一种算法下的最终结果。如果按这一章的算法(令惩罚因子 alpha = 1)来做,最终结果是这样的:??

    62090

    深度学习算法优化系列二 | 基于Pytorch的模型代码实战

    今天我就一个简单的网络,体会一下模型的魅力。 然后,根据我们预先设置的比例percent和网络中所有BN层的weight参数组成的数组确定的权重阈值thre_0。有了这个阈值就可以自行预操作了。 预首先确定的全局阈值,然后根据阈值得到后的网络每层的通道数cfg_mask,这个cfg_mask就可以确定我们后的模型的结构了,注意这个过程只是确定每一层那一些索引的通道要被掉并获得 注意一下,在预阶段是通过BN层的scale参数获取的需要的通道索引,在阶段不仅仅需要掉BN层的对应通道,还要掉BN层前的卷积层的对应通道。 Retrain执行python main.py --refine models_savenin_prune.pth进行retrain和测试。

    1.3K10

    机器学习算法实践:树回归

    在介绍树之前先使用上一部分的代码对两组类似的数据进行回归,可视化后的数据以及回归曲线如下(数据文件左&数据文件右):? 那么我们需要降低决策树的复杂度来避免过拟合,此过程就是技术又分为预和后。预是在生成决策树之前通过改变参数然后在树生成的过程中进行的。 后技术需要用于预先指定参数,但是后技术则是通过测试数据来自动进行不需要用户干预因此是一种更理想的技术,但是我们需要写函数来处理。 后Python实现:?我们看一下不对刚才的树进行预而是使用测试数据进行后的效果:??通过输出可以看到总共进行了8次操作,通过把前和后的树可视化对比下看看:? 总结本文对决策树用于连续数值的回归预测进行了介绍,并实现了回归树, 和模型树以及相应的树结构输出可视化等。对于模型树也给予了相应的Python实现并针对分段线性数据进行了回归测试。

    78790

    SlimYOLOv3:更窄、更快、更好的无人机目标检测算法

    一种比较直接的做法是对模型进行,尽量减少模型卷积层不必要的通道。 SlimYOLOv3-SPP3-509095,是YOLOv3-SPP3模型率分别为50%、90%、95%的三个模型。 可见模型可大幅改善模型在无人机上的部署,有一定的精度损失,但远比YOLOv3-tiny要好。过程 什么是深度模型的?就像论文名字中的更窄(Narrower),它是要减少模型通道数。 以上过程是迭代重复的,直到满足一定的模型条件,比如模型率达到一定要求。 : python yolov3prune.py --cfg VisDrone2019yolov3-spp3.cfg --data-cfg VisDrone2019drone.data --weights

    41110

    【机器学习基础】数学推导+纯Python实现机器学习算法5:决策树之CART算法

    目录CART概述回归树分类树Python实现示例:分类树 在数学推导+纯Python实现机器学习算法4:决策树之ID3算法中笔者已经对决策树的基本原理进行了大概的论述。 通常来说,有两种方法。一种是在决策树生成过程中进行,也叫预(pre-pruning)。另一种就是前面说的基于生成好的决策树自底向上的进行,又叫后(post-pruning)。 预比较直接,算法也简单,效率高,适合大规模问题计算,但预可能会有一种”早停”的风险,可能会导致模型欠拟合。 后则是等树完全生长完毕之后再从最底端的叶子结点进行。 CART正是一种后方法。简单来说,就是自底向上对完全树进行逐结点,每一次就形成一个子树,一直到根结点,这样就形成一个子树序列。 具体细节可参考统计学习方法给出的算法步骤,笔者这里不深入展开公式。?Python实现示例:分类树 根据上一节ID3决策树的代码形式,笔者继续以CART分类树为例进行实现。

    43220

    YOLOv3再升级!

    (在此致谢两位)方式优点缺点正常不对shortcut,拥有可观且稳定的压缩率,无需微调。压缩率达不到极致。极限极高的压缩率。需要微调。 规整专为硬件部署设计,后filter个数均为8的倍数,无需微调。为规整牺牲了部分压缩率。Tiny稳定的压缩率。由于Tiny本来已很小,压缩率中规中矩。 4.目前支持情况功能单卡多卡正常训练√√稀疏化√√正常√√规整√√极限(shortcut)√√Tiny√√环境搭建1.由于采用ultralyticsyolov3的YOLO实现,环境搭建见 2.执行python converter.py ,生成 images、labels 文件夹和 train.txt、valid.txt 文件。 其中:--prune 0为正常和规整的稀疏化--prune 1为极限的稀疏化--prune 2为Tiny的稀疏化python3 train.py --data dataoxfordhand.data

    1.8K10

    YOLOv3模型,瘦身80%,提速100%,精度基本不变

    今天向大家推荐一个Github新工程,对YOLOv3进行模型: https:github.comLam1360YOLOv3-model-pruning这份代码是基于Python 3.6, PyTorch 作者用 YOLOv3 做人手检测(在 oxford hand 数据集上训练的),并进行了模型后YOLOv3 模型的参数量减少 80% ,FLOPs 降低 70%,推断的速度提高了100%,而 前后的对比 1. 部分卷积层的通道数大幅度减少?前后指标对比:?精度还略微上升了! 步骤也非常简单: ? 看来在实际应用部署时还真的很重要呢!

    36620

    YOLOv3模型,瘦身80%,提速100%,精度基本不变

    今天向大家推荐一个Github新工程,对YOLOv3进行模型:https:github.comLam1360YOLOv3-model-pruning这份代码是基于Python 3.6, PyTorch 作者用 YOLOv3 做人手检测(在 oxford hand 数据集上训练的),并进行了模型后YOLOv3 模型的参数量减少 80% ,FLOPs 降低 70%,推断的速度提高了100%,而 前后的对比 1. 部分卷积层的通道数大幅度减少前后指标对比:精度还略微上升了! 步骤也非常简单: 作者称,后续还会在其他数据集上做实验。 看来在实际应用部署时还真的很重要呢!感谢该工程开源者Lam1360,欢迎给大佬加星~(*本文为 AI科技大本营转载文章,转载请联系原作者)

    2.6K00

    Python 机器学习算法实践:树回归

    那么我们需要降低决策树的复杂度来避免过拟合,此过程就是技术又分为预和后。预是在生成决策树之前通过改变参数然后在树生成的过程中进行的。 后技术需要用于预先指定参数,但是后技术则是通过测试数据来自动进行不需要用户干预因此是一种更理想的技术,但是我们需要写函数来处理。 Python实现:defpostprune(tree,test_data): 根据测试数据对树结构进行后ifnot_tree(tree):returntree# 若没有测试数据则直接返回树平均值ifnottest_data ,通过把前和后的树可视化对比下看看:? 总结本文对决策树用于连续数值的回归预测进行了介绍,并实现了回归树, 和模型树以及相应的树结构输出可视化等。对于模型树也给予了相应的Python实现并针对分段线性数据进行了回归测试。

    58790

    决策树学习笔记(二):,ID3,C4.5

    递归方面的内容也可以参考:如何用Python递归地思考问题?下图就是用递归生成一颗完整决策树的过程。? 将分支结点标记为叶节点,其类别为D中样本最多的类; return 13: else 14: 以 TreeGenerate(Dv, A{a*}) 为分支结点; 15: end if 16: end for} 使用Python 常用的后策略包括:降低错误 REP悲观错误 PEP基于错误 EBP代价-复杂度 CCP最小错误 MEP? 预和后对比虽然都是,但预与后最终达到的效果是不一样的。了解两种方法并进行比较有助于我们更好地选择。 后:相比预,后的优点是:1)后决策树通常比预决策树保留了更多的分支;2)后决策树的欠拟合风险很小,泛化性能往往优于预决策树。

    85620

    【Leetcode】60. 第k个排列

    backtrack的可以参看相关文章中有详细的step-by-step的流程.从小到大把数排好;用backtrack的方法遍历,每次遍历到一个全排列那么结果,count+1;遍历到n就return输出由于用的是 backtrack,后面 count > k的情况都直接return掉;然后用java写了一个版本,还没有就ac啦.class Solution {int count = 0; List finalRes 所以又动手写了一个python版本.class Solution: def getPermutation(self, n, k): :type n: int :type k: int :rtype: TLE 这倒是个意外.难道我的python写的有性能问题,不应该啊,不是:人生苦短,我用python我就继续想,还能怎么?是啥,不就是跳过某些步骤吗? 然后就快速实现了python的code AC了.class Solution: def getPermutation(self, n, k): nums = if k == 1: return .join

    67920

    决策树学习笔记(二):,ID3,C4.5

    递归方面的内容也可以参考:如何用Python递归地思考问题?下图就是用递归生成一颗完整决策树的过程。? 将分支结点标记为叶节点,其类别为D中样本最多的类; return 13: else 14: 以 TreeGenerate(Dv, A{a*}) 为分支结点; 15: end if 16: end for}使用Python 常用的后策略包括:降低错误 REP悲观错误 PEP基于错误 EBP代价-复杂度 CCP最小错误 MEP? 预和后对比虽然都是,但预与后最终达到的效果是不一样的。了解两种方法并进行比较有助于我们更好地选择。 后:相比预,后的优点是:1)后决策树通常比预决策树保留了更多的分支;2)后决策树的欠拟合风险很小,泛化性能往往优于预决策树。

    34400

    TensorFlow 模型

    如何通过使模型更小,含代码示例及详细解释。 之后,我们将它与全局后的模型比较,然后与只稠密层的模型比较。 (ConstantSparsity Pruning Schedule)整个模型 让我们比较上面的 MSE 和整个模型后得到的 MSE。 预定的参数是策略、块大小和池块类型。 比较从不同参数得到的 MSE 是有意义的,这样你可以保证模型性能不会更差。---- 比较模型大小 现在让我们比较有和没有的模型的大小。我们开始训练并保存模型的权重以便以后使用。

    26220

    CART决策树原理(分类树与回归树)

    决策树在很多公司都实际运用于风险控制,之前阐述了决策树-ID3算法和C4.5算法和Python中应用决策树算法预测客户等级。 这只是理想数据,便于大家理解基尼指数,现实数据远远比这复杂,不过用Python处理也很方便。 三、回归CART树生成? 其实分为预和后,预是在构建决策树的过程中,提前终止决策树的生长,从而避免过多的节点产生。但是由于很难精确判断何时终止树的生长,导致预方法虽然简单但实用性不强。 后是在决策树构建完成之后,通过比较节点子树用叶子结点代替后的误差大小,如果叶子结点合并后误差小于合并前,则进行,否则不。 CART树采用后的策略,为了让大家彻底弄懂,首先来看几个和有关的函数。 1 损失函数损失函数计算公式如下: ?

    94520

    分类回归树算法---CART

    CART算法是由以下两部组成: (1)决策树生成:基于训练数据集生成的决策树,生成的决策树要尽量大; (2)决策树:用验证数据集对已生成的树进行并选择最优子树,用损失函数最小作为的标准。 三、 决策树为什么(WHY)要? 原因是避免决策树过拟合(Overfitting)样本。 通过从“完全生长”的决策树的底端去一些子树,可以使决策树变小,也就是模型变简单,因此可以通过CART算法解决过拟合问题, 如何呢? 的方法分为前和后:前是指在构造树的过程中就知道哪些节点可以掉,于是干脆不对这些节点进行分裂,在分类回归树中使用的是后方法,后方法有多种,比如:代价复杂性、最小误差、悲观误差等等 Python实现KNN算法8. 基础聚类算法:K-means算法9. 分类回归树算法---CART

    1.5K80

    【知识星球】还是不了到底有什么好?

    1 我们都知道可以压缩计算量,那到底可以达到什么程度呢?下面看Google的一篇文章的研究。有三AI知识星球-网络结构1000变To prune, or not to prune? 作者编辑 言有三模型是一项重要的模型压缩技术,它给网络参数带来了稀疏性,在开源框架中可以通过和权重矩阵大小相等的掩膜来实现。那么,到底对性能会有什么影响呢? 从这里可以看出真的是一个非常有前途的课题,值得研究。 Zhu M, Gupta S.

    50160

    Machine learning -- C4.5算法详解及Python实现

    (6) 其它特征 树 在决策树的创建时,由于数据中的噪声和离群点,许多分反映的是训练数据中的异常。方法是用来处理这种过分拟合数据的问题。通常方法都是使用统计度量,去最不可靠的分一般分两种方法:先和后。 先方法中通过提前停止树的构造(比如决定在某个节点不再分裂或划分训练元组的子集)而对树。 先有个缺点就是视野效果问题,也就是说在相同的标准下,也许当前扩展不能满足要求,但更进一步扩展又能满足要求。这样会过早停止决策树的生长。 另一种更常用的方法是后,它由完全成长的树去子树而形成。 通过删除节点的分并用树叶来替换它。树叶一般用子树中最频繁的类别来标记。 C4.5采用悲观法,它使用训练集生成决策树又用它来进行,不需要独立的集。 安装的教程在请看之前的文章或者去python社区或者参考其他博文。c4.5算法计算的流程框图?

    1.4K80

    机器学习(11)之C4.5详解与Python实现(从解决ID3不足的视角)

    关键字全网搜索最新排名【机器学习算法】:排名第一【机器学习】:排名第二【Python】:排名第三【算法】:排名第四前言上一篇(机器学习(9)之ID3算法详解及python实现)我们讲到ID3算法有四个主要的不足 对于第4个问题,C4.5引入了正则化系数进行初步的。具体方法这里不讨论。之后会在讲CART的时候会详细讨论的思路。除了上面的4点,C4.5和ID的思路区别不大。 1)由于决策树算法非常容易过拟合,因此对于生成的决策树必须要进行的算法有非常多,C4.5的方法有优化的空间。思路主要是两种,一种是预,即在生成决策树的时候就决定是否。 另一个是后,即先生成决策树,再通过交叉验证来。后面在讲CART树的时候我们会专门讲决策树的减思路,主要采用的是后加上交叉验证选择最合适的决策树。  python实现在算法实现上,C4.5算法只是修改了信息增益计算的函数calcShannonEntOfFeature和最优特征选择函数chooseBestFeatureToSplit。

    68650

    相关产品

    • Serverless HTTP 服务

      Serverless HTTP 服务

      Serverless HTTP 基于腾讯云 API 网关平台,为互联网业务提供 0 配置、高可用、弹性扩展的对外 RESTful API 能力,支持 swagger/ openAPI 等协议。便于客户快速上线业务逻辑,通过规范的 API 支持内外系统的集成和连接。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券