决策树详解+面试常见问题

一、决策树详解

1.定义

决策树是一种基于树结构进行决策的机器学习模型。它由节点和边组成,节点分为根节点、内部节点和叶节点。根节点是决策树的起始点,内部节点表示属性上的测试,边表示测试结果,叶节点代表决策结果 ,通过对数据属性的不断划分来构建树状结构以实现分类或回归任务。

2.构建过程

  1. 特征选择:选择最有区分度的属性作为节点划分依据。常用方法有信息增益(如 ID3 算法 )、信息增益比(如 C4.5 算法 )、基尼指数(如 CART 算法 )。例如在判断水果是苹果还是橙子时,若 "颜色" 属性能最大程度区分两者,就优先以 "颜色" 划分。
  2. 递归划分:对每个划分后的子集重复特征选择和划分过程,直到满足停止条件,如节点中的样本都属于同一类别,或达到预设的树深度等。
  3. 剪枝:为防止过拟合,对生成的树进行剪枝处理,分为预剪枝(在构建过程中提前判断是否停止划分 )和后剪枝(构建完树后对多余分支剪枝 )

3.应用场景

  • 分类问题:如客户是否流失分类,根据客户年龄、消费频率、消费金额等属性构建决策树,判断客户属于流失或留存类别。
  • 回归问题:预测房价时,依据房屋面积、房间数量、房龄等特征构建决策树,预测房价数值。
  • 数据分析:在市场调研中,分析消费者购买行为,通过决策树找出影响购买决策的关键因素。

4.算法

信息增益

  • 原理:基于信息论,信息熵衡量随机变量不确定性,条件熵是已知某变量时另一变量的不确定性,信息增益 = 信息熵 - 条件熵 ,表示得知特征信息使类的不确定性减少程度,反映特征对分类的贡献。比如判断水果类别,知道 "颜色" 特征后对水果类别判断的不确定性降低程度,就是 "颜色" 特征的信息增益。
  • 应用:用于 ID3 算法,计算各特征信息增益,选最大的划分数据集,倾向取值多的特征,不处理连续特征。

信息增益比

  • 原理:是信息增益基础上乘惩罚参数,特征取值多惩罚参数小,取值少惩罚参数大,校正信息增益对取值多特征的偏好。
  • 应用:C4.5 算法使用,先选信息增益高于平均水平属性,再从中选增益率最高的划分,改善 ID3 不足。

基尼指数

  • 原理:表示数据不纯度,介于 0 - 1,值越大越不纯,通过计算划分后子集不纯度衡量特征优劣,选择使基尼指数最小的特征及切分点划分。
  • 应用:CART 算法构建二叉分类树时使用,代替信息增益比,减少对数运算,提升效率。

均方差

  • 原理:用于 CART 回归树,衡量节点数据离散程度,方差大数据分散,预测效果差;方差小数据集中,预测相对准确。
  • 应用:以样本最小方差为特征选择依据,分枝时穷举找最小化均方差的分割点 ,预测值常取节点样本均值。

信息增益算法实例

以经典的 "打网球" 决策为例。训练集中有 "是否打网球" 的决策结果,以及 "前景""温度""湿度""有风" 等属性。比如,已知 5 个标记为 "否"、9 个标记为 "是" 的例子,先计算初始熵。若对 "有风" 属性拆分,"有风" 为 "真" 时,剩下 6 个例子,3 个 "是",3 个 "否";"有风" 为 "假" 时,剩下 8 个例子,6 个 "是",2 个 "否"。通过概率平均计算拆分后的平均熵,用初始熵减去平均熵得到信息增益。经计算会发现 "前景" 属性信息增益最大,所以优先按 "前景" 属性划分构建决策树 。

信息增益比算法实例

以贷款申请训练数据为例。数据含贷款申请人 "年龄""有工作""有自己的房子""信贷情况" 4 个特征,以及 "是否同意贷款" 的类别结果 。先计算经验熵,再分别计算 "年龄" 等各特征的经验条件熵,进而得到信息增益,再结合数据集固有属性算出信息增益比。经计算得出 "有自己的房子" 信息增益比最大,作为根结点处最优特征划分;对剩余样本继续计算,如算出 "有工作" 信息增益比在后续特征中最大,依此逐步构建决策树。

基尼指数算法实例

在信用风险评估场景中,假设有一组借款人信用数据。将借款人按信用风险从低到高排序,通过比较好坏样本分布差异计算基尼系数。若基尼系数低,表明信用风险分散,多数借款人风险低;若基尼系数高,意味着信用风险集中,少数借款人风险高 。比如在信贷配额管理中,计算不同风险等级借款人的基尼系数,了解违约率分布,进而合理分配信贷额度,降低信贷风险。

均方差算法实例

假设有一组房屋面积和房价的数据,要构建二叉回归树预测房价。先把所有样本点放根结点,计算每个可能切分点的均方差(即每个切分点划分后子集上房价实际值与预测值差值平方的平均数 )。如找到最小均方差对应的最优切分点划分数据成两个子集,再分别对两个子集重复找最优切分点操作,直至满足停止条件(如均方差小于阈值 )。最终生成的二叉回归树可根据房屋面积预测房价

二、面试常见问题

算法原理与组成部分

  • 问题:请解释决策树算法的基本原理。
  • 答案:决策树是一种监督学习算法,用于解决分类和回归问题。它通过递归地分割数据集,使得相似的实例被归入同一子集。每个分割点是一个特征 - 值对组合,使得在该特征上的值大于或小于某个阈值。这些分割点构成树的内部节点,而叶子节点表示最终的分类或预测值。
  • 问题:决策树的主要组成部分有哪些?
  • 答案:决策树的主要组成部分有根节点、分支、叶节点。根节点代表整个样本空间,叶节点代表决策结果,分支代表根节点到叶节点的路径。

度量标准与特征选择

  • 问题:什么是信息增益?
  • 答案:信息增益是决策树算法中常用的一种度量标准,用于评估特征分割的效果。信息增益是父节点的熵减去加权子节点的熵。熵是一个表示概率分布混乱程度的值,计算公式为 -∑p (x) log (p (x))。信息增益越大,表示分割特征带来的纯度提升越大。
  • 问题:什么是基尼不纯度?
  • 答案:基尼不纯度是另一种用于评估特征分割效果的度量标准。基尼不纯度表示一个随机选择的样本在子集中被错分的概率。计算公式为 1 - ∑(p (x))^2。基尼不纯度越小,表示子集的纯度越高。

过拟合与应对方法

  • 问题:如何避免决策树的过拟合?
  • 答案:可以采用以下方法避免过拟合。剪枝:通过设置决策树的最大深度、最小叶子节点样本数等参数,限制树的生长;随机森林:通过集成多个决策树,降低模型的方差;交叉验证:通过划分训练集和验证集,对模型进行评估并调整超参数。
  • 问题:什么是决策树的剪枝?
  • 答案:剪枝是一种降低决策树复杂度的方法,包括预剪枝和后剪枝两种。预剪枝是在决策树构建过程中设置停止条件,如树的最大深度、最小叶子节点样本数等。后剪枝则是在决策树构建完成后,通过删除部分子树来降低复杂度。

与其他算法的比较

  • 问题:决策树和逻辑回归的主要区别是什么?
  • 答案:决策树和逻辑回归都是监督学习算法,但存在以下区别。模型形式:决策树是一种基于树结构的模型,而逻辑回归是一种基于线性模型的方法。适用问题:决策树可以用于分类和回归问题,逻辑回归主要用于二分类问题(也可以扩展到多分类问题)。决策边界:决策树的决策边界是分段的、非线性的,而逻辑回归的决策边界是线性的。可解释性:决策树具有较好的可解释性,可以直观地展示决策过程。逻辑回归虽然也具有一定的可解释性,但不如决策树直观。
  • 问题:决策树和随机森林的区别是什么?
  • 答案:决策树和随机森林的主要区别如下。决策树是一棵树,随机森林包含多棵决策树。决策树的训练过程是贪心算法,随机森林的训练过程中存在随机性。随机森林的预测结果是多棵决策树预测结果的平均值或多数投票,决策树直接输出单棵树的预测结果。随机森林的泛化能力通常优于决策树,减少了过拟合的风险。

数据处理

  • 问题:在处理连续特征时,决策树如何选择分割点?
  • 答案:在处理连续特征时,决策树可以通过以下步骤选择分割点。首先对特征值进行排序,然后遍历所有可能的分割点(相邻特征值的中点),计算每个分割点的度量标准(如信息增益或基尼不纯度),最后选择度量标准最优的分割点进行分割。
  • 问题:在处理缺失值时,决策树如何进行分割?
  • 答案:在处理缺失值时,决策树可以采用以下策略。忽略含有缺失值的样本,只使用完整的样本进行分割;在分类任务中,可以将缺失值作为一个新的类别处理;使用缺失值填充法(如中位数、众数等)对缺失值进行填充,然后进行分割;通过权重调整法,根据数据的完整程度为分割点计算度量标准。
相关推荐
Tech Synapse2 小时前
基于Surprise和Flask构建个性化电影推荐系统:从算法到全栈实现
python·算法·flask·协同过滤算法
終不似少年遊*2 小时前
国产之光DeepSeek架构理解与应用分析04
人工智能·python·深度学习·算法·大模型·ds
天天扭码2 小时前
一分钟解决 | 高频面试算法题——最大子数组之和
前端·算法·面试
杰杰批2 小时前
力扣热题100——矩阵
算法·leetcode·矩阵
明月看潮生2 小时前
青少年编程与数学 02-016 Python数据结构与算法 28课题、图像处理算法
图像处理·python·算法·青少年编程·编程与数学
_GR2 小时前
2025年蓝桥杯第十六届C&C++大学B组真题及代码
c语言·数据结构·c++·算法·贪心算法·蓝桥杯·动态规划
羊小猪~~2 小时前
深度学习基础--CNN经典网络之InceptionV3详解与复现(pytorch)
网络·人工智能·pytorch·python·深度学习·机器学习·cnn
照海19Gin3 小时前
数据结构中的宝藏秘籍之广义表
c语言·数据结构·算法
小oo呆4 小时前
【自然语言处理与大模型】模型压缩技术之剪枝
算法·机器学习·剪枝