数据挖掘总结之多重共线性与过拟合

多重共线性:

一个变量可以由其他变量求出,例如,学生的总成绩可以由各科成绩求出。
① 度量多重共线性严重程度的一个重要指标是矩阵的条件数,可以由函数kappa()求出。在R中,函数kappa()计算矩阵的条件数。
注意:一般条件数K<100,则认为多重共线性的程度很小;若100<=K<=1000则认为存在中等程度或较强的多重共线性;若K>1000则认为存在严重的多重共线性。
②相关性的检验:car(DAAG)包的vif()函数,通过方差的膨胀因子检验相关性。膨胀因子大于10,存在严重的相关性。
多重共线性是使用回归算法时经常要面对的一个问题。在其他算法中,例如决策树和Naïve Bayes,前者的建模过程是逐步递进,每次拆分只有一个变量参与,这种建模机制含有抗多重共线性干扰的功能;后者干脆假定变量之间是相互独立的,因此从表面上看,也没有多重共线性的问题。但是对于回归算法,不论是一般回归,逻辑回归,或存活分析,都要同时考虑多个预测因子,因此多重共线性是不可避免的。

消除复共线性的方法有两种:一种是先对输入变量进行降维,比如用主成分分析法。也就是用主成分分析先处理输入变量,然后再做回归;另外一种方法则是加惩罚项,比如岭回归之类的。但岭回归有以下缺点:岭参数计算方法太多,差异太大;根据岭迹图进行变量筛选,随意性太大;岭回归返回的模型(如果没有经过变量筛选)包含所有的变量
由于岭回归主要靠目测选择变量,所以选择变量不太合适,争议性比较大,用的比较少。

决策树解决过度拟合

过度拟合:也就是该决策树对训练数据可以得到很低的错误率,但是运用到测试数据上却得到非常高的错误率。过渡拟合的原因有以下几点:
①噪音数据:训练数据中存在噪音数据,决策树的某些节点有噪音数据作为分割标准,导致决策树无法代表真实数据。
②缺少代表性数据:训练数据没有包含所有具有代表性的数据,导致某一类数据无法很好的匹配,这一点可以通过观察混淆矩阵(Confusion Matrix)分析得出。
③多重比较(Mulitple Comparition):举个列子,股票分析师预测股票涨或跌。假设分析师都是靠随机猜测,也就是他们正确的概率是0.5。每一个人预测10次,那么预测正确的次数在8次或8次以上的概率为 0.0547,只有5%左右,比较低。但是如果50个分析师,每个人预测10次,选择至少一个人得到8次或以上的人作为代表,那么概率为 0.9399,概率十分大,随着分析师人数的增加,概率无限接近1。但是,选出来的分析师其实是打酱油的,他对未来的预测不能做任何保证。上面这个例子就是多重比较。这一情况和决策树选取分割点类似,需要在每个变量的每一个值中选取一个作为分割的代表,所以选出一个噪音分割标准的概率是很大的。

优化方案1:修剪枝叶

决策树过渡拟合往往是因为节点过多,所以需要裁剪(Prune Tree)枝叶。裁剪枝叶的策略对决策树正确率的影响很大。主要有两种裁剪策略:
①前置裁剪:在构建决策树的过程时,提前停止。那么,会将切分节点的条件设置的很苛刻,导致决策树很短小。结果就是决策树无法达到最优。实践证明这中策略无法得到较好的结果。
②后置裁剪:决策树构建好后,然后才开始裁剪。采用两种方法:1)用单一叶节点代替整个子树,叶节点的分类采用子树中最主要的分类;2)将一个字数完全替代另外一颗子树。后置裁剪有个问题就是计算效率,有些节点计算后就被裁剪了,导致有点浪费。

优化方案2:K-Fold Cross Validation

首先计算出整体的决策树T,叶节点个数记作N,设i属于[1,N]。对每个i,使用K-Fold Validataion方法计算决策树,并裁剪到i个节点,计算错误率,最后求出平均错误率。这样可以用具有最小错误率对应的i作为最终决策树的大小,对原始决策树进行裁剪,得到最优决策树。

优化方案3:Random Forest

Random Forest是用训练数据随机的计算出许多决策树,形成了一个森林。然后用这个森林对未知数据进行预测,选取投票最多的分类。实践证明,此算法的错误率得到了进一步的降低。这种方法背后的原理可以用“三个臭皮匠定一个诸葛亮”这句谚语来概括。一颗树预测正确的概率可能不高,但是集体预测正确的概率却很高。

你可能感兴趣的:(机器学习)