这一篇我们继续来看监督学习中的几种算法。
决策树
决策树(Decision Tree)既可以用作分类,又可以用作回归。这里我们主要介绍其分类算法。
决策树,顾名思义,它的形状很像一棵倒过来的树。通过将数据的各个特征不断细分,最后使划分出的数据只含有一种类别,不含其它类别。
举个例子来说明,假设你要出去骑车,限制你出门的条件分别是温度和湿度,如下表所示:
用决策树可以表示为
决策树中,我们把最上面的一点叫做根节点,不能继续往下细分的叫做叶节点。
实战
首先,还是加载决策树模型
接着,加载我们的乳腺癌数据集,并将其分为训练集和测试集
然后,训练我们的决策树模型
最后,我们分别来看下模型在训练集和测试集的精度
可以看到,模型在训练集上的精度达到了100%,完美的将所有数据进行了分类。但在数据量很大时,非常容易产生过拟合现象。
为了防止过拟合,通常有两种方法。
一种方法叫做预剪枝,就是提前终止决策树的生长。
另一种方法叫做后剪枝,指的是在决策树构造完成后,删除掉那些信息量小的节点,减少决策树的复杂度。
在Scikit-learn中,我们使用的是前者——预剪枝的方法。
查看特征
此外,我们还可以查看在数据集中,哪些特征对分类起到了比较重要的作用。
每个特征对应一个0到1之间的数字,0表示这个特征没什么用,越靠近1表示这个特征所起的作用越大。
我们还可以将特征的重要性进行可视化。
模型的重要参数
决策树有三个重要的参数,都是有关预剪枝的,用来控制模型的复杂度。
1.max_depth
该参数控制树的最大深度,深度越深,模型越复杂。一般来说,深度一般不超过10.
2.max_leaf_nodes
该参数限制所有叶节点的最大数量,叶节点越多,模型越复杂。
3.min_samples_leaf
该参数控制一个节点中样本数量的最小值,样本数越小,模型就越复杂。
模型的优缺点
决策树的优点之一就在于其数据不用进行预处理,因为它是根据每一个特征来进行划分,即使特征之间的尺度不同,也无需进行数据规范化处理;第二个优点就是它的模型和特征都可以进行可视化,具有较强的解释性。
决策树的缺点就是即使已经做了预剪枝的处理,但依然容易发生过拟合。
为了解决这个问题,我们经常用很多棵树来代替单棵树,这就是下一篇将要介绍的集成学习方法。
领取专属 10元无门槛券
私享最新 技术干货