分享

Spark 高级分析:第四章第8节


问题导读

1.什么是良好的决策规则?
2.基尼系数与什么有关?基尼不纯度方程是什么?
3.熵是什么?其方程是什么?





上一篇:Spark 高级分析:第四章第7节
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23827&extra=


决策树超参数

在前一章中,ALS算法暴露了几个超参数,它们的值必须通过建立具有不同值组合的模型来选择,然后使用一些度量来评估每个结果的质量。这里的过程是相同的,尽管度量现在是多类精度而不是AUC,而控制树决策的超参数是不同的:最大深度、最大容器和不纯量。

最大深度仅仅限制了决策树中级别的数量。它是分类器将用来对一个例子进行分类的链式决策的最大数量。为了避免过度拟合训练数据,限制这一点是很有用的,正如在宠物商店示例中所演示的那样。

决策树算法负责在每个层次上尝试提出可能的决策规则,比如在宠物商店示例中,重量> = 100或> = 500。决定总是相同的形式;对于数字特征,形成特征> =价值,对于分类功能,特征在(value1,value2,…)中。所以,决定规则的集合实际上是一组值来接入决策规则。这些被称为Spark MLlib实现中的“容器”。大量的容器需要更多的处理时间,但可能会导致找到更优的决策规则。

什么使决策规则变得很好?直观地说,一个好的规则可以通过目标分类值来有效地区分实例。例如,一个规则将Covtype数据集划分为只包含1 - 3类别的示例,另一种是4 - 7,因为它清楚地将某些类别与其他类别区分开来。在整个数据集中发现的所有类别的混合的规则似乎没有什么帮助;根据这样一个决定的任何一个分支都导致了可能目标值的相同分布,所以没有真正的进展到一个确信的分类。

换句话说,良好的规则将训练数据的目标值划分为相对均匀的或“纯”的子集。选择一个最好的规则意味着将两个子集的不洁最小化。有两种常用的不洁净的方法,基尼不纯度和熵。

基尼系数与上述随机猜测分类器的准确性直接相关。在一个子集内,随机抽取的例子的随机分类(根据子集中的类的分布)的概率是不正确的。如上所述,这是类的比例的乘积的和,但它们本身减1。如果一个子集有N个类,而pi是i类的例子的比例,那么它的基尼不纯度是由等式4 - 1给出的:
等式4 - 1 基尼不纯度方程


图片1.png

如果子集只包含一个类,则该值为0,因为它是完全“纯”的。当子集中有N个类时,这个值大于0,并且在类发生相同次数的时候是最大的-----最大不纯度。

熵是另一种不纯的量度,它从信息论中借用的。它的性质更难解释,但它在某种意义上捕获了子集内的目标值集合的不确定性。包含一个类的子集是完全确定的,并且有0个熵。因此低熵,像低基尼系数,是一件好事。熵的定义是在方程4 - 2中。
等式4 - 2 熵
图片2.png
有趣的是,不确定性的单位。因为对数是自然对数(以e为底),单位是nats,与更熟悉的位相对应(可以用log以2代替)。它实际上是在测量信息,所以当使用决策树使用熵时,讨论决策规则的信息增益是很常见的。

一种或另一种方法可能是在给定数据集中选择决策规则的更好的度量标准。Spark实现的默认是基尼不纯。

一些决策树实现将对候选决策规则施加最小信息增益,或减少不纯。不改进子集的规则,就会被拒绝。就像一个更低的最大深度,这可以帮助模型抵抗过度拟合,因为几乎没有帮助的决策可能实际上没有帮助划分未来的数据。然而,像最小信息增益这样的规则在Spark MLlib中还没有实现。

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条