决策树评价指标:ROC
lift(提升度):类似提纯;按照decile从高到低排列,之后计算每个decile里响应数与该decile里行数的比值得到一个response rate,另外,单独计算所有行数的响应数与所有行数的比值得到overall response rate,最后的提升度可以表示为index=RR/Overall RR
lift越高,模型提纯效果越好
区分有监督和无监督算法是看对训练数据是否打标签
决策树可以分为分类树和回归树
分类树:因变量是离散的为分类树
回归树:因变量是连续的为回归树
多分类问题如何转化
两种办法:一对多和一对一
假设目标变量有五种分类,如何转化?
一对多
将类别1看作正类,其余2,3,4,5看作负类(一对多),这样拿一个样本来,可以告诉是不是属于类别1,如果不属于,再在2,3,4,5里继续寻找
一对一(不常见)
从1-5中任意选取2种类别来分类,得到5*4/2=10种分类器,每一个分类器只告诉你是第一类还是第二类,或者第一类还是第三类,统计所有分类器票数,根据票数得到分类结果
纠正:下图中的混淆矩阵表画的不对,真实情况对应的应该是列,而预测结果对应的应该是行。另外,敏感度也就是召回率,重点参考下面的混淆矩阵网页
混淆矩阵参考:
/Orange_Spotty_Cat/article/details/80520839
/dlml/p/4403482.html
ROC曲线上的每个点表示对一个阙值的的感受程度,这个阙值分布从0到1范围,在[0,0]点对应的阙值为1,在[1,1]点对应阙值是0;而对于大于阙值点的值,被划分为正例,而对于小于阙值点的值,则被划分为负例;在一个ROC曲线上,越靠近[0,1]的曲线点,它的阙值划分效果越好
AUC:衡量该分类器分类效果的好坏,它是由ROC曲线下的面积决定的;AUC越大,该分类器分类效果越好;
分类模型的性能(非常重要)
分类模型的性能评价指标 混淆矩阵 错误率? 敏感性=真正例/实际正例总数=TP/(TP+FN)(即能准确识别出预测事物的能力) 特异性=真反例/实际反例总数=TN/(FP+TN) 真实值是negative时,模型预测对的比重 精确率=TP/(TP+FP)模型预测是positive时,模型预测对的比重 准确率=(TP+TN)/(TP+FP+TN+FN) 分类模型所有判断正确结果占总结过观测值 ROC曲线(*):x轴为1-specificity, y轴为sensitivity(决策树和回归里都会用到)
Lift曲线:x轴为depth,y轴为lift;
[TP/(TP+FP)]/[(TP+FN)/(TP+FP+FN+TN)],预测正例的比例比上实际正例的比例
混淆矩阵主要是做出来模型后,判断模型的准确度;敏感性和特异性的分子都是用预测准确的真实数据
Depth: (TP+FP)/(TP+FP+FN+TN),预测成正例的比例
Lift: [TP/(TP+FP)]/[(TP+FN)/(TP+FP+FN+TN)],预测正例的比例比上实际正例的比例
(需要掌握)
ROC曲线的横轴和纵轴分别是什么?判断回归模型和决策树模型好坏的标准是什么?混淆矩阵AUC(ROC曲线划出来的面积)越大模型效果越好ROC曲线是向上画越好
决策树是自顶向下递归方式,在决策树内部结点进行属性值的比较并根据不同属性值判断从该结点向下的分支,在决策树叶结点得到结论
优点:
5. 分类规则清晰,结果容易理解
6. 计算量相对较小,实现速度快
7. 非线性,非参数方法
8. 不需要预选变量(决策树不能帮助剔除相关关系,需要我们自己在使用决策树前剔除变量间相关关系),可处理异常值,缺失值,不同量纲值
缺点:
9. 相比逻辑回归模型,准确率略有不足,常用来做为预先选变量方法
10. 容易过拟合
决策树常用算法:
ID3
优化测试属性的选择:熵(信息增益)
只能处理离散变量
不能处理缺失值
偏向于取值较多的属性,容易过拟合
C4.5
对ID3进行了改进,优化测试属性的选择:信息增益率
可以处理连续变量
可以处理缺失值
CART
优先测试属性的选择:基尼系数(判断分类树的标准),最小方差(判断回归树的标准)
生成二叉树
可以处理连续变量
可以缺失值
ID3,C4.5和CART主要区别在于它们优先测试属性选择的不同
属性分裂准则
决策树关键是如何选择最优划分属性,决策树分支所包含样本尽可能属于同一类别,即同一样本纯度越高
不纯度函数; 对系统不确定性,混乱程度的度量
纯度增益:衡量某种特征给系统带来了多少的信息量
ID3
信息熵:对不确定性的测量,熵描述了数据的混乱程度,熵越大,混乱程度越高,也就是纯度越低;反之,熵越小,混乱程度越低,纯度越高
信息增益存在的一个问题是它一定会把取值过多的变量作为分类的标准,这是信息增益的一个缺陷;基于此,我们用C4.5中的信息增益率来修正信息增益
基尼系数用于CART算法里的分类树,基尼系数越小,表明样本纯度越高
基尼系数的例子:
/yeziand01/article/details/80731078
熵和基尼系数一样,越小的话,纯度越高
C4.5
C4.5算法总结
ID3的一种改进算法
用信息增益率来选择属性(涉及到split值计算)
采用后剪枝
可生成多叉树
优点:相比ID3,克服了用信息增益选择属性偏向选择取值多的属性的不足,能够完成对连续属性的离散化处理;能够对不完整数据进行处理
缺点:需要对数据集进行多次顺序扫描和排序,因而导致算法的低效;此外,C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行
参考例题:
/zjsghww/article/details/51638126
计算属性分裂信息度量
用分裂信息度量考虑某种属性进行分裂时分支数量和尺寸信息,我们将这些信息称为属性的内在信息(intrinsic information);信息增益率用信息增益(GAIN)/内在信息(H),会使属性重要性随内在信息增大而减小(即如果这个属性本身不确定性就很大,我们就越不倾向于选择它;这也是为什么一个属性里的类别越多,它的信息增益越高),这算是对单纯用信息增益进行补偿。
计算信息增益率公式: Information Gain Rate(IGR) = Gain/ H
C4.5计算步骤:
CART
CART算法总结
用基尼系数(目标变量为离散变量),最小方差(目标变量连续变量)来选择属性
采用后剪枝
优点是可生成回归树,缺点是只能生成二叉树
可以处理连续型属性
可以处理缺失值
什么是分箱?
决策树比较粗糙,但是在有很多变量时可以做一个初步的筛选,甚至可以从很多相关性很强的变量里放到决策树后新生成一个变量,用这个不可解释的新生成变量来再用其他方法对数据进行分类或回归;比如说,有1000个变量时,我们可以使用决策树来让其随意生长,之后只选取决策树筛选的的20个变量作为新挑选的属性来用其他模型对其进行分析;而第二种是将很多相关性很强且看似都很有用的变量使用决策树进行筛选,最终新生成的变量作为这些相关性很强变量的替代值代入其他分类方法中
为防止树生长过大,导致过拟合,可以预剪枝
停止条件:
如果节点中所有观测属于一类如果树的深度达到设定的阙值如果该节点所含观测值小于设定的父节点应含观测数的阙值如果该节点的子节点所含观测数将小于设定的阙值如果没有属性能满足设定的分裂准则的阙值
(重要)决策树生成算法分成两个步骤:
树的生成,开始时所有数据都在根结点,然后递归对数据进行分支,生成一颗完整的树选取合适大小的树,就是去掉一些不显著的叶结点或者子树
设置阙值控制叶节点观测个数
交叉验证,利用CCP(Cost-Complexity Pruning)方法自下而上剪枝,优化树的复杂度和分类误差之间的比例,从而调节树的大小,避免过拟合
CCP-代价复杂度剪枝法
CCP选择节点表面误差增益值最小的非叶子节点,删除该非叶子节点的左右子节点,若有多个非叶子节点的表面误差率增益值相同小,则选择非叶子节点中子节点最多的非叶子节点进行剪枝
CCP方法如下:
从原始决策树开始生成一个子树序列(均非叶子节点){T0,T1,…,Tn},其中T(i+1)从Ti产生,Tn为根结点计算所有节点误差率增益值,选择误差率增益值最小的非叶子节点对选中的节点进行剪枝重复上边的步骤
误差增益值计算公式:a=(R(t)-R(T))/(N(T)-1)
python构建决策树
导入数据(pandas)
探索数据
– 数据缺失情况
– 特征变量分布(seaborn, matplotlib)
– 特征变量类型识别(int64, float64或object)
处理字符型特征变量(sklearn)
搭建树(sklearn)
测试树(sklearn)
可视化树(sklearn, graphviz)
输出树的规则(自定义函数rules_to_pseudo())
如果觉得《决策树及分类模型评价指标(混淆矩阵 LIFT曲线 重要)》对你有帮助,请点赞、收藏,并留下你的观点哦!