鹏仔先生-趣站-一个有趣的网站!
鹏仔先生

鹏仔先生

当前位置:网站首页 > 游戏攻略 > 正文

属性相关分析的方法有哪些

作者:百变鹏仔日期:2023-07-31 06:30:04浏览:8分类:游戏攻略

属性相关分析的方法有哪些

在机器学习、统计学、模糊逻辑和粗糙集等领域提出了许多属性相关分析的方法。属性相关分析的基本思想就是针对给定的数据集或概念,对相应属性进行计算已获得(描述属性相关性)的若干属性相关参量。这些参量包括:信息增益、Gini值、不确定性和相关系数等。

首先,目前计算特征重要性计算方法主要有两个方面:

1.计算重要性特征方法

1.1训练过程中计算

训练过程中通过记录特征的分裂总次数、总/平均信息增益来对特征重要性进行量化。例如实际工程中我们会用特征在整个GBDT、XGBoost里面被使用的次数或者带来的总/平均信息增益来给特征重要度打分,最后进行排序。由于本身Ensemble模型在选择特征分裂时带有一定随机性,一般会跑多个模型然后把特征重要性求平均后排序。

1.2训练后使用OOB(Out of Bag)数据计算

第二种方式是训练好模型之后,用Out of Bag(或称Test)数据进行特征重要性的量化计算。具体来说,先用训练好的模型对OOB数据进行打分,计算出AUC或其他业务定义的评估指标;接着对OOB数据中的每个特征:

(1)随机shuffle当前特征的取值;

(2)重新对当前数据进行打分,计算评估指标;

(3)计算指标变化率

按照上面方式,对每个特征都会得到一个变化率,最后按照变化率排序来量化特征重要性。

延伸到 DNN 对特征重要性判定:

DNN不像Boosting这类模型那样存在所谓的分裂次数与信息增益,就需要使用第二种方式,对每个特征进行随机shuffle,观察模型指标的变化,最后按照变化率进行排序。比如AUC下滑率,下滑的越多说明当前这个指标越重要。当然,实际操作中需要结合业务经验先指定一个候选变量池,对这部分变量计算重要度,不然计算开销太大。

2. 树模型特征重要性判定

2.1 Random forest (Bagging)

[if !supportLists]l? [endif]OOB:上面已经介绍了

[if !supportLists]l? [endif]Gini:就是看每个特征在随机森林中的每颗树上做了多大的贡献,然后取个平均值,最后比一比特征之间的贡献大小。

Sklearn里面的Gini指数和信息熵,默认是Gini指数。信息熵的计算比基尼系数缓慢一些,因为基尼系数的计算不涉及对数。另外,因为信息熵对不纯度更加敏感,所以信息熵作为指标时,决策树的生长更加”精细”,因此对于高位数据或者噪音很多的数据,信息熵很容易过拟合,基尼系数在这种情况下效果比较好。

2.2 GBDT(Boosting)

[if !supportLists]l? [endif]Gini系数

在sklearn中,GBDT和RF的特征重要性计算方法是相同的,都是基于单棵树计算每个特征的重要性,探究每个特征在每棵树上做了多少的贡献,再取个平均值。

2.3 XGBoost(Boosting)

[if !supportLists]l? [endif]Weight: 就是在子树模型分裂时,用到的特征次数,这里计算的是所有的树。

在sklearn中xgb.plot_importance()函数是绘制特征重要性的方法,默认的是weight.

[if !supportLists]ؠ [endif]适用场景:weight将给予数值特征更高的值,因为它的变数越多,树分裂时可切割的空间越大。所以这个指标,会掩盖掉重要的枚举特征。

[if !supportLists]l? [endif]Gain:是信息增益的泛化概念。这里是指节点分裂时,该特征带来信息增益(目标函数)优化的平均值。

[if !supportLists]ؠ [endif]适用场景:gain用到了熵增的概念,它可以方便的找出最直接的特征。

[if !supportLists]l? [endif]Cover:树模型在分裂时,特征下的叶子节点涵盖的样本数除以特征用来分裂的次数。分裂越靠近根部,cover值越大。

[if !supportLists]ؠ [endif]适用场景:cover对于枚举特征,会更友好。

[if !supportLists]l? [endif]其他重要计算方法4 --

permutation

permutation :如果这个特征很重要,那么我们打散所有样本中的该特征,则最后的优化目标将折损。这里的折损程度,就是特征的重要程度。由于其计算依赖单一特征,所以对非线形模型更友好。同时,如果特征中存在多重共线性,共线性的特征重要性都将非常靠后。这是因为混淆单一特征,不影响另一个特征的贡献。这样的结果是,即使特征很重要,也会排的很靠后。它在scikit-learn作为 permutation_importance 方法实现。

2.4 LightGBM(Boosting)

[if !supportLists]·? [endif]split: 使用该特征的次数.

[if !supportLists]·? [endif]gain: 该特征的总增益.

3.Bagging和Boosting的区别

(1)投票方面

Bagging:所有学习器平均投票。

Boosting:对学习器进行加权投票。

(2)学习顺序

Bagging的学习是并行的,每个学习器没有依赖关系。

Boosting学习是串行,学习有先后顺序。

(3)主要作用

Bagging主要用于提高泛化性能(解决过拟合,也可以说降低方差)

Boosting主要用于提高训练精度(解决欠拟合,也可以说降低偏差)

(4)样本选择上

Bagging:训练集在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重变化。而权值是根据上一轮的分类结果进行调整。

(5)样例权重

Bagging:使用均匀取样,每个样例的权重相等。

Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

4. 随机森林和极端随机树的区别

随机森林的随机极端随机树的随机

样本随机

特征随机

参数随机

模型随机(ID3,C4.5)

特征随机

参数随机

模型随机(ID3,C4.5)

分裂随机

极端随机树是随机森林的一个变种, 原理几乎和RF一模一样,仅有区别有:

(1)对于每个决策树的训练集,RF采用的是随机采样bootstrap来选择采样集作为每个决策树的训练集,而extra trees一般不采用随机采样,即每个决策树采用原始训练集。

(2)在选定了划分特征后,RF的决策树会基于基尼系数,均方差之类的原则,选择一个最优的特征值划分点,这和传统的决策树相同。但是extra trees比较的激进,他会随机的选择一个特征值来划分决策树。

鹏仔 微信 15129739599

百科狗 baikegou.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

  • 上一篇:已经是第一篇了
  • 下一篇:已经是最后一篇了
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)