####1.前言
最近在看一篇论文——《why_xgboosting_win_every_machine_learning_competition 》,顺便打算写几篇博文,把决策树相关知识做一个整理,从概念开始,经由一些经典算法,最终到对xgboosting的分析。
####2.概念
决策树是机器学习中的一个经典的算法,其简单性无与伦比,甚至一个不懂机器学习的人也能用它开始机器学习,可谓居家旅行,修身养性的必备良药。
决策树可分为两类,一类是分类树(Classification Tree),主要用于处理离散的数据,比如性别、黑白、胖瘦这样的非连续变量。另一类是回归树(Regression Tree),主要用于处理连续的数据,比如年龄、身高、体重这样的连续变量。
那么究竟什么是决策树呢?很简单,就是问问题,根据yes/no来选择下一个问题,直到能够做出判断。
这里,举个栗子。
任务:利用决策树判断未知对象是男的还是女的。
假设条件:已知的对象的属性只有声音和头发。
过程:首先,问问Ta声音粗还是声音细。如下图,根据声音的粗细分为2类。然后,问问Ta的头发是长发还是短发。如图所示,在第一次分类的基础上,又可分为2类,长发和短发。最后,判别出结果:如果Ta是声音细、头发长,那么很大可能是女的;相反,如果声音粗、头发短,很有可能是男的;以此类推。
上面的例子就是一个简单到不能再简单的决策树了。可以看出,决策树的本质就是根据数据的特征进行数据分类的递归过程。刚才是笼统的语言描述,现将具体步骤列出来,如下:
输入: 训练集 D=(x1,y1),(x2,y2),...,(xm,ym);D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)};D=(x1,y1),(x2,y2),...,(xm,ym);
属性集 A=a1,a2,a3,...,ad;A={a_1,a_2,a_3,...,a_d};A=a1,a2,a3,...,ad;
过程: 函数CreateTree(D,A)
1. 生成节点node;
2. if D中样本全部属于同一类别C then
3. 将node标记为C类叶节点; return
4. end if
5. if A=∅A=\varnothingA

本文介绍了决策树的基本概念,包括分类树和回归树,并详细讲解了ID3算法的决策树构建过程,通过信息熵和信息增益选择最优划分属性。同时,文章提供了Python实现ID3算法的概述。

2万+

被折叠的 条评论
为什么被折叠?



