机器学习经典十大算法

机器学习/人工智能的子领域在过去几年越来越受欢迎。目前大数据在科技行业已经炙手可热,而基于大量数据来进行预测或者得出建议的机器学习无疑是非常强大的。一些最常见的机器学习例子,比如Netflix的算法可以根据你以前看过的电影来进行电影推荐,而Amazon的算法则可以根据你以前买过的书来推荐书籍。

机器学习算法可以分为三大类:监督学习、无监督学习和强化学习。监督学习可用于一个特定的数据集(训练集)具有某一属性(标签),但是其他数据没有标签或者需要预测标签的情况。无监督学习可用于给定的没有标签的数据集(数据不是预分配好的),目的就是要找出数据间的潜在关系。强化学习位于这两者之间,每次预测都有一定形式的反馈,但是没有精确的标签或者错误信息。

经典十大算法包括: 决策树朴素贝叶斯分类最小二乘法逻辑回归支持向量机集成方法聚类算法主成分分析(PCA)Boosting 和 AdaBoost随机森林。接下来将对这十大算法进行逐一讲解。这篇先讲决策树算法。

决策树算法

在机器学习中,对于处理分类问题,其中比较流行的一个算法便是”决策树”。决策树的生成算法有ID3, C4.5和C5.0等。决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。

监管学习就是给出一堆样本,每个样本都有一组属性和一个分类结果,也就是分类结果已知,那么通过学习这些样本得到一个决策树,这个决策树能够对新的数据给出正确的分类。这里通过一个简单的例子来说明决策树的构成思路:

小明同学和小方同学为了准备即将进行的校园羽毛球大赛,准备近一个月的时间去练习打球。不过,并不是每一天都适合练球。通常,小明和小方需要考虑一些因素来决定今天是否适合打羽毛球,比如:今天是否有场地(若没有室内场地,就只能选择室外场地),如果是要在室外练习的话,天气是否合适,是否会刮风等,例如下表所示:

实际上,上述的问题是一个典型的智能决策问题。首先,它有一些输入的特征,比如场地是市内还是室外,气温是炎热,天气是下雨还是晴天,风速是大还是小;小明和小方通过某种特定的算法,对这一系列的特征进行综合判断,从而得出今天是否应该打球的决策。可以看到,对一个智能决策系统,它有三个重要的组成部分,即特征、算法、决策。下图体现了一个典型的智能决策系统的组成部门,以及各部分之间的输入/输出关系。

在上面的例子中,场地,天气,温度,风速特征选取完成后,开始进行决策,在我们的问题中,决策的内容实际上是将结果分成两类,即是(1)否(0)练球。这一类智能决策问题称为分类问题,决策树是一种简单的处理分类问题的算法.决策树的本质是由多个判断节点组成的树形函数,以一个样本的特征向量X=(X1,X2,X3…Xd) 作为输入,返回一个“决策”,例如判断具有该特征的样本属于哪个类别。简单地说,我们从一个“树根“节点开始,每次生出几个(例如2)分叉节点(称为子节点),再将子节点当成新的根节点,继续往下生出新的子节点,如此重复,直到满足某些停止条件停止决策树的生长。当一棵决策树建立完毕后,我们称最下面的节点(无子节点)为叶节点。其他的节点成为非叶节点。每个非叶节点与一个特征属性相关联,根据此特征属性的值的不同,进行子节点的分叉操作。

所以决策树的生成主要分以下两步,这两步通常通过学习已经知道分类结果的样本来实现。

  • 1、节点的分裂:一般当一个节点所代表的属性无法给出判断时,则选择将这一节点分成2个子节点(如不是二叉树的情况会分成n个子节点)

  • 2、阈值的确定:选择适当的阈值使得分类错误率最小 (Training Error)。

比较常用的决策树有ID3,C4.5和CART(Classification And Regression Tree),CART的分类效果一般优于其他决策树。下面介绍具体步骤。

ID3: 由增熵(Entropy)原理来决定那个做父节点,那个节点需要分裂。对于一组数据,熵越小说明分类结果越好。熵定义如下:
Entropy=−sum[p(xi)∗log2(P(xi)]Entropy=- sum [p(x_i) * log2(P(x_i) ] Entropy=−sum[p(xi​)∗log2(P(xi​)]
其中p(x_i) 为x_i出现的概率。假如是2分类问题,当A类和B类各占50%的时候,Entropy=−(0.5∗log2(0.5)+0.5∗log2(0.5))=1Entropy = - (0.5*log_2( 0.5)+0.5*log_2( 0.5))= 1Entropy=−(0.5∗log2​(0.5)+0.5∗log2​(0.5))=1

当只有A类,或只有B类的时候,
Entropy=−(1∗log2(1)+0)=0Entropy= - (1*log_2( 1)+0)=0 Entropy=−(1∗log2​(1)+0)=0

所以当Entropy最大为1的时候,是分类效果最差的状态,当它最小为0的时候,是完全分类的状态。因为熵等于零是理想状态,一般实际情况下,熵介于0和1之间。

熵的不断最小化,实际上就是提高分类正确率的过程。

C4.5:通过对ID3的学习,可以知道ID3存在一个问题,那就是越细小的分割分类错误率越小,所以ID3会越分越细.但是这种分割显然只对训练数据有用,对于新的数据没有意义,这就是所说的过度学习(Overfitting)。

分割太细了,训练数据的分类可以达到0错误率,但是因为新的数据和训练数据不同,所以面对新的数据分错率反倒上升了。决策树是通过分析训练数据,得到数据的统计信息,而不是专为训练数据量身定做。

所以为了避免分割太细,c4.5ID3进行了改进,C4.5中,优化项要除以分割太细的代价,这个比值叫做信息增益率,显然分割太细分母增加,信息增益率会降低。除此之外,其他的原理和ID3相同。

CART是一个二叉树,也是回归树,同时也是分类树,CART的构成简单明了。CART只能将一个父节点分为2个子节点。CART用GINI指数来决定如何分裂:

GINI指数:总体内包含的类别越杂乱,GINI指数就越大(跟熵的概念很相似)

CART和ID3一样,存在偏向细小分割,即过度学习(过度拟合的问题),为了解决这一问题,对特别长的树进行剪枝处理,直接剪掉。以上的决策树训练的时候,一般会采取Cross-Validation法。

ID3,C4.5,CART三种算法的区别

(1) ID3算法以信息增益为准则来进行选择划分属性,选择信息增益最大的;

(2) C4.5算法先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的;

(3) CART算法使用“基尼指数”来选择划分属性,选择基尼值最小的属性作为划分属性.

代码实现

https://github.com/Erikfather/Decision_tree-python

参考文献

知乎:https://zhuanlan.zhihu.com/p/33696558
https://zhuanlan.zhihu.com/p/30059442

机器学习十大经典算法之决策树相关推荐

  1. 机器学习十大经典算法之岭回归和LASSO回归

    机器学习十大经典算法之岭回归和LASSO回归(学习笔记整理:https://blog.csdn.net/weixin_43374551/article/details/83688913

  2. 机器学习十大经典算法:深入浅出聊贝叶斯决策(贝叶斯公式,最小风险贝叶斯,最小错误贝叶斯)

    前言    常听人说,在学习一个东西时,如果能够深入浅出的讲给别人听,才算是真的懂了.最近正好在学模式识别,于是就用它来练笔了.贝叶斯决策(Bayes Decision) 是十大经典机器学习算法之一, ...

  3. pagerank数据集_机器学习十大经典算法-PageRank(附实践代码)

    Yo, yo, check it out. 保证看完不晕倒... 如果公式让你脑瓜疼,请忽略公式,或者忽略脑瓜. Kagging咖金:推荐系统之关联规则(附实践代码)​zhuanlan.zhihu.c ...

  4. 机器学习十大经典算法之KNN最近邻算法

    KNN简介 KNN(K-NearestNeighbor)是机器学习入门级的分类算法,非常简单.它实现将距离近的样本点划为同一类别:KNN中的K指的是近邻个数,也就是最近的K个点 :根据它距离最近的K个 ...

  5. 机器学习十大经典算法

    本文介绍了机器学习新手需要了解的 10 大算法,包括线性回归.Logistic 回归.朴素贝叶斯.K 近邻算法等. 在机器学习中,有一种叫做「没有免费的午餐」的定理.简而言之,它指出没有任何一种算法对 ...

  6. 机器学习十大经典算法之随机森林

    随机森林简介 随机森林是机器学习一种常用的方法.它是以决策树为基础,用随机的方式排列建立的,森林里每个决策树之间都是没有关联的. 在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策 ...

  7. 机器学习十大经典算法之AdaBoost

    集成学习Boosting 集成学习大致可分为两大类:Bagging和Boosting.Bagging一般使用强学习器,其个体学习器之间不存在强依赖关系,容易并行.Boosting则使用弱分类器,其个体 ...

  8. 机器学习十大经典算法之K-Means聚类算法

    聚类介绍 聚类在机器学习,数据挖掘,模式识别,图像分析以及生物信息等领域有广泛的应用.聚类是把相似的对象通过静态分类的方法分成不同的组别或者更多的子集(subset),这样让在同一个子集中的成员对象都 ...

  9. 机器学习十大经典算法之逻辑回归

    逻辑回归简介 逻辑回归虽然名称有回归两字,但是用来做分类算法的,大家都熟悉线性回归,一般形式是Y=aX+bY=aX+bY=aX+b,y的取值范围是[-∞, +∞].因其简单而受到工业界的关注. Y的取 ...

最新文章

  1. linux 互斥锁销毁_c-销毁锁定的互斥锁时pthread_mutex_destroy的正...
  2. yii2.0验签组件(jwt)
  3. 苹果原壁纸高清_周易壁纸 | 八卦图阵高清壁纸
  4. 【第一期】史上最全电子漫画合集,收藏了。
  5. 【latex】输入角度符号°
  6. Java学习笔记2.3.3 运算符与表达式 - 关系运算符
  7. sql server动态分页
  8. 订单系统需求分析说明
  9. 大厂必背 MySQL优化面试题
  10. POJ 3764 DFS+trie树
  11. 装修、家具设计标准尺寸参考
  12. 最全的PC【UA】UserAgent大全
  13. 2023年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多
  14. 解剖NetGuard
  15. Spark 安装与配置 (Spark HA 集群部署)
  16. C语言 大整数运算(加、减、乘)
  17. Anaconda Distribution :流行的Python数据科学平台
  18. 【C语言】sizeof常量字符串
  19. windows7系统登陆密码破解技巧
  20. python微信搭建,教你用python一步一步搭建微信公眾平台(一)

热门文章

  1. Object.assign()怎么用?
  2. 【GRE协议】CentOS配置GRE隧道
  3. A Spy in the Metro UVA - 1025
  4. SIP学习之网络链接
  5. WS-*协议栈及相关概念
  6. JavaScript高级程序设计之什么是原型模式
  7. 中国互联网络发展状况统计报告
  8. python文件读取每一行操作
  9. xlsx文件和csv文件的相互转化
  10. 单片机实现水位控制C语言,单片机课程设计 水位自动控制.doc