decision tree
decision tree: supervised learning
目标:表格转化成一棵树,决策树需要找出最佳结点和最佳的分支方法,衡量标准:不纯度
父结点不纯度>子结点,叶子结点不纯度最低
根节点:没有进边有出边
中间节点:有进出
叶子结点:有进边没有出边 每一个叶子结点都是一个类别标签
sklearn 建模基本流程:
- 用什么?分类树?回归树?
- 把训练集放到已经确认好的类去训练,训练模型使用fit接口
- 提取信息
分类树
# 分类数需要的代码
clf = tree.DecisionTreeClassifier() # 1.实例化
clf = clf.fit(x_train, y_train) # 2.用训练集训练数据模型
result = clf.score(x_test, y_test) # 3.导入测试集,从接口调用需要的信息
分类树所有的参数:
分类树重要参数
- criterion 决定不纯度的计算方法
两种方法
entropy稍微慢一点,决策树计算更加精细(也可能导致过拟合)
- random_state(每次分支不使用全部的features,而是选取一部分,选取与不纯度相关指标最优的一部分作为分支用的结点)
输入任意整数,会一直长出同一棵树,让模型稳定下来
splitter 也用来控制随机性,best和random两种选择
如果加上了splitter反而变低就去掉,一切以分数最高为标准
3.剪枝参数:防止过拟合
max_depth:
- 限制树的最大深度,超过设定深度的树枝全部剪掉
- 适合高维度,低样本量的时候
- 决策树多生长一层,需要的样本量翻一倍
- 从3开始设置尝试
min_samples_leaf:
- 用来设置叶子结点的参数,一个节点在分支后的子节点都必须包含至少min_samples_leaf 个样本数量,否则节点不会发生或者朝着设置的数量的方向上发生。
- 一般搭配max_depth来使用
- 设置太小过拟合,过大阻止模型学习数据
- 建议从=5开始使用,也可以是浮点数作为样本的百分比来使用
min_samples_split:
- 超过min_samples_split数量的节点才允许被分支,否则不被允许分支
max_features
- 限制分枝时考虑的特征个数,超过限制个数的特征全部舍弃,防止过拟合。先用PCA,ICA等降维算法来选择一定的特征数量
min_impurity_decrease:
- 限制信息增益的大小,信息增益小于设定数值的分枝不会发生。