zoukankan      html  css  js  c++  java
  • 机器学习:决策树(CART 、决策树中的超参数)

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

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

     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 中的决策树算法中还有很多其它参数,可查官方文档;
    • 实际应用中,需要将各种参数相互组合,可以用网格搜索的方式找到最佳的一组;
  • 相关阅读:
    GPU CUDA之——深入理解threadIdx
    需求分析、业务逻辑与数据结构
    软件建模的本质
    浅谈软件需求建模
    软件建模即程序设计
    软件开发从0到1与软件建模
    数据模型所描述的内容包括三个部分:数据结构、数据操作、数据约束。
    观察力与信息搜集能力
    人类为什么写书
    鲁宾斯坦说:"思维是在概括中完成的。"
  • 原文地址:https://www.cnblogs.com/volcao/p/9480431.html
Copyright © 2011-2022 走看看