全文2.5K字,推荐阅读时间5分钟。尽管在机器学习中使用决策树已经有一段时间了,但该技术仍然很强大且很受欢迎。本指南首先提供该方法的介绍性知识,然后向您展示如何构建决策树、计算重要的分析参数以及绘制结果树。决策树是我学习过的一种流行且强大的机器学习算法。它是一种非参数监督学习方法,可用于分类和回归任务。目标是创建一个模型,通过学习从数据特征推断出的简单决策规则来预测目标变量的值。对于分类模型,目标值本质上是离散的,而对于回归模型,目标值由连续值表示。与神经网络等黑盒算法不同,决策树相对容易理解,因为它们共享内部决策逻辑(您将在下一节中找到详细信息)。尽管许多数据科学家认为这是一种古老的方法,并且由于过拟合问题他们可能会怀疑其准确性,但最近的基于树的模型(例如随机森林(装袋)、梯度提升(提升方法)和XGBoost(提升方法)建立在决策树算法的顶层。因此,决策树背后的概念和算法非常值得理解!决策树算法有4种流行类型:ID3,CART(分类和回归树),卡方和方差减少。在这个这篇文章,我只关注ID3和CART的分类树和描述。假设你每个星期天打网球,每次都邀请你最好的朋友克莱尔陪你。有时克莱尔加入,有时不加入。对她来说,这取决于很多天气、温度、湿度和风等因素。我想使用下面的数据集来预测克莱尔是否会和我一起打网球。一种直观的方法是通过决策树。在这个决策中树形图,我们有:根节点:决定将整个种群或样本数据进一步拆分为两个或多个同质集合的第一个拆分。在我们的例子中,Outlook节点。分裂:这是将一个节点分成两个或多个子节点的过程。决策节点:该节点决定是否/何时将子节点拆分为其他子节点。这里我们有Outlook节点、Humidity节点和Windy节点。叶:预测结果的终端节点(分类或连续值)。彩色节点(即“是”和“否”节点)是叶子。问题:根据什么属性(特征)来拆分?什么是最好的拆分?答案:使用信息增益最高的属性或基尼增益ID3(迭代二分法)ID3决策树算法使用信息增益来确定分割点。为了衡量我们获得了多少信息,我们可以使用熵来计算样本的同质性。问题:什么是“熵”?它的作用是什么?答案:这是衡量数据集中不确定性的量度。熵控制决策树如何决定拆分_data。它实际上会影响决策树如何绘制边界。_熵方程:定义:决策树中的熵代表同质性。如果样本完全均匀,则熵为0(概率=0或1),如果样本均匀分布在各个类别中,则熵为1(概率=0.5)。下一步是分裂以最小化熵。我们使用信息增益来确定最佳拆分。让我以打网球为例,逐步向您展示如何计算信息增益。在这里,我只是告诉大家如何计算Outlook的信息增益和熵。第1步:计算属性的熵-预测:克莱尔会打网球/克莱尔不会打网球在这个例子中,我将使用这个列联表来计算目标变量的熵:玩过吗?(无论)。有14个观察结果(10个“是”和4个“否”)。“是”的概率(p)是0.71428(10/14),“否”的概率是0.28571(4/14)。然后,您可以使用上面的公式计算目标变量的熵。第二步:使用列联表计算每个特征的熵为了说明这一点,我以Outlook为例来说明它的熵是如何计算的。总共有14个观察值。汇总这些行,我们可以看到其中5个属于Sunny,4个属于Rainy,还有5个属于Rainy。所以,我们可以找出晴天、阴天和下雨的概率,然后用上面的公式一一计算它们的熵。计算步骤如下。计算特征2的熵的示例(Outlook)。定义:信息增益是节点分裂时熵的减少或增加。InformationGainEquation:X_在_sklearn.tree中_Y_上获得的信息。_DecisionTreeClassifier:_“熵”表示获取信息为了可视化如何使用信息获取构建决策树,我刚刚应用了sklearn.tree。DecisionTreeClassifier生成图形。第三步:选择信息增益最大的属性作为根节点“湿度”,信息增益最高,为0.918。湿度是根节点。Step4_:_熵为0的分支为叶节点,熵大于0的分支需要进一步分裂。第五步:用ID3算法递归增长节点,直到所有数据都被分类。您可能听说过C4.5算法,它是对ID3的改进,它使用“增益比”作为信息增益的扩展。使用增益比的优点是通过使用SplitInfo归一化信息增益来处理偏差。我不会在这里详细介绍C4.5。有关更多信息,请在此处查看(DataCamp)。CART(ClassificationandRegressionTrees)CART的另一种决策树算法使用Gini方法来创建分裂点,包括_Gini指数(Giniimpurity)和Ginigain。_基尼系数的定义:通过随机选择标签给样本分配错误标签的概率,也用于衡量树中特征的重要性。在计算每个属性的基尼增益后,创建sklearn.tree。DecisionTreeClassifier将选择Gini增益最大的属性作为根节点。gini为0的分支是叶子节点,而gini大于0的分支需要进一步分裂。递归地增长节点,直到所有数据都被分类(参见下面的详细信息)。如前所述,CART还可以使用不同的分割标准来处理回归问题:确定分割点的均方误差(MSE)。回归树的输出变量是数值变量,输入变量允许连续变量和分类变量的混合。你可以通过DataCamp查看更多关于回归树的信息。大的!你现在应该明白如何计算熵、信息增益、基尼系数和基尼增益了!问题:那么……我应该使用哪个?基尼系数还是熵?答:通常,结果应该是一样的……我个人更喜欢基尼指数,因为它不涉及计算量更大的日志。但为什么不尝试两者。让我用表格的形式总结一下吧!使用ScikitLearn构建决策树ScikitLearn是一个用于Python编程语言的免费机器学习库。Step1:导入数据Step2:将分类变量转换为虚拟变量/指标变量“Temperature”,“Outlook”和“Wind”的分类变量都转换为虚拟变量。第三步:分离训练集和测试集第四步:通过Sklean导入决策树分类器第五步:可视化决策树图代码和数据集请点击这里。为了提高模型性能(超参数优化),应该调整超参数。有关更多详细信息,请查看此处。决策树的主要缺点是过度拟合,尤其是当树非常深时。幸运的是,最近的基于树的模型(包括随机森林和XGBoost)是建立在决策树算法之上的,它们通常具有强大的建模技术,并且比单个决策树更具动态性,因此性能更好。因此,准确理解决策树背后的概念和算法对于为学习数据科学和机器学习打下良好的基础非常有用。总结:现在你应该知道如何构建决策树如何计算“熵”和“信息增益”如何计算“基尼系数”和“基尼系数”什么是最佳分裂?如何用Python画决策树图别走,有惊喜!精心整理了2TB的计算机/Python/机器学习/深度学习相关的视频课和书籍,价值1W元。关注微信公众号“计算机与AI”,点击下方菜单获取网盘链接。
