机器学习之决策树回归篇(DecisionTreeRegressor)

2,449 阅读5分钟

这是我参与8月更文挑战的第14天,活动详情查看:8月更文挑战

一 重要参数

1.1 criterion

回归树衡量分枝质量的指标 mse 使用均方误差mean squared error(MSE),父节点和叶子节点之间的均方误差的差作为特征选择的标准,通过使用叶子节点的均值来最小化L2损失 friedman_mse 使用费尔德曼均方误差,这对潜在分枝中的问题改进后的均方误差 mae 绝对平均误差MAE(mean absolute error),叶节点的中值来最小化L1损失,属性中最重要的依然是feature_importances_,接口依然是apply, fit, predict, score最核心。

image.png N是样本数量,i是每一个数据样本,fi是模型回归出的数值,yi是样本点i实际的数值标签。MSE的本质是样本真实数据与回归结果的差异。在回归树中,MSE不只是分枝质量衡量指标,也是最常用的衡量回归树回归质量的指标,使用交叉验证,往往选择均方误差作为的评估(在分类树中这个指标是score代表的预测准确率)。在回归中,MSE越小越好。 然而,回归树的接口score返回的是R平方,并不是MSE。

image.png u是残差平方和(MSE * N),v是总平方和,N是样本数量,i是每一个数据样本,fi是模型回归出的数值,yi 是样本点i实际的数值标签。y帽是真实数值标签的平均数。R平方可以为正为负(如果模型的残差平方和远远大于 模型的总平方和,模型非常糟糕,R平方就会为负),而均方误差永远为正。sklearn在计算模型评估指标的时候,会考虑指标本身的性质,均方误差本身是一种误差,所以被sklearn划分为模型的一种损失(loss),因此在sklearn当中,都以负数表示。真正的 均方误差MSE的数值,其实就是neg_mean_squared_error去掉负号的数字。

二 回归树工作原理之交叉验证用法

from sklearn.datasets import load_boston  #内置波士顿房价数据
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeRegressor

boston=load_boston()
regressor=DecisionTreeRegressor(random_state=42)
cross_val_score(regressor,boston.data,boston.target,cv=10,scoring='neg_mean_squared_error')

image.png 因为我们只是在训练集和测试集样本数据上调出很美好的参数值,但是到了未知数据集上是否也能得到很好的结果呢,所以应用到了交叉验证,交叉验证是用来观察模型的稳定性的一种方法,我们将数据划分为n份,依次使用其中一份作为测试集,其他n-1份 作为训练集,多次计算模型的精确性来评估模型的平均准确程度。训练集和测试集的划分会干扰模型的结果,因此 用交叉验证n次的结果求出的平均值,是对模型效果的一个更好的度量。

image.png 其他参数的调参可以参考决策树分类篇。

三 决策树的优缺点

3.1 决策树优点

  • 易于理解和解释,树可以画出来被看见
  • 需要很少的数据准备。其他很多算法通常都需要数据规范化,需要创建虚拟变量并删除空值等。sklearn中的决策树模块不支持对缺失值的处理。
  • 成本较低(比如说,在预测数据的时候)是用于训练树的数据点的数量的对数,相比于其他算法,是 一个很低的成本。
  • 能够同时处理数字和分类数据,既可以做回归又可以做分类。其他技术通常专门用于分析仅具有一种变量类 型的数据集
  • 能够处理多输出问题,即含有多个标签的问题,
  • 是一个白盒模型,结果很容易能够被解释。如果在模型中可以观察到给定的情况,则可以通过布尔逻辑轻松 解释条件。相反,在黑盒模型中(例如,在人工神经网络中),结果可能更难以解释。
  • 可以使用统计测试验证模型,这让我们可以考虑模型的可靠性。
  • 即使其假设在某种程度上违反了生成数据的真实模型,也能够表现良好

3.2 决策树的缺点

  • 决策树学习者可能创建过于复杂的树,这些树不能很好地推广数据。过度拟合。修剪,设置叶节点所 需的最小样本数或设置树的最大深度等是避免此问题所必需的,而这些参数的整合和调整对初学者来说会比较晦涩
  • 决策树可能不稳定,数据中微小的变化可能导致生成完全不同的树,这个问题需要通过集成算法来解决。
  • 决策树的学习是基于贪婪算法,它靠优化局部最优(每个节点的最优)来试图达到整体的最优,但这种做法不能保证返回全局最优决策树。此问题也可以由集成算法来解决,在随机森林中,特征和样本会在分枝过程中被随机采样。
  • 有些概念很难学习,因为决策树不容易表达它们
  • 如果标签中的某些类占主导地位,决策树学习者会创建偏向主导类的树。因此,建议在拟合决策树之前平衡数据集。