热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

决策树与集成算法

举例:判断是否喜欢玩游戏机器学习算法并没有哪个好哪个不好,而是哪个算法更适合于那种数据类型决策顺序:先按照重要的,然后次重

举例:判断是否喜欢玩游戏

机器学习算法并没有哪个好哪个不好,而是哪个算法更适合于那种数据类型

决策顺序:先按照重要的,然后次重要的,依次类推

即针对每个特征,都做一次切割分类,特征越多越好吗?

根据什么依据去选择根节点?如何切分?

希望透过一次分支后,熵值越小越好。

pi:取到某一个类别的概率

对数函数曲线如下,由于概率值pi属于【0-1】区间,因此对数值恒为负数,H(x)函数中的-p*lg(p) 负号就负责将结果变为正数; 概率越小,对数值负的越厉害,即概率越小,熵越大

信息增益最大的为大当家,其次二当家,三当家,以此类推

Outlook=summy时,H(x) = - [2/5 * lg(2/5) + 3/5 * lg(3/5)] = 0.971

Outlook=overcast时,H(x) = - [0 * lg(0) + 1 * lg(1)] = 0  特别纯粹的一个单一结果,必然发生,熵值为0

Outlook=rainy时,H(x) = - [2/5 * lg(2/5) + 3/5 * lg(3/5)] = 0.971

上式的熵值为,把Outlook作为根节点的熵值

ID3

原始数据中,除了outlook/temperature/humidity/windy 四个特征,还有一个ID编号,每个样本都有一个唯一的编号。14行这14个数据,每行一个ID,对应一个特征。

如果以ID为特征,作为根节点,进行遍历,则ID1遍历后对应的是自己,ID2对应的也是自己,。。。,一直到ID14,对应的都是自己那一个样本;即以ID为根节点遍历后,每个样本都是一个独立的子节点,每个叶子节点对应的熵值都是0,即最终的熵值也是0,即信息增益最大,即以ID为特征进行遍历最佳。

ID只是一个编号,对最终结果没有影响,即ID对应的属性非常稀疏,每个样本的结果又是固定的,熵值很低

C4.5:

ID3 算法信息增益很大,那它自身的熵值又是什么样呢?

ID[1,2,3,...,14], 熵值 = - 1/14 * lg(1/14) , 得到自身的熵值是一个极大的熵值。信息增益率:信息增益/自身的熵值

CART

越纯,概率越接近于1,基尼系数越小

如果拿到的原始数据是连续值,最好先进行离散化,即进行二分,遍历所有的值,找出在哪个点进行二分更合理。

假如有100个特征,每次按照每个特征进行切分,问题是这棵树是否过大?

如果特征多,每次都用到每个特征,则会导致这棵树过大,则需要修整一下,剪枝,防止过拟合。

假设有100个数据样本,构造一棵树,可以将100个样本都落在对应的叶子节点上,每个叶子节点无休止的分割下去,可能有些叶子节点有两个,则继续切割,所有样本都会落到唯一的叶子节点上面,每个叶子节点只有一个样本,即所有的叶子节点都极度纯净,理论上,决策树可以把每一个数据完全分开。但效果不佳,泛化能力较弱

过拟合:训练集上表现很好,测试集上表现很差。

预剪枝:N个特征对应决策树的深度为N,透过限制特征个数来限制决策树的深度

SVM/神经网络等算法,无法做可视化展示,且计算复杂

决策树算法便于分析/可视化展示,效果还不错。

根节点算第一级深度,每向下加一层,深度加1

不可分给的节点为叶子节点。

如果限制深度为3,则效果如下,只保留前三层,第三层以下均不再继续切分

1- 限制叶子节点个数:如下图,所有不可分割的最终节点就是叶子节点,限制的条件为限制圈起来的叶子节点的总书目

2- 如果限制叶子结点个数为5&#xff0c;则子节点个数到达5个时&#xff0c;就不会继续分裂&#xff0c;若下图&#xff0c;只有编号为1-5 5个子节点。深度为第3层切割完成后<到了第4层>&#xff0c;由于叶子节点的数目达到5个&#xff0c;则停止切割

3- 限制叶子节点样本数&#xff1a;每个叶子节点都有对应的各自的样本数。

如果限制的最小样本数为10&#xff0c;当某叶子节点样本数为8&#xff0c;小于10&#xff0c;则不再继续分裂

4- 限制信息增益&#xff1a;基尼系数差值

后剪枝

C(T): 当前损失&#xff1a;叶子节点的样本数 * 熵值或基尼系数

计算每个叶子节点的<叶子节点的样本数 * 熵值或基尼系数>,然后再把它们累加在一起

alpha * |Tleaf|&#xff1a;限制叶子节点个数

将alpha * |Tleaf| 加入到损失函数中&#xff0c;目的是让整体损失值越小越好(叶子节点越多&#xff0c;损失越大)

 


推荐阅读
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 开源真香 离线识别率高 Python 人脸识别系统
    本文主要介绍关于python,人工智能,计算机视觉的知识点,对【开源真香离线识别率高Python人脸识别系统】和【】有兴趣的朋友可以看下由【000X000】投稿的技术文章,希望该技术和经验能帮到 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • cs231n Lecture 3 线性分类笔记(一)
    内容列表线性分类器简介线性评分函数阐明线性分类器损失函数多类SVMSoftmax分类器SVM和Softmax的比较基于Web的可交互线性分类器原型小结注:中文翻译 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
  • Stanford机器学习第九讲. 聚类
    原文:http:blog.csdn.netabcjenniferarticledetails7914952本栏目(Machinelearning)包括单参数的线性回归、多参数的线性 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 数据结构与算法的重要性及基本概念、存储结构和算法分析
    数据结构与算法在编程领域中的重要性不可忽视,无论从事何种岗位,都需要掌握数据结构和算法。本文介绍了数据结构与算法的基本概念、存储结构和算法分析。其中包括线性结构、树结构、图结构、栈、队列、串、查找、排序等内容。此外,还介绍了图论算法、贪婪算法、分治算法、动态规划、随机化算法和回溯算法等高级数据结构和算法。掌握这些知识对于提高编程能力、解决问题具有重要意义。 ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
  • plt python 画直线_机器学习干货,一步一步通过Python实现梯度下降的学习
    GradientDescent-梯度下降梯度下降法(英语:Gradientdescent)是一个一阶最优化算法,通常也称为最速下降法。要使用梯度下降法找 ... [详细]
  • 1.支持向量机通俗导论(理解SVM的三层境界)2.机器学习算法实践- ... [详细]
author-avatar
允儿nothing
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有