分类、回归、仿真优化、量化求解、时间序列预测问题
给定目标学习,房价预测,信用卡欺诈检测 2.无监督机器学习不给定目标学习,主要用于聚类、降维
达到目标会有反贵,主要用于序列决策问题 |
决策树(Decision Tree)是一种非参数的监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。决策树算法容易理解,适用各种数据,在解决各种问题时都有良好表现,在各个行业和领域都有广泛的应用。 |
根节点:没有进边,有出边。包含最初的,针对特征的提问。 中间节点:既有进边也有出边,进边只有一条,出边可以有很多条。都是针对特征的提问。 叶子节点:有进边,没有出边,每个叶子节点都是一个类别标签。 子节点和父节点:在两个相连的节点中,更接近根节点的是父节点,另一个是子节点。 决策树算法的核心是要解决两个问题: 如何从数据表中找出最佳节点和最佳分枝? 如何让决策树停止生长,防止过拟合? |
重要参数信息熵(Entropy)寻找最优的分类节点 |
信息熵是用来衡量一个系统有序程度的指标。系统的信息熵越大,说明该系统越为混乱,即形势越为不明朗。熵越大,越为混乱。(太阳下雨) 信息增益:衡量熵的变化, 即在选定特征A后, 数据不确定度的下降。信息增益越大, 意味着这个特征的分类的能力越强, 则优先选择这个特征。 |
基尼系数(Gini Impurity) 某特征下包含属性的杂乱程度 |
其中t代表给定的节点,i代表标签的任意分类, 代表标签分类i在节点t上所占的比例。 注意:当使用信息熵时,sklearn实际计算的是基于信息熵的信息增益,即父节点的信息熵和子节点的信息熵之差。 |
比起基尼系数,信息熵对不纯度更加敏感,但是在实际使用中,信息熵和基尼系数的效果基本相同。信息熵的计算比基尼系数缓慢一些,(对数计算量大)当信息熵作为指标时,决策树的生长会更加“精细”,因此对于高维数据或者噪音很多的数据,信息熵很容易过拟合,基尼系数在这种情况下效果往往比较好。当模型拟合程度不足的时候,即当模型在训练集和测试集上都表现不太好的时候,就可以使用信息熵(看精确速率而定) |
参数 | 解释 |
如何影响模型? | 确定不纯度的计算方法,帮忙找出最佳节点和最佳分枝,不纯度越低,决策树对训练集的拟合越好。 |
可能的输入有哪些? | 默认基尼系数,填写gini使用基尼系数,填写entropy使用信息增益 |
怎样选取参数? | 1、通常使用基尼系数 2、数据维度很大,噪音很大时就使用基尼系数 3、维度低,数据比较清晰的时候,信息熵和基尼系数没区别当决策树的拟合程度不够的时候,使用信息熵(都试一试) |
(1)不支持连续特征。 (2)采用信息增益大的特征优先建立决策树的节点。在相同条件下, 取值比较多的特征比取值少的特征信息增益大。 (3)不支持缺失值处理。 (4)没有应对过拟合的策略。 C4.5算法连续特征:C4.5的思路是将连续 的特征离散化。
(1)剪枝的算法有非常多, 剪枝方法有优化的空间。 (2)C4.5生成的是多叉树, 很多时候, 在计算机中二叉树模型会比多叉树运算效率高。如果采用二叉树, 可以提高效率。 (3)只能用于分类。 (4)使用了熵模型, 里面有大量的耗时的对数运算, 如果是连续值还有大量的排序运算。 |
1、CART算法假设决策树是二叉树, 并且可以分类也可以回归,而且用基尼系数代替了熵模型进行特征选择, 也提供了优化的剪枝策略。 2、决策树的泛化能力过拟合问题: 所建立的决策树模型在训练样本中表现得过于优越, 导致在验证数据集以及测试数据集中表现不佳。 预剪枝,后剪枝 3、终止生长条件当一个节点产生两个子节点后,继续向下递归的产生新节点,最终当节点包含的数据都属于最终的类别的时候就可以终止分裂了。 剪枝 当一个分类决策树长的太深的时候,容易对一些噪声数据产生过拟合作用,因此我们需要通过剪枝来解决这个问题。 剪枝分为预剪枝和后剪枝。预剪枝是指在树的构造完成之前就知道哪些节点可以剪掉,于是干脆不对这些节点进行分类。后剪枝是指构造出完整的决策树之后再来开叉哪些节点可以剪掉。 |
在回归树种,没有标签分布是否均衡的问题。 1、重要参数MSE(均方误差),父节点和叶子节点之间的均方误差的差额将被用来作为特征选择的标准,这种方法通过使用叶子节点的均值来最小化的损失。 |
其中N是样本数量,i是每一个数据样本,fi是模型回归出的数值,yi是样本点i实际的数值标签。 所以MSE的本质,其实是样本真实数据与回归结果的差异。在回归树中,MSE不只是我们的分枝质量衡量指标,也是我们最常用的衡量回归树回归质量的指标,当我们在使用交叉验证,或者其他方式获取回归树的结果时,我们往往选择均方误差作为我们的评估(在分类树中这个指标是(score)代表的预测准确率)。在回归中,我们追求的是,MSE越小越好。 但回归树中score返回的是R平方,并不是MSE。 因此在sklearn当中,都以负数表示。真正的均方误差MSE的数值,其实就是neg_mean_squared_error去掉负号的数字。 |
交叉验证是用来观察模型的稳定性的一种方法,我们将数据划分为n份,依次使用其中一份作为测试集,其他n-1份作为训练集,多次计算模型的精确性来评估模型的平均准确程度。训练集和测试集的划分会干扰模型的结果,因此,用交叉验证n次的结果求出的平均值,是对模型效果的一个更好的度量。 |
|
1、易于理解和解释,因为树木可以画出来被看见 2、需要很少的数据准备。其他很多算法通常都需要数据规范化,需要创建虚拟变量并删除空值等。但sklearn中的决策树模块不支持对缺失值的处理。 3、使用树的成本(比如说,在预测数据的时候)是用于训练树的数据点的数量的对数,相比于其他算法,这是一个很低的成本。 4、能够同时处理数字和分类数据,既可以做回归又可以做分类。其他技术通常专门用于分析仅具有一种变量类型的数据集。 5、能够处理多输出问题,即含有多个标签的问题,(注意与一个标签中含有多种标签分类的问题区别开) 6、是一个白盒模型,结果很容易能够被解释。相反,在黑盒模型中(例如,在人工神经网络中),结果可能更难以解释。 7、可以使用统计测试验证模型,这让我们可以考虑模型的可靠性。 8、即使其假设在某种程度上违反了生成数据的真实模型,也能够表现良好。 |
2.决策树的缺点1、决策树可能创建过于复杂的树,这些树不能很好地推广数据。这称为过度拟合。修剪,设置叶节点所需的最小样本数或设置树的最大深度等机制是避免此问题所必需的。 2、决策树可能不稳定,数据中微小的变化可能导致生成完全不同的树,这个问题需要通过集成算法来解决。 3、决策树的学习是基于贪婪算法,它靠优化局部最优(每个节点的最优)来试图达到整体的最优,但这种做法不能保证返回全局最优决策树。这个问题也可以由集成算法来解决,在随机森林中,特征和样本会在分枝过程中被随机采样。 4、如果标签中的某些类占主导地位,决策树会创建偏向主导类的树。因此,建议在拟合决策树之前平衡数据集。 |
3.ROC曲线、ACU值利用混淆矩阵可以充分理解分类中的错误了。如果混淆矩阵中的非对角线元素均为0,就会得到一个近乎完美的分类器。 |
ROC曲线:接收者操作特征,ROC曲线上每个点反映着对同一信号刺激的感受性。 横坐标:伪正类率(FPR),预测为正但实际为负的样本占所有负例样本 的比例; 纵坐标:真正类率(TPR),预测为正且实际为正的样本占所有正例样本 的比例。 AUC:ROC曲线下的面积,介于0.1和1之间。Auc作为数值可以直观的评价分类器的好坏,值越大越好。 |
AUC判断分类器(预测模型)优劣的标准: 1、AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。 2、0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。 3、AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。 4、AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。 准确率:预测正确的结果占总样本的百分比。 精准率:(Precision)又叫查准率,它是针对预测结果而言的,它的含义是在所有被预测为正的样本中实际为正的样本的概率,意思就是在预测为正样本的结果中,我们有多少把握可以预测正确。 召回率:(Recall)又叫查全率(灵敏度),它是针对原样本而言的,它的含义是在实际为正的样本中被预测为正样本的概率。 |