本文使用一种简单的理解方式来解释分类树中的返回树,并在“一个维度返回图像”和“泰坦尼克号幸存者预测”的两个示例中说明了算法的原理。
以下是本文的大纲:
1个决策者
1.1重要参数,属性和接口标准
1.2交叉验证
2示例:一个维度回归的图像图
3示例:泰坦尼克号幸存者的预测
4决策树的优点和缺点
5附录
5.1分类列表
5.2分类树属性列表
5.3分类树连接列表
首先,让我们看一下Sklearn中这个图书馆的样子:
class sklearn.tree.decisiontreeeeegressor(criterion ='mse’,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,presort = false)
如果您阅读了有关此博客决策树的前两篇文章,您会发现
几乎所有参数,属性和接口与分类树完全相同。应该注意的是,在返回树中,标签分布是否平衡没有问题,因为
没有类似class_weight的参数。
让我们介绍重要参数,属性和接口
对分支的质量有三种类型的支持分支的质量:有三种类型的支持:
1)输入“ MSE”以使用平均正方形误差平方误差(MSE)。父节点和叶节点之间的权益误差之间的差异将用作
特征选择的标准是,该方法是通过使用叶节点的平均值来最大程度地减少L2损失。
2)输入“ Friedman_mse”以使用Ferdeman的平均正方形误差。该指标使用弗里德曼在潜在分支之后对方误差的改进。
3)输入具有绝对平均误差MAE(平均绝对误差)的“ MAE”。该指标使用叶节点的中位数来最大程度地减少L1损失损失损失损失
属性中最重要的事情仍然是功能重要性,该接口仍然是应用,fifit,预测,得分的核心。
其中,我们必须看看Mae是什么:
说明:我们将数据集分为n个部分,将其中之一作为测试机,其余的是训练集,以便每个部门都计算出精度EI,最后我们将平均值归功于最后一个。模型测量结果。
如果我们使用代码来实现此过程可能会很麻烦,但是Sklearn已经打包了我们,我们可以直接使用它。
让我们介绍如何使用Sklearn进行交叉验证:
首先,我们导入相关模块:
然后我们进行交叉验证:
说明:我们可以通过每个交叉验证获得分数。
第一个参数是实例化模型。第二个参数是完整的数据集。第三参数是完整数据集的标签。第四参数代表交叉验证的数量,通常为5。第五参数是指得分指示器交叉验证。
接下来,我们去了两个维平面,观察决策树如何与曲线结合在一起。
我们使用返回树适合正弦曲线并添加一些噪音来观察返回树的性能。
首先导入包:
然后,我们开始创建一个数据集:
这四行代码已在更详细的注释中进行。如果尚不清楚,请百多了解每个功能的作用并进行实验。
然后,我们绘制一个好数据以查看:
说明:这些噪声等同于我们通常进行实验时遇到的一些不良数据。
在这里,我们建立了两个模型,目的是查看可以通过不同的拟合效果获得哪些结果(max_depth不同)。
好吧,现在该模型已经训练有素。现在,我们必须找到一个数据来训练并查看模型的效果:
我们在图片上绘制数据图,模型1和模型2的结果:
说明:我们可以清楚地看到,当max_depth为2时,效果非常好。当max_depth为5时,该模型将更适合数据,但是结果不令人满意。图片夸大了吗?这意味着噪声受到了更大的影响。
泰坦尼克号的沉没是世界上最严重的海事事故之一。今天,我们可以预测谁可以通过今天的机密树模型成为幸存者。
该数据集带有https://www.kaggle.com/c/titanic。将数据组件提供给所有具有代码的人。您可以在下载页面上获取它。
首先,我们导入所需的库:
然后,我们导入数据集,并查看数据集的样子:
上面的功能可以将数据浓度的前N线取出以显示它,默认值5。
当然,在获取数据集后,要处理它,请以本质去除滴度!
它更“美丽”!
让我们开始建模:
完成训练和测试集后,我们的培训集和测试集的索引将变得混乱,因此我们必须对其进行纠正。
让我们制作模型:
本文首先将MAX_DEPTH作为构建学习曲线的示例。我们将MAX_DEPTH用作水平轴,而得分得分作为垂直轴图。该图包含训练集和测试集的两条曲线。
可以看出,当max_depth越来越大时,模型的过度拟合程度变得越来越严重。最好的一点是接近3。可以通过实验知道最大的分数为0.81778。这个分数仍然不是这种情况。
因此,我们必须找到最合适的修剪方案(也就是说,每个参数的最佳集合)。我们是否希望我们像max_depth这样的一个人绘制图片?那个工作负载是巨大的!
当然不是!
因为有很多参数可以在纸上切割的步骤中进行调整,所以如何找到最佳参数组合是一个问题。GridSearchCV解决了这个问题。
GridSearchCV,其存在的含义是自动调整参数。只要注入参数,就可以给出优化的结果和参数。但是,此方法适用于小型数据集。一旦数据的数据启动,就很难获得结果。
目前,您需要移动头脑。当数据量相对较大时,您可以使用快速调整方法-Coordinates降低。实际上是一种贪婪的算法:采用对模型产生最大影响的当前参数直到优化;
采取下一个影响最大参数的参数调整,直到调整所有参数为止。
这种方法的缺点是,它可以调整为本地最佳而不是全球和最好的,但是面对巨大的努力,巨大的优势,尝试一下,然后使用装袋进行优化。
本文使用此方法来处理模型,其中CV值设置为10,即10个交叉验证:
在这一点上,决策树的整个内容都完成了,然后将新算法组织起来。
本文参考教程:CAI CAI的SK-LARN课程
如果有不适当的写作或不正确的地方,我希望读者将包含更多
如果您不了解上述内容,则可以留言并与Mao Mao讨论以共同取得进展!