• 老师非参数学习的算法都容易产生过拟合

一、决策树模型的创建方式、时间复杂度

 1)创建方式

  • 决策树算法
  1. 既可以解决分类问题,又可以解决回归问题;
  2. CART 创建决策树的方式:根据某一维度 d 和某一个 阈值 v 进行二分;(得到的是一个二叉树
  3. scikit-learn 中的创建决策树的方式:CART(Classification And Regression Tree),也就是二叉树的方式;
  4. 创建决策树的方式有多种:ID3、C4.5、C5.0、CART;

 2)二叉树的实际复杂度

  • 预测样本时的时间复杂度:O(logm)
  1. m:待预测的样本个数;
  2. logm:表示“树”的高度,也就是 “树” 一共有 logm 层;
  3. 可以这样理解:每一次的节点划分,都是对当前实际的对半划分,则“树”的高度是 logm ;当传入一个未知的新的样本时,从根节点处开始一步一步做决策,走到“叶子”节点;
  • 训练决策树模型时的时间复杂度:O(n*m*logm)
  1. X_train 是(m,n);
  2. “树”是 logm 级别的,如果每一层只划分一个节点,在一个节点上大概都要对数据集做 n*m 次划分,则训练的时间复杂度为 O(n*m*logm);

二、scikit-learn 中决策树算法的参数

 1)决策树算法的问题

  1. 训练决策树模型的时间复杂度比较大:O(n*m*logm);
  2. 训练决策树模型时容易产生过拟合;(这也是所有非参数学习算法的共同问题)
  • 方案:剪枝——可降低复杂度,同时解决过拟合;

 2)常用参数

  • 参数的功能:防止模型过拟合或欠拟合,降低训练模型的时间复杂度;

  • from sklearn.tree import DecisionTreeClassifier
    
    dt_clf = DecisionTreeClassifier(max_depth=2, criterion='entropy', min_samples_split=10, min_samples_leaf=6, max_leaf_nodes=4)
    dt_clf.fit(X, y)
  1. max_depth = 2:决策树模型的最高深度为 2;
  2. criterion = 'entropy':划分节点数据集时,采用信息熵为判断条件;
  3. criterion = 'gini':划分节点数据集时,采用基尼系数为判断条件;
  4. min_samples_split = 10:节点数据集中至少要有 10 个样本,才能继续对节点数据集进行划分;否则即使信息熵和基尼系数都比较大,也不在划分数据集;
  5. min_samples_leaf = 6:一个“叶子”节点,至少要有 6 个样本;
  6. max_leaf_nodes = 4:模型最多只能有 4 个“叶子”节点;
  • scikit-learn 中的决策树算法中还有很多其它参数,可查官方文档;
  • 实际应用中,需要将各种参数相互组合,可以用网格搜索的方式找到最佳的一组;

机器学习:决策树(CART 、决策树中的超参数)的更多相关文章

  1. 【笔记】CART与决策树中的超参数

    CART与决策树中的超参数 先前的决策树其实应该称为CART CART的英文是Classification and regression tree,全称为分类与回归树,其是在给定输入随机变量X条件下输 ...

  2. lecture16-联合模型、分层坐标系、超参数优化及本课未来的探讨

    这是HInton的第16课,也是最后一课. 一.学习一个图像和标题的联合模型 在这部分,会介绍一些最近的在学习标题和描述图片的特征向量的联合模型上面的工作.在之前的lecture中,介绍了如何从图像中 ...

  3. 机器学习——决策树,DecisionTreeClassifier参数详解,决策树可视化查看树结构

    0.决策树 决策树是一种树型结构,其中每个内部节结点表示在一个属性上的测试,每一个分支代表一个测试输出,每个叶结点代表一种类别. 决策树学习是以实例为基础的归纳学习 决策树学习采用的是自顶向下的递归方 ...

  4. 机器学习算法中如何选取超参数:学习速率、正则项系数、minibatch size

    机器学习算法中如何选取超参数:学习速率.正则项系数.minibatch size 本文是<Neural networks and deep learning>概览 中第三章的一部分,讲机器 ...

  5. 机器学习实战---决策树CART回归树实现

    机器学习实战---决策树CART简介及分类树实现 一:对比分类树 CART回归树和CART分类树的建立算法大部分是类似的,所以这里我们只讨论CART回归树和CART分类树的建立算法不同的地方.首先,我 ...

  6. 机器学习超参数优化算法-Hyperband

    参考文献:Hyperband: Bandit-Based Configuration Evaluation for Hyperparameter Optimization I. 传统优化算法 机器学习 ...

  7. Spark2.0机器学习系列之2:基于Pipeline、交叉验证、ParamMap的模型选择和超参数调优

    Spark中的CrossValidation Spark中采用是k折交叉验证 (k-fold cross validation).举个例子,例如10折交叉验证(10-fold cross valida ...

  8. 机器学习:SVM(scikit-learn 中的 RBF、RBF 中的超参数 γ)

    一.高斯核函数.高斯函数 μ:期望值,均值,样本平均数:(决定告诉函数中心轴的位置:x = μ) σ2:方差:(度量随机样本和平均值之间的偏离程度:, 为总体方差,  为变量,  为总体均值,  为总 ...

  9. 机器学习:调整kNN的超参数

    一.评测标准 模型的测评标准:分类的准确度(accuracy): 预测准确度 = 预测成功的样本个数/预测数据集样本总数: 二.超参数 超参数:运行机器学习算法前需要指定的参数: kNN算法中的超参数 ...

随机推荐

  1. eclipse build path 以及 clean(转)

    1.设置"source folder"与"output folder". source folder:存放.Java源文件的根目录:output folder: ...

  2. Thinkpad个性化设置:F1~F12恢复正常按键,Fn与Ctrl按键互换

    一.F1~F12恢复正常按键 联想Thinkpad的F1~F12键功能与其他笔记本是相反的! 也就是说,如果不按着Fn,按那几个功能键,实现的是属性设置的功能,比如直接按下F1键是静音,F2键是音量降 ...

  3. nova Scheduling 配置

    Nova中调度配置: scheduler_driver_task_period = scheduler_driver = nova.scheduler.filter_scheduler.FilterS ...

  4. SQL Server集成服务最佳实践:语句优化

        SQL Server集成服务(SQL Server Integration Services,SSIS)在其前辈DTS(Data Transformation Services,数据转换服务) ...

  5. 程序员怎样迈出从5K到1W的重要一步

    为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝:而自己加班加点搞到天亮还做不完. 为什么用户提出需求变更后,大牛只需潇洒地敲敲键盘,改改配置:而自己将代码改了又改,删了又建,几乎晕 ...

  6. 理解AOP思想(面向切面编程)

    AOP:面向切面编程,相信很多刚接触这个词的同行都不是很明白什么,百度一下看到下面这几句话: 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预 ...

  7. spring boot 基础篇 -- 阿里多数据源

    这块是比较基础的配置,阿里数据库配置还是比较好用的,并且可以用来监控数据源的情况.废话不多说,下面看代码. 基于maven项目,在pom.xml中添加引用: <dependency> &l ...

  8. jar包作用

    hibernate中jar包的作用 (1)hibernate3.jar:Hibernate的核心库,没有什么可说的,必须使用的jar包 (2)cglib-asm.jar:CGLIB库,Hibernat ...

  9. vue cli关闭eslint严格语法检查

    eslint是一个JavaScript的校验插件,通常用来校验语法或代码的书写风格. 官方文档:https://eslint.org 这篇文章总结了eslint的规则:Eslint规则说明 1.关闭e ...

  10. LeetCode OJ:Populating Next Right Pointers in Each Node(指出每一个节点的下一个右侧节点)

    Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...