python中抽样函数 python随机抽取一个数( 二 )


小张:决策树算法,无论是哪种,其目的都是为了让模型的不确定性降低的越快越好,基于其评价指标的不同,主要是ID3算法,C4.5算法和CART算法,其中ID3算法的评价指标是信息增益,C4.5算法的评价指标是信息增益率,CART算法的评价指标是基尼系数 。
面试官:信息增益,好的,这里面有一个信息论的概念,你应该知道的吧,叙述一下
小张:香农熵,随机变量不确定性的度量 。利用ID3算法,每一次对决策树进行分叉选取属性的时候,我们会选取信息增益最高的属性来作为分裂属性 , 只有这样 , 决策树的不纯度才会降低的越快 。
面试官:OK,你也知道,在决策树无限分叉的过程中,会出现一种现象,叫过拟合,和上面说过的欠拟合是不一样的,你说一下过拟合出现的原因以及我们用什么方法来防止过拟合的产生?
小张:对训练数据预测效果很好,但是测试数据预测效果较差,则称出现了过拟合现象 。对于过拟合现象产生的原因,有以下几个方面,第一:在决策树构建的过程中 , 对决策树的生长没有进行合理的限制(剪枝);第二:在建模过程中使用了较多的输出变量,变量较多也容易产生过拟合;第三:样本中有一些噪声数据 , 噪声数据对决策树的构建的干扰很多 , 没有对噪声数据进行有效的剔除 。对于过拟合现象的预防措施,有以下一些方法,第一:选择合理的参数进行剪枝 , 可以分为预剪枝后剪枝,我们一般用后剪枝的方法来做;第二:K-folds交叉验证,将训练集分为K份 , 然后进行K次的交叉验证,每次使用K-1份作为训练样本数据集,另外的一份作为测试集合;第三:减少特征,计算每一个特征和响应变量的相关性 , 常见的为皮尔逊相关系数,将相关性较小的变量剔除,当然还有一些其他的方法来进行特征筛选 , 比如基于决策树的特征筛?。?通过正则化的方式来进行特征选取等 。
面试官:你刚刚前面有提到预剪枝和后剪枝,当然预剪枝就是在决策树生成初期就已经设置了决策树的参数 , 后剪枝是在决策树完全建立之后再返回去对决策树进行剪枝,你能否说一下剪枝过程中可以参考的某些参数?
小张:剪枝分为预剪枝和后剪枝 , 参数有很多,在R和Python中都有专门的参数来进行设置,下面我以Python中的参数来进行叙述,max_depth(树的高度),min_samples_split(叶子结点的数目),max_leaf_nodes(最大叶子节点数),min_impurity_split(限制不纯度) , 当然R语言里面的rpart包也可以很好的处理这个问题 。
面试官:对了,你刚刚还说到了用决策树来进行特征的筛?。?现在我们就以ID3算法为例 , 来说一下决策树算法对特征的筛?。?
小张:对于离散变量,计算每一个变量的信息增益,选择信息增益最大的属性来作为结点的分裂属性;对于连续变量 , 首先将变量的值进行升序排列,每对相邻值的中点作为可能的分离点,对于每一个划分,选择具有最小期望信息要求的点作为分裂点 , 来进行后续的决策数的分裂 。
面试官:你刚刚还说到了正则化,确实可以对过拟合现象来进行很好的调整,基于你自己的理解,来说一下正则化?
小张:这一块的知识掌握的不是很好 , 我简单说一下自己对这一块的了解 。以二维情况为例 , 在L1正则化中,惩罚项是绝对值之和,因此在坐标轴上会出现一个矩形,但是L2正则化的惩罚项是圆形,因此在L1正则化中增大了系数为0的机会,这样具有稀疏解的特性,在L2正则化中,由于系数为0的机率大大减小 , 因此不具有稀疏解的特性 。但是L1没有选到的特性不代表不重要,因此L1和L2正则化要结合起来使用 。

推荐阅读