1、信息论基础(熵 联合熵 条件熵 信息增益 基尼不纯度)
熵:描述一个时间的不确定性
联合熵:A与B同时发生的信息熵
条件熵:在A发生的情况下B发生的信息熵
信息增益:Gain为A为特征对训练数据集D的信息增益,它为集合D的经验熵H(D)与特征A给
定条件下D的经验条件熵H(D|A)之差
基尼不纯度:基尼不纯度,是指将来自集合中的某种结果随机应用在集合中,某一数据项的预期误差率
2、决策树的不同分类算法(ID3算法、C4.5、CART分类树)的原理及应用场景
ID3算法:ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树。
具体方法是:从根节点(root node)开始,对结点计算所有可能的特征信息增益,选择信息增益最大的特征作为结点特征,由该特征的不同取值建立子结点;再对子结点递归地调用以上方法,构建决策树;直到所有特征的信息均很小或没有特征可以选择为止。
C4.5算法:C4.5算法与ID3算法相似,C4.5算法对ID3算法进行了改进。C4.5在生成过程中,用信息增益比来选择特征。
CART算法:在给定输入随机变量XX条件下输出随机变量YY的条件概率分布的学习方法。
CART算法由一下两步组成:
1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;
2)决策树剪枝:用验证数据集对已生成的树进行剪枝病选择最优子树,这时用损失函数最小作为剪枝的标准。
应用场景:银行贷款申请、房产开发商房子的选址。
3、回归树原理
一个回归树对应这输入空间(即特征空间)的一个划分以及在划分单元上的输出值。分类树中,我们采用信息论的方法,通过计算选择最佳划分点。而在回归树中,采用的是启发式的方法。假如我们有n个特征,每个特征有s_i(i\in(1,n))个取值,那我们遍历所有特征,尝试该特征所有取值,对空间进行划分,直到取到特征j的取值s,使得损失函数最小(回归树的损失函数用平方差),这样就得到了一个划分点。
4、决策树防止过拟合手段
剪枝是决策树学习算法对付过拟合的主要手段。决策树剪枝的基本策略有“预剪枝”和“后剪枝”。
- 预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶节点。
- 后剪枝是指先从训练集生成一颗完整的决策树,然后自底向上地对非结点进行考察,若讲该结点对应的子树替换成叶节点能带来决策树泛化性能的提升,则将该子树替换成叶节点。
5、模型评估
自助法(bootstrap):训练集是对于原数据集的有放回抽样,如果原始数据集N,可以证明,大小为N的自助样本大约包含原数据63.2%的记录。当N充分大的时候,1-(1-1/N)^(N) 概率逼近 1-e^(-1)=0.632。抽样 b 次,产生 b 个bootstrap样本,则,总准确率为(accs为包含所有样本计算的准确率):
准确度的区间估计:
将分类问题看做二项分布,则有:
令 X 为模型正确分类,p 为准确率,X 服从均值 Np、方差 Np(1-p)的二项分布。acc=X/N为均值 p,方差 p(1-p)/N 的二项分布。acc 的置信区间:
6. sklearn参数详解,Python绘制决策树
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’, 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),提前对数据排序,加快树的生成