当前位置: 首页 > 科技观察

机器学习:说说决策树

时间:2023-03-18 16:47:01 科技观察

我们说了逻辑回归的基本原理和梯度下降的推导过程。该编码实现了逻辑回归的梯度下降算法,这是一种分类算法。今天,我们继续开启分类算法之旅。是一种高效简洁的分类算法。有一个基于它的集成算法。是一种可视化效果较好的算法。该算法是决策树。1一个例子有一堆水果,包括香蕉、苹果和杏子。现在对它们进行分类,有两个特征可以选择:形状和大小。其中shape的取值有一个:圆形和不规则,size的取值有:比较大和比较小。现在来分类,我们可以这样做:首先,根据特征:形状,如果不是圆的,那么一定是香蕉,这是叶节点;如果是圆的,再根据大小特征进一步判断,如果比较大的话就是苹果,如果不是的话就是杏,至此我们得到了两个叶子节点,在这个分类位置,我们得到了正确划分三种水果的方法。你可以理解刚才的过程。这是一个决策分类,一个建树的过程。是一棵树,看起来有点高。仔细想想,就是一系列if和else的嵌套。一棵树只是逻辑上的一种相似而已。刚刚给出的例子中,有两个特征:shape和size,选择了第一个特征:shape作为第一个分割点,size作为第二个分割点,那么第二个特征是不是不能选为第一个分割点?这个选择有什么公式依据吗?2.选择分裂点的依据在前面的例子中,有三种水果。现在假设杏子都被宝宝吃了,现在只有香蕉和苹果,此时需要对它们进行分类。这时候你就聪明了,你肯定会按照特征:形状来对它们进行分类,因为这样会把它们分开。这时候我们说这种藏品的纯度更高。前三类水果的特点是形状。纯度的概念很好理解。种类越少,纯度越高。自然,这两种的纯度更高。这时,有人提出了一个与之相反但又不太好理解的概念:熵。他们是对手:熵越大,越不纯;熵越小,越纯净。这是一个概念,那么如何用一个公式来量化熵:其中i等于苹果、香蕉、杏子,P(i)是获得集合中某个水果的概率。试想一下,如果我们想要更好地对某个集合进行分类,我们会怎么做呢?我们肯定会先选择一个特征,这样我们用这个特征分类的时候,他们可以最大程度的降低熵,提高分类的纯度。极限情况是集合中有100个元素(集合中只有两类水果),根据某个最优特征,直接将它们分成两类,一类是苹果,一类是杏子,因此熵直接等于0。这个特性就是所谓的信息增益,熵减得越多,信息增益越大。在很多情况下,不会出现上面提到的极限情况。就像文章开头给出的例子一样,按照形状划分后,熵变小了,但是不等于0。比如一开始三种水果的熵等于0.69.现在根据Aftershapesplitting,熵等于0.4,所以信息增益为0.69–0.4=0.29。如果按照尺寸划分信息增益为0.1,那么我们回到第一个划分特征:形状。这个方法有问题吗?3信息增益越大,分类效果越好?这是一个只根据信息增益选择分割特征点的bug。请看下面的例子。如果某个特征是水果的唯一标识属性:number,那么如果此时选择这个特征,一共100个叶子节点(假设这堆水果有100个),每个叶子节点只包含1个样本,而这个最大信息增益是0.69–0=0.69。但是,这是一个好的分类吗?每个样本被视为一个单独的叶节点。101号水果来的时候,你不知道它分到了哪个叶节点,也不知道它属于哪一类!所以,这道题感觉需要除以一个变量来排除这种情况的存在。就是信息增益率。它不仅考虑了选择某个分裂点后所能获得的信息增益,还除以这些分裂节点的熵值。这是什么意思?刚才不是分裂出了100个节点,那么这些节点本身的总熵是多少:除以上面的数之后,信息增益率往往不会那么大。这就是传说中的ID3到C4.5的改进。4基尼系数,类似于熵的概念,只需要知道基尼系数类似于熵的概念,只是量化公式不同,说明理解了。至于公式长什么样子,用的时候查一下就行了。看看远处的大海,看看海边的美景,放松一下吧!5展望以上介绍了决策树的一些概念和分裂点选择的基本方法。明天打算利用sklearn库的API,可视化构建决策树的过程,分析决策树中最重要的部分:剪枝策略。