特征选择第1部分:特征加权
特征选择第1部分:特征加权
在某些用例中,您可能感兴趣的是找出哪些属性对于预测给定的标签是重要的。这个属性性能本身可以是一个结果,因为它可以告诉您是什么原因使某人或某事以这种方式表现。在本文中,我们将讨论寻找这些特征权重的常用技术。
过滤方法
发现属性重要性最常用的方法之一是使用统计度量来定义重要性。常用的衡量标准有相关性、基尼指数或信息增益。在RapidMiner中,您可以使用重量操作符。
结果对象是一个权重向量。权重向量是所有特征加权操作的中心对象。如果我们看一下,它看起来是这样的:
对于权重对象的使用,有两个重要的操作符。数据权重将此表转换为示例集。然后可以导出到Excel或数据库中。
按权重选择允许您使用此权重选择属性。例如,您可以只选择权重大于0.1的属性,或者选择k个最上面的属性。
包括非线性属性和组合
上面的Filter方法存在不包含非线性的问题。克服这个问题的一种技术是生成相同属性的非线性组合。操作员生成函数集可以用来生成pow(Age,2)或sqrt(Age)以及它们之间的组合。这个运算符通常与按结构重命名以获得可读的名称。
处理依赖关系
过滤器方法的另一个已知问题是变量之间的依赖关系。如果你的数据集包含年龄,2xAge,3xAge和4xAge,它们都可能得到一个身高特征权重。有一种技术可以克服这个问题MRMR.MRMR包括在内RapidMiner的特征选择扩展.
基于模型的特征权重
另一种获取特征权重的方法是使用模型。一些模型能够自己提供一个权重向量。这些值告诉你一个属性对学习者本身有多重要。对于不同的学习者,具体的计算方案是不同的。权重向量由以下操作符提供:
- 线性回归
- 广义线性模型
- 梯度增强树
- 支持向量机(仅含线性核)
- 逻辑回归
- 逻辑回归
在取权重之前,通常建议调整这些操作符的参数(和选择)以获得最大的预测精度。
一个特殊的情况是随机森林操作符。随机森林模型可以被输入到按树木重要性排序的重量算子来获取特征权重。
特征选择方法
除了特征加权,你还可以使用特征选择技术。区别在于,如果权重向量在选定的属性集中,则只有1,如果不在则为0。最常见的技术也是包装方法,即前向选择和后向消除。
多元分类问题与聚类
在多元分类问题中,通常用一对所有的方式来做。这回答了“是什么让A组不同于其他组”的问题?该方法的一种变体包括将其应用于集群标签以获得集群描述。
进化特征生成
另一种结合非线性和交互术语的复杂方法(例如,找到像根号(年龄-重量)这样的依赖关系)是使用进化特征生成方法。RapidMiner中的操作符为Yagga和Yagga2。请查看运营商信息了解更多细节。
规范的分析
除了生成一般的特征权重,你还可以为单个示例找到单独的依赖项。在这种情况下,您可以改变示例中的变量,并检查模型预测的影响。一个常见的用例是通过检查客户的个人评分结果来检查是否值得给客户打电话。
乐鱼体育安装
德国多特蒙德
评论
伟大的文章@mschmitz!在我的培训课程中出现过多次的一个问题是,是否有任何算子为多元评分模型提供属性重要性。正如你上面提到的,一些建模算法直接输出权重,但许多流行的算法并不这样做(例如决策树、神经网络、朴素贝叶斯)。在这种情况下,我通常会告诉学生,他们可以采用本文中讨论的其他方法之一(例如第一节中讨论的“权重by”操作符,它谈论的是独立的权重,但不涉及特定模型上下文中的权重)。
从理论上讲,另一种方法是获取所有模型属性的列表,并从最终模型中逐个删除它们,以查看由此导致的模型性能恶化情况,并相应地对它们进行排序(导致性能下降最大的属性具有最高的权重,所有其他属性的权重都按比例缩放)。这当然可以手动完成(甚至可以通过循环来减少重复操作),但是如果RapidMiner添加一个操作符来为任何模型自动完成此操作,并将结果表作为一组权重输出,那就更好了。只是一个未来产品改进的想法!
Lindon合资企业
乐鱼平台进入数据科学咨询由认证的RapidMiner专家
谢谢@Telcontar120,
我同意,随着时间的推移,本文中还会加入更多的方法。你的建议完全没问题。我通常称之为n-1模型。整个行为与逆向消元非常相似。
作为另一点,Breiman等人建议不删除它们,而只是在测试过程中通过洗牌“噪声”一个属性。我认为这种技术比删除属性有一些很好的优点(例如,更好地处理共线性)。我找到了一个方法…需要搜索
~马丁
德国多特蒙德
谢谢@mschmitz,当然,我意识到真的没有一个简单的、单一的方法来回答这个问题“我的模型中的变量重要性是什么?”所以可以用多种方式回答这个问题。然而,在我的经验中,这是一个非常常见的问题,所以如果RapidMiner有一个方便且易于解释的方法来提供给用户就好了。正如你所说的,“n-1”方法与向后消除非常相似,事实上,如果现有向后消除操作符的中间输出可以提供,那么这可能是RapidMiner创建一个操作符的一种非常简单的方法,它将为该问题提供一个视角。当然,如果你找到一个相关的过程并张贴在这里,我将非常感激:-)
欢呼,
布莱恩
Lindon合资企业
乐鱼平台进入数据科学咨询由认证的RapidMiner专家
嗨,马丁,
关于这一部分:
“运算符Generate Function Set可以用来生成pow(Age,2)或sqrt(Age)以及它们之间的组合。”
如果我们需要使用这种方法克服非线性,我们还应该在转换后丢弃原始属性(取消选中“保留所有”),我是否理解正确?也许你有整个过程的例子?
谢谢!
弗拉基米尔•
http://whatthefraud.wtf
嗨
请帮帮我
莫里茨
我想知道这些方法是否以并行方式实现执行。
特别是因为其中一些方法不能随着数据量的增加而很好地扩展。