前面的文章介绍了逻辑回归,逻辑回归是一种线性有监督离散型分类模型;
而决策树是一种非线性有监督离散型分类模型,随机森林和决策树一样也是一种非线性有监督离散型分类模型。
下面看一个案例:
决策树是通过固定的条件来对类别进行判断:
决策树的生成:数据在不断分裂的递归过程,每一次分裂,尽可能让类别一样的数据在树的一边,
当树的叶子节点的数据都是一类的时候,则停止分裂(if lese语句)。
计算纯度的方式(损失函数)
基尼系数,熵越大,方差越大,数据集越不一样,纯度越高。
基尼系数:基尼系数是指国际上通用的、用以衡量一个国家或地区居民收入差距的常用指标
- 若低于0.2表示指数等级极低;(高度平均)
- 0.2-0.29表示指数等级低;(比较平均)
- 0.3-0.39表示指数等级中;(相对合理)
- 0.4-0.59表示指数等级高;(差距较大)
- 0.6以上表示指数等级极高。(差距悬殊)
一般发达国家的基尼指数在0.24到0.36之间,美国偏高,为0.45。中国国家统计局公布基尼系数2012年为0.474,2013年为0.473,2014年为0.469,2015年为0.462,2016年为0.465
决策树的参数:都是为了构建一个优秀的决策树,提供的支持
max_leaf_node, max_depth…
单颗决策树的缺点:
-
运算量大,需要一次加载所有数据进内存。并且找寻分割条件是一个极耗资源的工作
-
训练样本中出现异常数据时,将会对决策树产生很大影响。抗干扰能力差
解决方法:
-
减少决策树所需训练样本(减少列或者减少行)
-
随机采样,降低异常数据的影响
下面编写决策树的代码,如下:
import numpy as np
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt
N = 100
x = np.random.rand(N) *