全文2.5K字,倡议浏览工夫5分钟。
只管决策树在机器学习中的应用曾经存在了一段时间,但该技术依然弱小且受欢迎。本指南首先提供对该办法的介绍性常识,而后向您展现如何构建决策树,计算重要的剖析参数以及绘制后果树。
决策树是我学到的风行且功能强大的机器学习算法之一。这是一种非参数监督学习办法,可用于分类和回归工作。目标是创立一个模型,该模型通过学习从数据特色推断出的简略决策规定来预测指标变量的值。对于分类模型,目标值实质上是离散的,而对于回归模型,目标值由间断值示意。与黑盒算法(例如神经网络)不同, 决策树 比拟容易了解,因为它共享外部决策逻辑(您将在下一节中找到详细信息)。
只管许多数据科学家认为这是一种旧办法,但因为适度拟合的问题,他们可能对其准确性有所狐疑,但最近的基于树的模型(例如,随机森林(装袋法),梯度加强(晋升办法) )和XGBoost(加强办法)建设在决策树算法的顶部。因而,决策树 背地的概念和算法 十分值得了解!
决策树算法有4种风行类型: ID3, CART(分类树和回归树), 卡方和 方差缩小。
在此文章中,我将仅关注分类树以及ID3和CART的阐明。
设想一下,您每个星期日都打网球,并且每次都邀请您最好的敌人克莱尔(Clare)陪伴您。克莱尔有时会退出,但有时不会。对她而言,这取决于许多因素,例如天气,温度,湿度和风。我想应用上面的数据集来预测克莱尔是否会和我一起打网球。一种直观的办法是通过决策树。
在此 决策树 图中,咱们具备:
- 根节点:决定整个总体或样本数据的第一个拆分应进一步分为两个或更多同构汇合。在咱们的例子中,是Outlook节点。
- 拆分:这是将一个节点分为两个或多个子节点的过程。
- 决策节点:该节点决定是否/何时将一个子节点拆分为其余子节点。在这里,咱们有Outlook节点,Humidity节点和Windy节点。
- 叶子:预测后果(分类或间断值)的终端节点。有色节点(即“是”和“否”节点)是叶子。
问题:基于哪个属性(性能)进行拆分?最佳宰割是什么?答:应用具备最高的属性 信息增益 或 基尼增益
ID3(迭代二分法)
ID3决策树算法应用信息增益来确定决裂点。为了掂量咱们取得了多少信息,咱们能够应用 熵 来计算样本的同质性。
问题:什么是“熵”?它的性能是什么?
答:这是对数据集中不确定性量的度量。 熵管制决策树如何决定拆分 _数据。它实际上影响_决策树_如何 绘制边界。_
熵方程:
定义:决策树中的熵代表同质性。
如果样本是齐全平均的,则熵为0(概率= 0或1),并且如果样本平均地散布在各个类别中,则其熵为1(概率= 0.5)。
下一步是进行拆分,以最大水平地缩小熵。咱们应用 信息增益 来确定最佳拆分。
让我向您展现在打网球的状况下如何逐渐计算信息增益。在这里,我仅向您展现如何计算Outlook的信息增益和熵。
步骤1:计算一个属性的熵—预测:克莱尔将打网球/克莱尔将不打网球
在此示例中,我将应用此列联表来计算指标变量的熵:已播放?(是/否)。有14个观测值(10个“是”和4个“否”)。'是'的概率(p)为0.71428(10/14),'否'的概率为0.28571(4/14)。而后,您能够应用下面的公式计算指标变量的熵。
步骤2:应用列联表计算每个特色的熵
为了阐明这一点,我以Outlook为例,阐明如何计算其熵。共有14个观测值。汇总各行,咱们能够看到其中5个属于Sunny,4个属于阴雨,还有5个属于Rainy。因而,咱们能够找到晴天,阴天和多雨的概率,而后应用上述公式逐个计算它们的熵。计算步骤如下所示。
计算特色2(Outlook)的熵的示例。
定义:信息增益 是节点决裂时熵值的缩小或减少。
信息增益方程式:
X_在_Y_上取得的信息_
sklearn.tree。_DecisionTreeClassifier: _“熵”示意获取信息
为了可视化如何应用信息增益构建决策树 ,我仅利用了sklearn.tree。DecisionTreeClassifier 生成图。
步骤3:抉择信息增益最大的属性 作为根节点
“湿度”的信息增益最高,为0.918。湿度是根节点。
步骤4_:_ 熵为0的分支是叶节点,而熵大于0的分支须要进一步拆分。
步骤5:以ID3算法递归地增长节点,直到对所有数据进行分类。
您可能据说过C4.5算法,对ID3的改良应用了“ 增益比” 作为信息增益的扩大。应用增益比的长处是通过应用Split Info标准化信息增益来解决偏差问题。在这里我不会具体介绍C4.5。无关更多信息,请在此处签出 (DataCamp)。
CART(分类和回归树)
CART的另一种决策树算法应用 Gini办法 创立宰割点,包含_Gini索引(Gini杂质)和Gini增益。_
基尼系数的定义:通过随机抉择标签将谬误的标签调配给样品的概率,也用于测量树中特色的重要性。
在为每个属性计算Gini增益后,创立sklearn.tree。DecisionTreeClassifier 将抉择具备最大Gini增益的属性 作为根节点。 甲 以0基尼分支是叶节点,而具备基尼分支大于0须要进一步决裂。递归地增长节点,直到对所有数据进行分类为止(请参见上面的详细信息)。
如前所述,CART还能够应用不同的宰割规范来解决回归问题:确定宰割点的均方误差(MSE)。回归树的输入变量是数字变量,输出变量容许连续变量和分类变量混合应用。您能够通过DataCamp查看无关回归树的更多信息 。
大!您当初应该理解如何计算熵,信息增益,基尼系数和基尼增益!
问题:那么……我应该应用哪个?基尼系数还是熵?答:通常,后果应该是雷同的……我集体更喜爱基尼指数,因为它不波及计算量更大的 日志 。然而为什么不都尝试。
让我以表格模式总结一下!
应用Scikit Learn构建决策树
Scikit Learn 是针对Python编程语言的免费软件机器学习库。
步骤1:导入数据
步骤2:将分类变量转换为虚构变量/指标变量
“温度”,“ Outlook”和“风”的类别变量都转换为虚构变量。
步骤3:将训练集和测试集离开
第4步:通过Sklean导入决策树分类器
步骤5:可视化决策树图
无关代码和数据集,请点击此处查看。
为了进步模型性能(超参数优化),应调整超参数。无关更多详细信息,请在 此处查看。
决策树的次要毛病是过拟合,尤其是当树特地深时。侥幸的是,最近的基于树的模型(包含随机森林和XGBoost)建设在决策树算法的顶部,并且它们通常具备弱小的建模技术,并且比单个决策树更具动态性,因而性能更好。因而,理解背地的概念和算法 决策树 齐全 是构建学习数据迷信和机器学习打下良好的根底超级有用。
总结:当初您应该晓得
- 如何结构决策树
- 如何计算“熵”和“信息增益”
- 如何计算“基尼系数”和“基尼系数”
- 最佳宰割是什么?
- 如何在Python中绘制决策树图
看完别走还有惊喜!
我精心整顿了计算机/Python/机器学习/深度学习相干的2TB视频课与书籍,价值1W元。关注微信公众号“计算机与AI”,点击下方菜单即可获取网盘链接。