视频87.决策树模型_哔哩哔哩_bilibili笔记吴恩达机器学习笔记 - Sanzo Blog本章实验对照着jupyter上的英文看中文翻译版内容更全(99 封私信) 王者归来全新升级吴恩达《机器学习2022》——民间自制中文翻译版 - 知乎王者归来全新升级吴恩达《机器学习2022》 C2-W4 - Heywhale.com下述所有一、...都有实验即上述链接juypter和汉化版的实验都要看一、决策树决策树是一种极其强大且在工业界和各类机器学习竞赛中被广泛使用的算法。1、案例背景猫咪分类器任务在猫咪领养中心根据动物的特征判断它是否为猫。数据集包含 10 个样本5只猫5只狗。特征Features目前使用的是类别型特征Categorical values即每个特征只有离散的有限值。例如耳朵形状Pointy / Floppy脸型Round / Not round是否有胡须Present / Absent目标这是一个二分类任务y 1 代表猫y 0 代表非猫。2、决策树的结构与术语决策树模型在计算机科学的定义中看起来像是一棵倒置的树根在顶部叶子在底部。它由以下核心部分组成根节点Root Node树的最顶端节点是模型进行第一次特征判断的起点。决策节点Decision Nodes中间的椭圆形节点。它们负责检查某个特征的值并根据结果决定走向左分支还是右分支。叶节点Leaf Nodes底部的矩形节点。它们代表最终的分类结果或预测值。3、决策树的推理过程当输入一个新的测试样本时模型会按照以下路径进行推理从根节点开始检查当前样本在该节点对应特征上的值。根据特征值顺着相应的分支向下走到达下一个决策节点。重复上述过程直到到达最底部的叶节点。叶节点输出最终的预测结果。4、决策树算法的核心目标对于同一个数据集可以构建出多种不同形态的决策树有些表现好有些表现差。决策树机器学习算法的核心任务就是从所有可能的决策树中寻找并训练出一棵既能很好地拟合训练集又能在新数据交叉验证集和测试集上表现出色的最优决策树。下一步预告既然有无数种构建决策树的方法算法究竟是如何从训练数据中“学习”并挑选出最佳决策树的呢下一节视频将为你揭晓决策树的学习机制。二、决策树的学习机制1、决策树的构建流程构建决策树是一个自顶向下、不断拆分数据的递归过程根节点拆分从所有训练样本开始选择一个特征如耳朵形状将数据分为两个子集。处理分支针对拆分出的左分支和右分支分别重复上述过程继续选择下一个特征进行拆分。生成叶节点当某个节点下的样本达到“纯Pure”状态即 100% 是猫或 100% 是狗时停止拆分直接创建一个叶节点进行预测。2、构建过程中的关键决策1如何选择拆分特征——最大化纯度在每一个决策节点算法都需要在可用的特征中选择一个进行拆分。核心目标最大化纯度Maximize Purity。算法会选择那个能让拆分后的左右子集尽可能“纯”即只包含单一类别的特征。直观理解如果有一个特征能完美区分猫和狗例如“是否有猫DNA”那就是最优选择。在实际特征中算法会评估每个特征拆分后的纯度挑选表现最好的那个。2何时停止拆分除了达到 100% 纯度外为了防止决策树过于庞大和过拟合通常还需要引入以下停止拆分的标准限制最大深度Maximum Depth设定树的最大层数从根节点到当前节点的跳跃次数。当达到最大深度时强制停止拆分。纯度提升过小如果继续拆分带来的纯度提升微乎其微则停止拆分。节点样本数过少如果当前节点包含的样本数量低于设定的阈值则停止拆分直接将其作为叶节点。3、算法的演进与工程实践历史背景决策树算法之所以看起来包含许多不同的规则和细节是因为在历史演进中不同的研究者不断提出新的改进策略如不同的拆分标准、不同的停止条件等这些策略最终融合成了一个强大的算法。实践建议虽然从零开始手写决策树算法涉及许多复杂的决策但在实际应用中你可以直接使用成熟的开源机器学习包它们已经内置了这些最佳实践让你能轻松高效地训练决策树。下一步预告既然选择特征的核心目标是“最大化纯度”那么我们在数学上该如何量化和衡量这种“纯度”或“不纯度”呢下一节视频将引入一个关键概念——熵Entropy。三、熵解决二、2、构建过程中的关键决策1、熵Entropy测量决策树的“纯度”1什么是熵熵是衡量一组数据不纯度Impurity的指标。高纯度当样本集中全部是同一类别如 100% 是猫或 100% 是狗时熵值为 0即完全不纯。低纯度当样本集中正负类别各占一半如 50% 是猫50% 是狗时数据最为混乱熵值达到最大值 1。2熵的数学公式假设是样本集中正类如猫的比例那么负类非猫的比例​ 。熵的计算公式为计算注意事项对数底数决策树中通常使用以 2 为底的对数​ 这样可以将熵的最大值标准化为 1便于直观理解。特殊值处理当​ 或​ 为 0 时公式中会出现。虽然数学上趋于负无穷但在计算熵时我们约定。3举例最混乱熵 16个样本中3猫3狗。较混乱熵 ≈ 0.926个样本中2猫4狗。因为比 50/50 稍微偏离一点所以不纯度有所下降但依然很高。较纯粹熵 ≈ 0.656个样本中5猫1狗。最纯粹熵 06个样本全是猫或全是狗。4其他不纯度指标除了熵之外开源机器学习库中还会使用其他形状类似的函数来衡量不纯度例如基尼不纯度Gini Impurity。两者在实际应用中通常都能取得很好的效果本课程主要聚焦于熵。下一步预告现在我们有了衡量“不纯度”的尺子下一节视频将讲解如何利用这个尺子来评估不同的特征从而决定在决策树的节点上究竟该选择哪个特征进行拆分。2、如何选择拆分特征/何时停止拆分——信息增益1为什么需要计算信息增益在决策树的每个节点算法需要评估所有可用的特征并选择能让数据纯度提升最多即不纯度降低最多的特征。为了量化这种提升我们引入了信息增益的概念。2加权平均熵当我们根据某个特征将数据拆分到左右两个子分支时不能仅仅比较两个分支的绝对熵值还需要考虑每个分支包含的样本数量。如果某个分支包含大量样本且熵值很高这比只有少量样本的高熵分支要糟糕得多。因此我们需要计算左右子分支熵值的加权平均值。权重即为进入该分支的样本占总样本的比例例如10个样本中有5个进入左分支则左分支权重。3信息增益Information Gain的定义在实际算法中我们通常不直接使用加权平均熵而是计算信息增益。信息增益定义为信息增益 拆分前根节点的熵 - 拆分后左右子分支的加权平均熵它衡量的是通过进行这次拆分我们成功减少了多少“不纯度”。4如何选择最佳拆分特征算法会遍历当前节点的所有可用特征分别计算它们的信息增益。最终选择信息增益最大的那个特征作为当前节点的拆分依据。因为这意味着该特征能最大程度地提升数据的纯度。3何时停止拆分计算信息增益不仅是为了挑选特征它还与之前提到的“停止拆分条件”直接相关如果所有可用特征带来的信息增益都非常小低于设定的阈值算法就会停止拆分。这可以防止决策树为了强行拆分而变得过于庞大从而有效降低过拟合Overfitting的风险。下一步预告现在我们已经掌握了如何计算信息增益并选择特征下一节视频将把之前学到的所有内容包括构建流程、停止条件和特征选择整合在一起为你展示构建决策树的完整算法步骤。3、【总结】构建完整决策树的宏观算法流程将之前学到的所有知识点包括信息增益、停止拆分条件等进行了整合为你展示了构建完整决策树的宏观算法流程。1构建决策树的完整算法流程决策树的构建是一个不断重复的迭代过程根节点初始化将所有训练样本放在根节点计算所有可用特征的信息增益选择增益最大的特征进行首次拆分。数据划分根据选定的特征将数据集拆分为左右两个子集并分别送入对应的分支。递归拆分对左右子分支不断重复上述“计算信息增益 - 选择最佳特征 - 拆分”的过程。触发停止条件当满足以下任一条件时停止拆分并生成叶节点节点内的样本达到 100% 纯度熵为 0。树的深度达到了预设的最大深度Maximum Depth。进一步拆分带来的信息增益低于设定的阈值。节点内的样本数量低于设定的下限。2核心概念递归算法Recursive Algorithm构建决策树在计算机科学中是递归算法的经典应用直观理解构建整棵决策树的过程实际上等同于在左、右子集上分别重新训练两棵更小的决策树最后将它们拼接在一起。代码实现在编写代码时这表现为一个函数调用自身。即使你不完全理解递归的底层逻辑也不必担心现有的开源库已经为你封装了这些复杂操作但如果你打算从零手写决策树递归则是必须掌握的核心步骤。3关键超参数的选择与调优在构建决策树时有几个关键的参数需要合理设置以平衡模型的复杂度与过拟合风险最大深度Maximum Depth深度越大模型越复杂类似于使用高次多项式或更大的神经网络能拟合更复杂的数据但也更容易过拟合。可以通过交叉验证Cross Validation来挑选最佳的最大深度。信息增益阈值如果拆分带来的信息增益微乎其微算法会拒绝拆分从而保持树的精简。最小样本数阈值限制节点内最少需要包含的样本数量防止模型对极少数的异常样本过度敏感。下一步预告到目前为止我们讨论的特征都只有两个可能的取值如有/无胡须。但在实际应用中特征往往有多个离散类别如颜色分为红、黄、蓝。下一节视频将探讨如何处理具有多个离散取值的特征。四、独热编码处理具有多个离散类别的特征讲解如何处理具有多个离散类别Categorical Values的特征引入了一个非常实用且通用的技术——独热编码One-Hot Encoding。1、问题背景多于两个类别的特征在之前的例子中特征都是二元的如尖耳朵/垂耳朵。但在实际应用中特征可能包含多个离散值。例如耳朵形状现在有三种可能尖耳朵Pointy、垂耳朵Floppy和椭圆耳朵Oval。2、什么是独热编码One-Hot Encoding与其让一个特征直接取三个值独热编码的做法是将一个多类别特征拆分为多个二元0或1特征。如果原始特征有 k 个可能的值我们就创建 k 个新的二元特征。对于“耳朵形状”这个例子我们会创建三个新特征is_pointy是否尖耳、is_floppy是否垂耳和is_oval是否椭圆耳。在每个样本中这三个特征里有且仅有一个的值为 1其余全为 0。因为那个唯一的“1”就像是“点亮”的热点Hot所以这种方法被称为“独热编码”。3、独热编码对决策树的意义经过独热编码转换后所有的新特征都变成了只能取 0 或 1 的二元特征。这意味着我们之前学到的所有决策树算法包括信息增益的计算和拆分规则都可以直接适用无需做任何修改。4、独热编码的通用性还可用于神经网络和逻辑回归独热编码不仅仅是决策树的专属技巧。由于神经网络和逻辑回归等算法通常要求输入必须是数值独热编码提供了一种将文本或类别型特征转化为数值特征的标准方法使其能够无缝输入到这些模型中进行训练。下一步预告目前我们已经解决了离散类别特征的处理问题。但在实际应用中很多特征是连续数值Continuous Value Features比如动物的体重或身长。下一节视频将探讨如何让决策树处理这种可以取任意数值的连续型特征。五、处理连续型特征探讨决策树如何处理连续值特征Continuous Value Features例如动物的体重。1、连续值特征的拆分方式与离散特征如耳朵形状不同连续值特征不能直接按类别拆分而是需要设定一个阈值Threshold来进行二元拆分。拆分规则将数据分为“特征值 ≤ 阈值”和“特征值 阈值”两个子集。目标算法需要找出最佳的阈值使得拆分后的数据纯度提升最大。2、举例1如何寻找最佳阈值算法不会盲目猜测而是会系统性地测试多个可能的阈值候选阈值的选择通常的做法是将当前节点的所有样本按该特征的值进行排序然后取相邻两个样本值之间的中点Midpoints作为候选阈值。例如如果有 10 个样本就会产生 9 个候选阈值。计算信息增益针对每一个候选阈值计算拆分后的加权平均熵进而得出信息增益Information Gain。2全局最优选择在评估完当前节点所有可用特征包括离散特征和连续特征的所有候选阈值后算法会选择带来最高信息增益的那个特征及其对应的阈值进行拆分。案例说明在视频中测试了体重阈值为 8、9、13 等情况发现当阈值为 9 时信息增益最高0.61因此算法最终选择“体重 ≤ 9”作为该节点的拆分条件。3、递归构建一旦确定了最佳连续值特征和阈值数据就会被一分为二。随后算法会对左右两个子集递归地应用相同的过程继续寻找最佳拆分点直到满足停止条件。总结要让决策树处理连续值特征只需在每个节点针对该特征尝试不同的阈值进行常规的信息增益计算并选择能带来最大信息增益的特征和阈值组合即可。下一步预告至此决策树的核心分类算法已讲解完毕。接下来的【决策树下】将探讨如何将决策树泛化到回归树Regression Trees以解决预测连续数值而非离散类别的回归问题。