树家族第一篇
树家谱
决策树
决策树模型可以看做是if-else指令集合,通过对特征空间的划分来完成分类或者回归任务。
如上图,是树模型的经典案例。根据天气、温度和风强度决策是否打网球。其过程就像是做了一系列的”if-else"判断。即基于数据,让算法学习这些’if-else‘规则。
树模型家族简史
单棵树
单棵树三大知名算法:ID3、C4.5、CART
1975年,由J.R.Quinlan提出ID3算法,这是首个知名的决策树算法。相对于耗时的人工规则,ID3用极其简单优美的方式从数据中学习出这些【if-else】规则。
虽然ID3很简单,但是还是有很多限制。
1)特征必须是离散,无法处理连续型特征
2)特征选择Gain公式偏向取值多的特征
1993年,Quinlan对其进行优化,并提出C4.5算法。
1984年CART(分类回归)算法提出。与C4.5相比,他有两个重要优点:
1)CART是二叉树(C4.5是多叉树),形式上更加优美简洁,而且不用考虑连续特征离散化问题;
2)CART既能处理分类,又可以处理回归问题。(C4.5只支持分类)。
正因为这些优点GBDT才选择用CART为基础。
总的来说,ID3是决策问题从人工规则到机器学习规则的过度,但是问题较多;C4.5是对ID3的优化;CART扩展了C4.5解决问题的范畴,从分类到回归。
多棵树
树模型和集成学习结合,发展成为‘森林’,极大提升了模型效果。最典型的森林算法分为bagging和boosting两类。
bagging算法簇的RF,和boosting算法簇的GBDT则为佼佼代表。在分类、回归和排序应用中大展前途。
2014年,陈天奇博士团队开源了XGBOOST,惊艳四座。XGBoost是为了让GBDT适应海量数据,从而做出的工程优化实践。
2017年,微软提出LightGBM,微软任务XGB在处理海量数据的工作上做的还不够好,LightGBM更加快速的实现的GBDT。
总的来说,集成学习是在CART基础上让树模型能力的一次飞跃;而GBDT是树模型与集成学习结合的佼佼者;XGBoost和LightGBM则是海量数据背景下对GBDT的优化。
ID3、C4.5和CART
本篇主要内容是ID3、C4.5和CART。再来回顾一下:
为了自动拟合数据,产出决策规则,J.R.Quinlan提出ID3算法,他简单优美,可以很好地达到预期目的。但是也有它的问题:只适用于离散特征,不考虑剪枝有严重的过拟合风险等。
为了让ID3更加强大,针对其弊端J.R.Quinlan做了优化改进,提出了C4.5算法。改进了ID3特征选择方法,增加了处理连续值和缺失值的功能;为了增加泛化能力,C4.5还进行了有效的剪枝策略。C4.5是一个相对成熟通用的算法,至今还有使用。
C4.5只能处理分类任务,导致通用性暴露短板。于是CART算法就来了,CART将树模型扩展为既能进行分类,又能解决回归问题。这使得CART成为后来更多高效模型的基础。
ID3
ID3提出背景
ID3提出之前,对于分类决策需求,一般是人工规则或者简单的概念学习(Find-S算法,候选-消除算法等),其中最大的问题是对于噪声过于敏感,容错性差。而ID3最大的优点就是基于统计信息做出决策,能有效的对抗噪声,提升容错性。
ID3算法
伪代码:
最优特征选择
ID3的缺点