机器学习实战(3)——决策树
最近一直在复习机器学习+python实现。说实话,工作这两年不停地处理事务性工作,手生的很。用的是《机器学习实战》这本书,配合一些编程作业,算是复习加找编程“手感”吧!用Github+blog的方式来鞭策自己每天都写点什么,因为算法看懂了,抄一遍代码,顶多记住一周,下一周就基本上是“你好,初次见面,请多关照了!”。所以就尽量每天都写吧!这本书的前两章分别是基础概念和KNN,我会尽力补上的。
1.优缺点:
1.1优点:
计算复杂度不高,输出结果易于理解(具有很强的可解释性,这一点DL不具备,一般商业中需要算法的可解释性),对中间值的缺失不敏感,可以处理不相关特征数据。 上上周去爱奇艺听机器学习的讲座,发现爱奇艺的推荐算法用的LR和随机森林。LR稳定,决策树可解释。在商业中,可解释这一点还是非常重要的,毕竟是找外行要钱不必可少的撕逼过程中的筹码。以前读研究生时,总觉得算法我都会,拼精度就是了。工作了以后才发现,有些时候你得会讲故事。
1.2缺点:
可能会产生过度匹配的问题(Overfit)
分特征的过程可能会分得太细,造成就训练数据效果好,加了新数据瞬间GG的情况。这个解决办法有好多,我们后面再谈!后面几章会提到怎么解决,还有别的决策树,这里就是ID3。
2.适用数据类型:
数值型和标称型 。
标称型: 标称型目标变量的结果只在有限目标集中取值,如真与假(标称型目标变量主要用于分类)。
数值型: 数值型目标变量则可以从无限的数值集合中取值,如0.100,42.001等 (数值型目标变量主要用于回归分析)
3.原理:
3.1数据划分
找到数据集中哪个特征在划分数据分类时起决定性作用。评估每一个特征,根据特征将原始数据集划分成几个数据子集,每一个数据子集都在这个特征的一个分支上。如果某个分支下的数据都属于同一类型,则对类型进行了正确的划分,无需进一步分割。每一次的分解都是一个递归的过程,直到所有类别均处于一个数据子集中。
3.2信息增益
1.划分数据集的原则:将无序的数据变得有序。
2.划分数据集前后信息发生的变化成为信息增益。
3.获得信息增益最高的特征就是最好的选择。
数据的信息: l(xi) = - log2p(xi) p(xi)是选择该分类的概率
熵
数据中所有类别所包含的信息期望值 H = -∑p(xi)log2p(xi)
例子:
这个就是ID3决策树算法了。