primary_algorithms_mission_3_057_站在风口吹泡泡

  1. 信息论基础(熵 联合熵 条件熵 信息增益 基尼不纯度)
    2.决策树的不同分类算法(ID3算法、C4.5、CART分类树)的原理及应用场景
  2. 回归树原理
  3. 决策树防止过拟合手段
  4. 模型评估
  5. sklearn参数详解,Python绘制决策树
    学习时长:两天
    参考:西瓜书
    cs229吴恩达机器学习课程
    李航统计学习
    谷歌搜索公式推导参考:http://t.cn/EJ4F9Q0博客可参考:https://blog.csdn.net/qq_29027865/article/details/86710772

1/信息论基础(熵 联合熵 条件熵 信息增益 基尼不纯度)

熵:是信息的期望
用来衡量不确定性,当熵越大,概率X=Xi的不确定性越大。
在这里插入图片描述
联合熵:观察一个多个随机变量的随机系统获得的信息量,通俗的说,比如变量x,y,两个在一起时的不确定性度量

条件熵:在变量x确定时,y的不确定性度量
在这里插入图片描述
信息增益:在决策树算法中是用来选择特征的指标,信息增益越大,则这个特征的选择性越好。在概率中定义为:待分类的集合的熵和选定某个特征的条件熵之差

在这里插入图片描述
基尼系数:
是一种与信息熵类似的做特征选择的方式,可以用来做数据的不纯度。在CART算法中利用基尼指数构造二叉决策树(选择基尼系数最小的特征及其对应的特征值)
参考博文:https://blog.csdn.net/xbmatrix/article/details/56691137

2/决策树的不同分类算法

ID3:算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归的建立决策树。具体方法是:从根结点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点,再对子结点递归地调用以上方法,构建决策树,直到所有特征的信息增益均很小或没有特征可以选择为止,最后得到一个决策树,ID3相当于用极大似然法进行概率模型的选择。

C4.5:与ID3算法相似,在生成的过程中,用信息增益比来选择特征
CART:同样由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法。
CART算法由以下两步组成:
1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;
2)决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。

3/回归树原理

在这里插入图片描述

4/决策树防止过拟合手段

使用预剪枝可以降低过拟合的风险,还能显著减少决策树的训练时间开销和测试时间开销。

西瓜书P81

5/模型评估

决策树适用分类指标:P,R,F1,ROC曲线,使用交叉验证
回归树适合回归指标:MAE,MSE,RMSE,R平方,Adjusted R平方,MAPE,RMSPE

6/sklearn参数

class sklearn.tree.DecisionTreeClassifier(criterion =‘gini’,splitter =‘best’,max_depth = None,min_samples_split = 2,min_samples_leaf = 1,min_weight_fraction_leaf = 0.0,max_features = None,random_state = None,max_leaf_nodes = None,min_impurity_decrease = 0.0,min_impurity_split = None,class_weight = None,presort = False )

criterion:特征选择标准,可选参数,默认是gini
splitter:best是根据算法选择最佳的切分特征。random找局部最优的划分点。
max_depth:树的最大深度。None表示划分到所有叶子结点都是纯的或小于最小样本量
min_samples_split :节点可以划分的最小样本量
min_samples_leaf:叶子节点所需的最小样本数。
min_weight_fraction_leaf :计算权重,默认大家权重一样
max_features :寻找最佳分割时考虑的特征数量
random_state:随机数种子
max_leaf_node: 最大的叶节点数量
min_impurity_decrease:节点划分最小不纯度,小于该值不再分裂
min_impurity_split:节点的不纯度高于该值,才进行分裂
class_weight:类别权重
presort :数据是否预排序,默认False,数据量小可以改成True

7/绘制决策树

from sklearn.datasets import load_iris
from sklearn import tree
iris = load_iris()#加载数据
clf = tree.DecisionTreeClassifier()#初始化模型
clf = clf.fit(iris.data, iris.target)#训练模型
with open(“iris.dot”, ‘w’) as f: f = tree.export_graphviz(clf, out_file=f)#存储决策树

import pydotplus
graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_pdf(“iris.pdf”)

from IPython.display import Image
dot_data = tree.export_graphviz(clf, out_file=None, feature_names=iris.feature_names, class_names=iris.target_names, filled=True,rounded=True, special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())
clf.predict(iris.data[:1, :])

猜你喜欢

转载自blog.csdn.net/qq_42017043/article/details/89005193
今日推荐