决策树:
从根节点开始一步步走到叶子节点(决策)
所有的数据最终都会落到叶子节点,既可以做分类也可以做回归。
树的组成:
根节点:第一个选择点
非叶子节点与分支:中间过程
叶子节点:最终的决策结果
决策树的训练与测试:
训练阶段:从给定的训练集构造出来一棵树(从跟节点开始选择特征,如何进行特征切分)
· 测试阶段:根据构造出来的树模型从上到下去走一遍就好了。
· 一旦构造好了决策树,那么分类或者预测任务就很简单了,只需要走一遍就可以了,那么难点就在于如何构造出来一颗树,这就没那么容易了,需要考虑的问题还有很多的!
如何切分特征(选择节点):
· 问题:根节点的选择该用哪个特征呢?接下来呢?如何切分呢?
· 想象一下:我们的目标应该是根节点就像一个老大似的能更好的切分数据(分类的效果更好),根节点下面的节点自然就是二当家了。
· 目标:通过一种衡量标准,来计算通过不同特征进行分支选择后的分类情况,找出来最好的那个当成根节点,以此类推。
衡量标准:熵
熵:熵是表示随机变量不确定性的度量。
公式:H(X)=- ∑ pi * logpi, i=1,2, ... , n
熵:不确定性越大,得到的熵值也就越大
当p=0或p=1时,H(p)=0,随机变量完全没有不确定性
当p=0.5时,H(p)=1, 此时随机变量的不确定性最大
信息增益:表示特征X使得类Y的不确定性减少的程度。
决策树算法 · C4.5
信息增益率:信息增益÷自身熵
决策树算法 · CART
基尼指数Gini(D):反映了从数据集D 中随机抽取两个样本,其类别标记不一致的概率。
p越大,Gini(D)越小,则数据集D的纯度越高。
DecisionTreeClassifier():创建一个决策树模型。
criterion | gini或者entropy。前者是基尼系数,后者是信息熵 |
splitter | best或者random。前者是在所有特征中找最好的切分点,后者是在部分特征中。 |
max_features | None(所有),log2,sqrt,N |
max_depth | int or None, optional (default=None) 设置决策随机森林中的决策树的最大深度,深度越大,越容易过拟合,推荐树的深度为:5-20之间。 |