初级算法学习day3

1、信息论基础(熵、联合熵、条件熵、信息增益、基尼不纯度)
熵:描述一个时间的不确定性
联合熵:将一维随机变量分布推广到多维随机变量分布
条件熵:在A发生的情况下B发生的信息熵
信息增益:待分类的集合的熵和选定某个特征的条件熵之差
基尼不纯度:从一个数据集中随机选取子项,度量其被错误的划分到其他组里的概率

2、决策树的不同分类算法(ID3算法、C4.5、CART分类树)的原理及应用场景

ID3算法:具有最高信息增益的自变量作为当前的树叉(树的分支),分别计算自变量的信息增益,选取其中最大的信息增益作为树叉。算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树。

C4.5算法:C4.5算法与ID3算法相似,C4.5算法对ID3算法进行了改进。C4.5在生成过程中,选择具有最大增益率的属性作为分裂属性。

CART算法:CART(Classification and Regression tree)分类回归树由L.Breiman,J.Friedman,R.Olshen和C.Stone于1984年提出。ID3中根据属性值分割数据,之后该特征不会再起作用,这种快速切割的方式会影响算法的准确率。CART是一棵二叉树,采用二元切分法,每次把数据切成两份,分别进入左子树、右子树。而且每个非叶子节点都有两个孩子,所以CART的叶子节点比非叶子多1。相比ID3和C4.5,CART应用要多一些,既可以用于分类也可以用于回归。CART分类时,使用基尼指数(Gini)来选择最好的数据分割的特征,gini描述的是纯度,与信息熵的含义相似。CART中每一次迭代都会降低GINI系数。下图显示信息熵增益的一半,Gini指数,分类误差率三种评价指标非常接近。回归时使用均方差作为loss function。

3、回归树原理
一个回归树对应着输入空间(即特征空间)的一个划分以及在划分单元上的输出值。分类树中,采用信息论中的方法,通过计算Gini指数选择最佳划分点。而在回归树中,采用的是启发式的方法。假如我们有n个特征,每个特征有si(i∈(1,n))si(i∈(1,n))个取值,那我们遍历所有特征,尝试该特征所有取值,对空间进行划分,直到取到特征j的取值s,使得损失函数最小,这样就得到了一个划分点。描述该过程的公式如下:

min[min Loss(y_i, C_1)+min Loss(y_i, C_2)]

即使用最小剩余方差(Squared Residuals Minimization)来决定Regression Tree的最优划分,该划分准则是期望划分之后的子树误差方差最小。

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

先剪枝: 通过提前停止树的构造,如通过决定在给定的节点不再分裂或划分训练元组的子集,而对树剪枝,一旦停止,该节点即成为树叶。在构造树时,可以使用诸如统计显著性、信息增益等度量评估分裂的优劣,如果划分一个节点的元组低于预先定义阈值的分裂,则给定子集的进一步划分将停止。但选取一个适当的阈值是困难的,较高的阈值可能导致过分简化的树,而较低的阈值可能使得树的简化太少。

后剪枝: 它由完全生长的树剪去子树,通过删除节点的分支,并用树叶替换它而剪掉给定节点的子树,树叶用被替换的子树中最频繁的类标记。

5、模型评估
参考链接

6、sklearn参数详解,python绘制决策树
criterion=’gini’, string, optional (default=”gini”),衡量分支好坏的标准
splitter=’best’, string, optional (default=”best”),选择分支的策略
max_depth=None, int or None, optional (default=None),树的最大深度
min_samples_split=2, int, float, optional (default=2),分支时最小样本数
min_samples_leaf=1, int, float, optional (default=1),叶子最少样本
min_weight_fraction_leaf=0.0, float, optional (default=0.),叶子结点的最小权重
max_features=None, int, float, string or None, optional (default=None),生成树时考虑的最多特征点数
random_state=None, int, RandomState instance or None, optional (default=None),打乱样本时所用的随机种子
max_leaf_nodes=None, int or None, optional (default=None),生成树时采用的最大叶子结点
min_impurity_decrease=0.0, float, optional (default=0.),当产生分支时,增加的纯度
min_impurity_split=None, float, (default=1e-7),树停止生长的阈值
class_weight=None, dict, list of dicts, “balanced” or None, default=None,分支权重预设定
presort=False,bool, optional (default=False),提前对数据排序,加快树的生成

你可能感兴趣的:(初级算法学习day3)