第六章习题

1.如果训练集有100万个实例,训练决策树(无约束)大致的深度 是多少?

一个包含m个叶节点的均衡二叉树的深度等于log2(m)(注: log2是基2对数,log2(m)=log(m)/log(2)。),取整。通常来 说,二元决策树(只做二元决策的树,就像Scikit-Learn中的所有树一 样)训练到最后大体都是平衡的,如果不加以限制,最后平均每个叶节 点一个实例。因此,如果训练集包含100万个实例,那么决策树的深度 为log2(106)≈20层(实际上会更多一些,因为决策树通常不可能完 美平衡)。

2.通常来说,子节点的基尼不纯度是高于还是低于其父节点?是 通常更高/更低?还是永远更高/更低?

一个节点的基尼不纯度通常比其父节点低。这是由于CART训练算 法的成本函数。该算法分裂每个节点的方法,就是使其子节点的基尼不 纯度的加权之和最小。但是,如果一个子节点的不纯度远小于另一个, 那么也有可能使子节点的基尼不纯度比其父节点高,只要那个不纯度更 低的子节点能够抵偿这个增加即可。

3.如果决策树过拟合训练集,减少max_depth是否为一个好主意?

如果决策树过拟合训练集,降低max_depth可能是一个好主意, 因为这会限制模型,使其正则化。

4.如果决策树对训练集欠拟合,尝试缩放输入特征是否为一个好 主意?

决策树的优点之一就是它们不关心训练数据是缩放还是集中,所 以如果决策树不适合训练集,缩放输入特征不过是浪费时间罢了。

5.如果在包含100万个实例的训练集上训练决策树需要一个小时, 那么在包含1000万个实例的训练集上训练决策树,大概需要多长时 间?

决策树的训练复杂度为O(n×mlog(m))。所以,如果将训练 集大小乘以10,训练时间将乘以K=(n×10m×log(10m))/ (n×m×log(m))=10×log(10m)/log(m)。如果m=106,那么 K≈11.7,所以训练1000万个实例大约需要11.7小时。

6.如果训练集包含10万个实例,设置presort=True可以加快训练 吗?

只有当数据集小于数千个实例时,预处理训练集才可以加速训 练。如果包含100 000个实例,设置presort=True会显著减慢训练。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值