机器学习(决策树(CART|机器学习:决策树(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 DecisionTreeClassifierdt_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|机器学习:决策树(CART 、决策树中的超参数))】转载于:https://www.cnblogs.com/volcao/p/9480431.html

    推荐阅读